| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.chemistry.opencmis.query.example; |
| |
| import static org.junit.Assert.*; |
| |
| import org.junit.Before; |
| import org.junit.Test; |
| |
| /** |
| * Unit test for the sample parser. Calls the main entry point and compares output |
| * against the expected result. |
| * |
| */ |
| public class ExampleQueryProcessorTest { |
| |
| private ExampleQueryProcessor queryProcessor; |
| private String queryPrefix = "SELECT cmis:name, cmis:objectId FROM cmis:document WHERE "; |
| private String expectedPrefix = "SELECT cmis:name, cmis:objectId FROM cmis:document WHERE "; |
| |
| @Before |
| public void setUp() { |
| queryProcessor = new ExampleQueryProcessor(); |
| } |
| |
| @Test |
| public void testEquals() { |
| String queryString = queryPrefix + "cmis:name = 'MyDocument'"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "(cmis:name = 'MyDocument')"; |
| assertEquals(expected, response); |
| |
| queryString = queryPrefix + "SCORE() = 100"; |
| response = queryProcessor.parseQuery(queryString); |
| expected = expectedPrefix + "(SCORE() = 100)"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testNotEquals() { |
| String queryString = queryPrefix + "cmis:name <> 'MyDocument'"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:name <> 'MyDocument'"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testLessThan() { |
| String queryString = queryPrefix + "cmis:contentStreamLength < 1048576"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:contentStreamLength < 1048576"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testGreaterThan() { |
| String queryString = queryPrefix + "cmis:contentStreamLength > 1048576"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:contentStreamLength > 1048576"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testLessOrEquals() { |
| String queryString = queryPrefix + "cmis:contentStreamLength <= 1048576"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:contentStreamLength <= 1048576"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testGreaterOrEquals() { |
| String queryString = queryPrefix + "cmis:contentStreamLength >= 1048576"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:contentStreamLength >= 1048576"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testIn() { |
| String queryString = queryPrefix + "cmis:name IN ('MyDocument', 'YourDocument')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:name IN ('MyDocument', 'YourDocument')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testNotIn() { |
| String queryString = queryPrefix + "cmis:name NOT IN ('MyDocument', 'YourDocument')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:name NOT IN ('MyDocument', 'YourDocument')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testAnyIn() { |
| String queryString = queryPrefix + "ANY cmis:secondaryObjectTypeIds IN ('MySecondaryType', 'YourSecondaryType')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "ANY cmis:secondaryObjectTypeIds IN ('MySecondaryType', 'YourSecondaryType')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testAnyNotIn() { |
| String queryString = queryPrefix + "ANY cmis:secondaryObjectTypeIds NOT IN ('MySecondaryType', 'YourSecondaryType')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "ANY cmis:secondaryObjectTypeIds NOT IN ('MySecondaryType', 'YourSecondaryType')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testEqAny() { |
| String queryString = queryPrefix + "'MySecondaryType' = ANY cmis:secondaryObjectTypeIds"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "'MySecondaryType' = ANY cmis:secondaryObjectTypeIds"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testIsNull() { |
| String queryString = queryPrefix + "cmis:description IS NULL"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:description IS NULL"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testIsNotNull() { |
| String queryString = queryPrefix + "cmis:description IS NOT NULL"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:description IS NOT NULL"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testLike() { |
| String queryString = "SELECT cmis:name AS name, cmis:objectTypeId, SCORE() FROM cmis:document WHERE cmis:name LIKE 'My%'"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = "SELECT cmis:name AS name, cmis:objectTypeId, SCORE() FROM cmis:document WHERE (cmis:name LIKE 'My%')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testNotLike() { |
| String queryString = queryPrefix + "cmis:name NOT LIKE 'My%'"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "cmis:name NOT LIKE 'My%'"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testInFolder() { |
| String queryString = queryPrefix + "IN_FOLDER('100')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "IN_FOLDER('100')"; |
| assertEquals(expected, response); |
| |
| queryString = queryPrefix + "IN_FOLDER(cmis:document, '100')"; |
| response = queryProcessor.parseQuery(queryString); |
| expected = expectedPrefix + "IN_FOLDER(cmis:document, '100')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testInTree() { |
| String queryString = queryPrefix + "IN_TREE('100')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "IN_TREE('100')"; |
| assertEquals(expected, response); |
| |
| queryString = queryPrefix + "IN_TREE(cmis:document, '100')"; |
| response = queryProcessor.parseQuery(queryString); |
| expected = expectedPrefix + "IN_TREE(cmis:document, '100')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testAnd() { |
| String queryString = queryPrefix + "cmis:name NOT LIKE 'My*' AND cmis:description IS NULL"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "(cmis:name NOT LIKE 'My*' AND cmis:description IS NULL)"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testOr() { |
| String queryString = queryPrefix + "cmis:name NOT LIKE 'My*' OR cmis:description IS NULL"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "(cmis:name NOT LIKE 'My*' OR cmis:description IS NULL)"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testNot() { |
| String queryString = queryPrefix + "NOT IN_FOLDER('100')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "NOT (IN_FOLDER('100'))"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testContains() { |
| String queryString = queryPrefix + "CONTAINS('Foo')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('Foo')"; |
| assertEquals(expected, response); |
| |
| queryString = queryPrefix + "CONTAINS(cmis:document, 'Foo')"; |
| response = queryProcessor.parseQuery(queryString); |
| expected = expectedPrefix + "CONTAINS(cmis:document, 'Foo')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testTextAnd() { |
| String queryString = queryPrefix + "CONTAINS('abc def')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('abc def')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testTextOr() { |
| String queryString = queryPrefix + "CONTAINS('abc OR def')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('abc OR def')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testTextMinus() { |
| String queryString = queryPrefix + "CONTAINS('abc -def')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('abc -def')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testPhrase() { |
| String queryString = queryPrefix + "CONTAINS('\\'abc\\'')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('\\'abc\\'')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testWord() { |
| String queryString = queryPrefix + "CONTAINS('Foo')"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "CONTAINS('Foo')"; |
| assertEquals(expected, response); |
| } |
| |
| @Test |
| public void testOrderBy() { |
| String queryString = queryPrefix + "cmis:name = 'MyDocument' ORDER BY cmis:objectId"; |
| String response = queryProcessor.parseQuery(queryString); |
| String expected = expectedPrefix + "(cmis:name = 'MyDocument') ORDER BY cmis:objectId"; |
| assertEquals(expected, response); |
| |
| queryString = queryPrefix + "cmis:name = 'MyDocument' ORDER BY cmis:name ASC, cmis:objectId DESC"; |
| response = queryProcessor.parseQuery(queryString); |
| expected = expectedPrefix + "(cmis:name = 'MyDocument') ORDER BY cmis:name, cmis:objectId DESC"; |
| assertEquals(expected, response); |
| } |
| } |