From f371ff461ec09b644226869ebe4899c9c986f199 Mon Sep 17 00:00:00 2001 From: Joel Date: Mon, 20 Jun 2016 23:09:49 -0400 Subject: [PATCH] Added another large block of CMIS assertions --- .../alfresco/solr/AlfrescoSolrTestCaseJ4.java | 227 ++++++- .../query/AlfrescoCMISQParserPluginTest.java | 587 +++++++++++++++--- 2 files changed, 730 insertions(+), 84 deletions(-) diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java index 83343cbb5..4748c4001 100644 --- a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/AlfrescoSolrTestCaseJ4.java @@ -88,9 +88,21 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi { private static long id = 0; private static int orderTextCount = 0; - protected static String testNodeRef; - protected static String testBaseFolderNodeRef; - protected static String testfolder00NodeRef; + + + protected static NodeRef testRootNodeRef; + protected static NodeRef testNodeRef; + protected static NodeRef testBaseFolderNodeRef; + protected static NodeRef testFolder00NodeRef; + + + protected static NodeRef testCMISContent00NodeRef; + protected static NodeRef testCMISRootNodeRef; + protected static NodeRef testCMISBaseFolderNodeRef; + protected static NodeRef testCMISFolder00NodeRef; + protected static QName testCMISBaseFolderQName; + protected static QName testCMISFolder00QName; + protected static Date testCMISDate00; private static Date orderDate = new Date(); protected static final String TEST_NAMESPACE = "http://www.alfresco.org/test/solrtest"; @@ -120,6 +132,62 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi protected static QName testAspect = QName.createQName(TEST_NAMESPACE, "testAspect"); + private static final String CMIS_TEST_NAMESPACE = "http://www.alfresco.org/test/cmis-query-test"; + + protected static QName extendedContent = QName.createQName(CMIS_TEST_NAMESPACE, "extendedContent"); + + protected static QName singleTextBoth = QName.createQName(CMIS_TEST_NAMESPACE, "singleTextBoth"); + + protected static QName singleTextUntokenised = QName.createQName(CMIS_TEST_NAMESPACE, "singleTextUntokenised"); + + protected static QName singleTextTokenised = QName.createQName(CMIS_TEST_NAMESPACE, "singleTextTokenised"); + + protected static QName multipleTextBoth = QName.createQName(CMIS_TEST_NAMESPACE, "multipleTextBoth"); + + protected static QName multipleTextUntokenised = QName.createQName(CMIS_TEST_NAMESPACE, "multipleTextUntokenised"); + + protected static QName multipleTextTokenised = QName.createQName(CMIS_TEST_NAMESPACE, "multipleTextTokenised"); + + protected static QName singleMLTextBoth = QName.createQName(CMIS_TEST_NAMESPACE, "singleMLTextBoth"); + + protected static QName singleMLTextUntokenised = QName.createQName(CMIS_TEST_NAMESPACE, "singleMLTextUntokenised"); + + protected static QName singleMLTextTokenised = QName.createQName(CMIS_TEST_NAMESPACE, "singleMLTextTokenised"); + + protected static QName multipleMLTextBoth = QName.createQName(CMIS_TEST_NAMESPACE, "multipleMLTextBoth"); + + protected static QName multipleMLTextUntokenised = QName.createQName(CMIS_TEST_NAMESPACE, "multipleMLTextUntokenised"); + + protected static QName multipleMLTextTokenised = QName.createQName(CMIS_TEST_NAMESPACE, "multipleMLTextTokenised"); + + protected static QName singleFloat = QName.createQName(CMIS_TEST_NAMESPACE, "singleFloat"); + + protected static QName multipleFloat = QName.createQName(CMIS_TEST_NAMESPACE, "multipleFloat"); + + protected static QName singleDouble = QName.createQName(CMIS_TEST_NAMESPACE, "singleDouble"); + + protected static QName multipleDouble = QName.createQName(CMIS_TEST_NAMESPACE, "multipleDouble"); + + protected static QName singleInteger = QName.createQName(CMIS_TEST_NAMESPACE, "singleInteger"); + + protected static QName multipleInteger = QName.createQName(CMIS_TEST_NAMESPACE, "multipleInteger"); + + protected static QName singleLong = QName.createQName(CMIS_TEST_NAMESPACE, "singleLong"); + + protected static QName multipleLong = QName.createQName(CMIS_TEST_NAMESPACE, "multipleLong"); + + protected static QName singleBoolean = QName.createQName(CMIS_TEST_NAMESPACE, "singleBoolean"); + + protected static QName multipleBoolean = QName.createQName(CMIS_TEST_NAMESPACE, "multipleBoolean"); + + protected static QName singleDate = QName.createQName(CMIS_TEST_NAMESPACE, "singleDate"); + + protected static QName multipleDate = QName.createQName(CMIS_TEST_NAMESPACE, "multipleDate"); + + protected static QName singleDatetime = QName.createQName(CMIS_TEST_NAMESPACE, "singleDatetime"); + + protected static QName multipleDatetime = QName.createQName(CMIS_TEST_NAMESPACE, "multipleDatetime"); + private static String[] orderNames = new String[] { "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen" }; @@ -142,7 +210,7 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass()); - protected AlfrescoSolrDataModel dataModel = AlfrescoSolrDataModel.getInstance(); + protected static AlfrescoSolrDataModel dataModel = AlfrescoSolrDataModel.getInstance(); public static File HOME() { @@ -569,6 +637,7 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi AlfrescoSolrDataModel dataModel = AlfrescoSolrDataModel.getInstance(); dataModel.setCMDefaultUri(); NodeRef rootNodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); + testCMISRootNodeRef = rootNodeRef; addStoreRoot(core, dataModel, rootNodeRef, 1, 1, 1, 1); // Base @@ -578,8 +647,9 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi // This variable is never used. What was it meant to be used for? HashMap baseFolderContent = new HashMap(); NodeRef baseFolderNodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); - testBaseFolderNodeRef = baseFolderNodeRef.toString(); + testCMISBaseFolderNodeRef = baseFolderNodeRef; QName baseFolderQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "baseFolder"); + testCMISBaseFolderQName = baseFolderQName; ChildAssociationRef n01CAR = new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, baseFolderQName, baseFolderNodeRef, true, 0); addNode(core, dataModel, 1, 2, 1, ContentModel.TYPE_FOLDER, null, baseFolderProperties, null, "andy", @@ -592,8 +662,9 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi folder00Properties.put(ContentModel.PROP_NAME, new StringPropertyValue("Folder 0")); HashMap folder00Content = new HashMap(); NodeRef folder00NodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); - testfolder00NodeRef = folder00NodeRef.toString(); + testCMISFolder00NodeRef = folder00NodeRef; QName folder00QName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "Folder 0"); + testCMISFolder00QName = folder00QName; ChildAssociationRef folder00CAR = new ChildAssociationRef(ContentModel.ASSOC_CONTAINS, baseFolderNodeRef, folder00QName, folder00NodeRef, true, 0); addNode(core, dataModel, 1, 3, 1, ContentModel.TYPE_FOLDER, null, folder00Properties, null, "andy", @@ -766,6 +837,8 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi content00Properties.put(ContentModel.PROP_VERSION_LABEL, new StringPropertyValue("1.0")); content00Properties.put(ContentModel.PROP_OWNER, new StringPropertyValue("andy")); Date date00 = new Date(); + testCMISDate00 = date00; + content00Properties.put(ContentModel.PROP_CREATED, new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, date00))); content00Properties.put(ContentModel.PROP_MODIFIED, @@ -777,6 +850,7 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi + " as at be but by for if in into is it no not of on or such that the their then there these they this to was will with: " + " and random charcters \u00E0\u00EA\u00EE\u00F0\u00F1\u00F6\u00FB\u00FF score"); NodeRef content00NodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); + testCMISContent00NodeRef = content00NodeRef; QName content00QName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "Alfresco Tutorial"); ChildAssociationRef content00CAR = new ChildAssociationRef(ContentModel.ASSOC_CONTAINS, folder00NodeRef, content00QName, content00NodeRef, true, 0); @@ -1139,6 +1213,105 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi true); } + protected static void addTypeTestData(NodeRef folder00NodeRef, + NodeRef rootNodeRef, + NodeRef baseFolderNodeRef, + Object baseFolderQName, + Object folder00QName, + Date date1) + throws IOException + { + HashMap content00Properties = new HashMap(); + MLTextPropertyValue desc00 = new MLTextPropertyValue(); + desc00.addValue(Locale.ENGLISH, "Test One"); + desc00.addValue(Locale.US, "Test 1"); + content00Properties.put(ContentModel.PROP_DESCRIPTION, desc00); + content00Properties.put(ContentModel.PROP_TITLE, desc00); + content00Properties.put(ContentModel.PROP_NAME, new StringPropertyValue("Test One")); + content00Properties.put(ContentModel.PROP_CREATED, + new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, date1))); + + StringPropertyValue single = new StringPropertyValue("Un tokenised"); + content00Properties.put(singleTextUntokenised, single); + content00Properties.put(singleTextTokenised, single); + content00Properties.put(singleTextBoth, single); + MultiPropertyValue multi = new MultiPropertyValue(); + multi.addValue(single); + multi.addValue(new StringPropertyValue("two parts")); + content00Properties.put(multipleTextUntokenised, multi); + content00Properties.put(multipleTextTokenised, multi); + content00Properties.put(multipleTextBoth, multi); + content00Properties.put(singleMLTextUntokenised, makeMLText()); + content00Properties.put(singleMLTextTokenised, makeMLText()); + content00Properties.put(singleMLTextBoth, makeMLText()); + content00Properties.put(multipleMLTextUntokenised, makeMLTextMVP()); + content00Properties.put(multipleMLTextTokenised, makeMLTextMVP()); + content00Properties.put(multipleMLTextBoth, makeMLTextMVP()); + StringPropertyValue one = new StringPropertyValue("1"); + StringPropertyValue two = new StringPropertyValue("2"); + MultiPropertyValue multiDec = new MultiPropertyValue(); + multiDec.addValue(one); + multiDec.addValue(new StringPropertyValue("1.1")); + content00Properties.put(singleFloat, one); + content00Properties.put(multipleFloat, multiDec); + content00Properties.put(singleDouble, one); + content00Properties.put(multipleDouble, multiDec); + MultiPropertyValue multiInt = new MultiPropertyValue(); + multiInt.addValue(one); + multiInt.addValue(two); + content00Properties.put(singleInteger, one); + content00Properties.put(multipleInteger, multiInt); + content00Properties.put(singleLong, one); + content00Properties.put(multipleLong, multiInt); + + GregorianCalendar cal = new GregorianCalendar(); + cal.setTime(date1); + cal.add(Calendar.DAY_OF_MONTH, -1); + Date date0 = cal.getTime(); + cal.add(Calendar.DAY_OF_MONTH, 2); + Date date2 = cal.getTime(); + StringPropertyValue d0 = new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, date0)); + StringPropertyValue d1 = new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, date1)); + StringPropertyValue d2 = new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, date2)); + MultiPropertyValue multiDate = new MultiPropertyValue(); + multiDate.addValue(d1); + multiDate.addValue(d2); + content00Properties.put(singleDate, d1); + content00Properties.put(multipleDate, multiDate); + content00Properties.put(singleDatetime, d1); + content00Properties.put(multipleDatetime, multiDate); + + StringPropertyValue bTrue = new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, true)); + StringPropertyValue bFalse = new StringPropertyValue(DefaultTypeConverter.INSTANCE.convert(String.class, false)); + MultiPropertyValue multiBool = new MultiPropertyValue(); + multiBool.addValue(bTrue); + multiBool.addValue(bFalse); + + content00Properties.put(singleBoolean, bTrue); + content00Properties.put(multipleBoolean, multiBool); + + NodeRef content00NodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); + QName content00QName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "Test One"); + ChildAssociationRef content00CAR = new ChildAssociationRef(ContentModel.ASSOC_CONTAINS, folder00NodeRef, + content00QName, content00NodeRef, true, 0); + addNode(h.getCore(), + dataModel, + 1, + 100, + 1, + extendedContent, + new QName[] { ContentModel.ASPECT_OWNABLE, ContentModel.ASPECT_TITLED }, + content00Properties, + null, + "andy", + new ChildAssociationRef[] { content00CAR }, + new NodeRef[] { baseFolderNodeRef, rootNodeRef, folder00NodeRef }, + new String[] { "/" + baseFolderQName.toString() + "/" + folder00QName.toString() + "/" + content00QName.toString() }, + content00NodeRef, + true); + } + + public static void loadTestSet() throws IOException { // Root SolrCore core = h.getCore(); @@ -1146,13 +1319,14 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi dataModel.setCMDefaultUri(); NodeRef rootNodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); + testRootNodeRef = rootNodeRef; addStoreRoot(core, dataModel, rootNodeRef, 1, 1, 1, 1); // 1 NodeRef n01NodeRef = new NodeRef(new StoreRef("workspace", "SpacesStore"), createGUID()); - testNodeRef = n01NodeRef.toString(); + testNodeRef = n01NodeRef; QName n01QName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, "one"); ChildAssociationRef n01CAR = new ChildAssociationRef(ContentModel.ASSOC_CHILDREN, rootNodeRef, n01QName, @@ -1834,7 +2008,7 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi } Query query = dataModel.getLuceneQueryParser(searchParameters, solrQueryRequest, FTSQueryParser.RerankPhase.SINGLE_PASS).parse(queryString); - System.out.println("####### Query ######:"+query); + System.out.println("####### Query ######:" + query); TopDocs docs = solrIndexSearcher.search(query, count * 2 + 10); if (count != null) @@ -1863,4 +2037,41 @@ public class AlfrescoSolrTestCaseJ4 extends SolrTestCaseJ4 implements SolrTestFi return queryString.replace("\uFFFF", ""); } } + + protected static MLTextPropertyValue makeMLText() + { + return makeMLText(0); + } + + protected static MLTextPropertyValue makeMLText(int position) + { + MLTextPropertyValue ml = new MLTextPropertyValue(); + ml.addValue(Locale.ENGLISH, mlOrderable_en[position]); + ml.addValue(Locale.FRENCH, mlOrderable_fr[position]); + return ml; + } + + protected static MultiPropertyValue makeMLTextMVP() + { + return makeMLTextMVP(0); + } + + protected static MultiPropertyValue makeMLTextMVP(int position) + { + MLTextPropertyValue m1 = new MLTextPropertyValue(); + m1.addValue(Locale.ENGLISH, mlOrderable_en[position]); + MLTextPropertyValue m2 = new MLTextPropertyValue(); + m2.addValue(Locale.FRENCH, mlOrderable_fr[position]); + MultiPropertyValue answer = new MultiPropertyValue(); + answer.addValue(m1); + answer.addValue(m2); + return answer; + } + + private static String[] mlOrderable_en = new String[] { "AAAA BBBB", "EEEE FFFF", "II", "KK", "MM", "OO", "QQ", + "SS", "UU", "AA", "CC" }; + + private static String[] mlOrderable_fr = new String[] { "CCCC DDDD", "GGGG HHHH", "JJ", "LL", "NN", "PP", "RR", + "TT", "VV", "BB", "DD" }; + } \ No newline at end of file diff --git a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoCMISQParserPluginTest.java b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoCMISQParserPluginTest.java index e211f4292..102b97f9f 100644 --- a/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoCMISQParserPluginTest.java +++ b/search-services/alfresco-solr/src/test/java/org/alfresco/solr/query/AlfrescoCMISQParserPluginTest.java @@ -74,19 +74,19 @@ public class AlfrescoCMISQParserPluginTest extends AlfrescoSolrTestCaseJ4 implem /************** Test CMIS Parent ID ***********************/ assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId = '" - + testBaseFolderNodeRef + "'"), null), + + testCMISBaseFolderNodeRef + "'"), null), "*[count(//doc)=4]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId <> '" - + testBaseFolderNodeRef + "'"), null), + + testCMISBaseFolderNodeRef + "'"), null), "*[count(//doc)=7]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId IN ('" - + testBaseFolderNodeRef + "')"), null), + + testCMISBaseFolderNodeRef + "')"), null), "*[count(//doc)=4]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId NOT IN ('" - + testBaseFolderNodeRef + "')"), null), + + testCMISBaseFolderNodeRef + "')"), null), "*[count(//doc)=7]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT cmis:parentId FROM cmis:folder WHERE cmis:parentId IS NOT NULL"), null), @@ -491,90 +491,118 @@ public class AlfrescoCMISQParserPluginTest extends AlfrescoSolrTestCaseJ4 implem /************** checkCmisObjecId ***********************/ - /* - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" - + folderId + "'", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" - + folderId + "'", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" + + testCMISFolder00NodeRef + "'"), null), + "*[count(//doc)=1]"); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" - + folderId + "')", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN('" - + folderId + "')", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" + + testCMISFolder00NodeRef + "'"), null), + "*[count(//doc)=10]"); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('" + folderId - + "')", 2, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE IN_TREE ('" + folderId - + "')", 6, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NOT NULL", 11, null, null, null, - null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NULL", 0, null, null, null, null, - null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" + + testCMISFolder00NodeRef + "')"), null), + "*[count(//doc)=1]"); - // ignore folder versions + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN('" + + testCMISFolder00NodeRef + "')"), null), + "*[count(//doc)=10]"); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" - + folderId + ";1.0'", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" - + folderId + ";1.0'", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('" + testCMISFolder00NodeRef + "')"), null), + "*[count(//doc)=2]"); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" - + folderId + ";1.0')", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN('" - + folderId + ";1.0')", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE IN_TREE ('" + testCMISFolder00NodeRef+ "')"), null), + "*[count(//doc)=6]"); - // testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE IN_FOLDER('" + - // folderId + ";1.0')", 2, null, null, null, null, null, (String) null); - // testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:folder WHERE IN_TREE ('" + - // folderId + ";1.0')", 6, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NOT NULL"), null), + "*[count(//doc)=11]"); - // Docs + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IS NULL"), null), + "*[count(//doc)=0]"); - String id = docId; + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId = '" + + testCMISFolder00NodeRef + ";1.0'"), null), + "*[count(//doc)=1]"); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" - + id + "'", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" - + id + "'", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId <> '" + + testCMISFolder00NodeRef + ";1.0'"), null), + "*[count(//doc)=10]"); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + id + "')", 1, null, null, - null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN('" + id + "')", 10, null, - null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId IN ('" + + testCMISFolder00NodeRef + ";1.0')"), null), + "*[count(//doc)=1]"); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL", 11, null, null, null, - null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL", 0, null, null, null, - null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:folder WHERE cmis:objectId NOT IN('" + + testCMISFolder00NodeRef + ";1.0')"), null), + "*[count(//doc)=10]"); - id = docId + ";1.0"; + String id = testCMISContent00NodeRef.toString(); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" - + id + "'", 1, null, null, null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" - + id + "'", 10, null, null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + + id + "'"), null), + "*[count(//doc)=1]"); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + id + "')", 1, null, null, - null, null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN('" + id + "')", 10, null, - null, null, null, null, (String) null); + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + + id + "'"), null), + "*[count(//doc)=10]"); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL", 11, null, null, null, - null, null, (String) null); - testQueryByHandler(report, core, "/cmis", - "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL", 0, null, null, null, - null, null, (String) null); - */ + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + id + "')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN('" + id + "')"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL"), null), + "*[count(//doc)=11]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL"), null), + "*[count(//doc)=0]"); + + id = testCMISContent00NodeRef + ";1.0"; + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId = '" + + id + "'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId <> '" + + id + "'"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IN ('" + id + "')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId NOT IN('" + id + "')"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NOT NULL"), null), + "*[count(//doc)=11]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:objectId FROM cmis:document WHERE cmis:objectId IS NULL"), null), + "*[count(//doc)=0]"); /************** checkCmisTextPredicates ***********************/ @@ -719,16 +747,16 @@ public class AlfrescoCMISQParserPluginTest extends AlfrescoSolrTestCaseJ4 implem /********** checkInTree ***************************/ assertQ(areq(params("rows", "20", "qt", "/cmis", "q", - "SELECT * FROM cmis:folder WHERE IN_TREE('" + testfolder00NodeRef + "')"), null), + "SELECT * FROM cmis:folder WHERE IN_TREE('" + testCMISFolder00NodeRef + "')"), null), "*[count(//doc)=6]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", - "SELECT * FROM cmis:folder F WHERE IN_TREE(F, '" + testfolder00NodeRef + "')"), null), + "SELECT * FROM cmis:folder F WHERE IN_TREE(F, '" + testCMISFolder00NodeRef + "')"), null), "*[count(//doc)=6]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", "SELECT D.*, O.* FROM cmis:document AS D JOIN cm:ownable AS O ON D.cmis:objectId = O.cmis:objectId WHERE IN_TREE(D, '" - + testBaseFolderNodeRef + "')"), null), + + testCMISBaseFolderNodeRef + "')"), null), "*[count(//doc)=1]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", @@ -925,6 +953,40 @@ public class AlfrescoCMISQParserPluginTest extends AlfrescoSolrTestCaseJ4 implem "select o.*, t.* from ( cm:ownable o join cm:titled t on o.cmis:objectId = t.cmis:objectId JOIN cmis:document AS D ON D.cmis:objectId = o.cmis:objectId ) where o.cm:owner = 'andy' and t.cm:title = 'Alfresco tutorial' and CONTAINS(D, 'jumped') and D.cmis:contentStreamLength <> 2"), null), "*[count(//doc)=1]"); + /********* check FTS *************/ + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT SCORE()as ONE, SCORE()as TWO, D.* FROM cmis:document D WHERE CONTAINS('\\'zebra\\'')"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document WHERE CONTAINS('\\'zebra\\'')"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document WHERE CONTAINS('\\'quick\\'')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document WHERE CONTAINS('\\'quick\\'')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document D WHERE CONTAINS(D, 'cmis:name:\\'Tutorial\\'')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmis:name as BOO FROM cmis:document D WHERE CONTAINS('BOO:\\'Tutorial\\'')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document D WHERE CONTAINS('TEXT:\\'zebra\\'')"), null), + "*[count(//doc)=10]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document D WHERE CONTAINS('d:content:\\'zebra\\'')"), null), + "*[count(//doc)=10]"); + /******* checkFTSConnectives ********/ assertQ(areq(params("rows", "20", "qt", "/cmis", "q", @@ -948,10 +1010,383 @@ public class AlfrescoCMISQParserPluginTest extends AlfrescoSolrTestCaseJ4 implem "*[count(//doc)=10]"); assertQ(areq(params("rows", "20", "qt", "/cmis", "q", - "SELECT * FROM cmis:document where contains('\\'two\\' \\'zebra\\'')"), null), + "SELECT * FROM cmis:document where contains('\\'two\\' \\'zebra\\'')"), null), "*[count(//doc)=1]"); + /******** Load record ************/ + + addTypeTestData(testCMISFolder00NodeRef, + testCMISRootNodeRef, + testCMISBaseFolderNodeRef, + testCMISBaseFolderQName, + testCMISFolder00QName, + testCMISDate00); + + + /******* check_D_text *******/ + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmis:document"), null), + "*[count(//doc)=12]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth = 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth <> 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth LIKE 'U_ to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth NOT LIKE 't__eni%'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth < 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth < 'Un tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth < 'V'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth < 'U'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth <= 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth <= 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth <= 'V'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth <= 'U'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth > 'tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth > 'Un tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth > 'V'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth > 'U'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth >= 'tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth >= 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth >= 'V'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextBoth >= 'U'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised = 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised <> 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised LIKE 'U_ to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised NOT LIKE 't__eni%'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised < 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised < 'Un tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised < 'V'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised < 'U'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised <= 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised <= 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised <= 'V'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised <= 'U'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised > 'tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised > 'Un tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised > 'V'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised > 'U'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised >= 'tokenised'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised >= 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised >= 'V'"), null), + "*[count(//doc)=0]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextUntokenised >= 'U'"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised = 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised <> 'tokenized'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised LIKE 'to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised NOT LIKE 'Ut__eniz%'"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised IN ('tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE cmistest:singleTextTokenised NOT IN ('tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias = 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias <> 'tokenised'"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias LIKE 'U_ to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias NOT LIKE 't__eni%'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextBoth as alias FROM cmistest:extendedContent as T WHERE alias NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias = 'Un tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias <> 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias LIKE 'U_ to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias NOT LIKE 't__eni%'"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:singleTextUntokenised as alias FROM cmistest:extendedContent as T WHERE alias NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias = 'tokenised'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias <> 'tokenized'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias LIKE 'to%sed'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias NOT LIKE 'Ut__eniz%'"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias IN ('tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:singleTextTokenised as alias FROM cmistest:extendedContent WHERE alias NOT IN ('tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE 'Un tokenised' = ANY cmistest:multipleTextBoth "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextBoth IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextBoth NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE 'Un tokenised' = ANY cmistest:multipleTextUntokenised "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextUntokenised IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextUntokenised NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE 'tokenised' = ANY cmistest:multipleTextTokenised "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextTokenised IN ('tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT * FROM cmistest:extendedContent WHERE ANY cmistest:multipleTextTokenised NOT IN ('tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextBoth as alias FROM cmistest:extendedContent WHERE 'Un tokenised' = ANY alias "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextBoth as alias FROM cmistest:extendedContent WHERE ANY alias IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextBoth as alias FROM cmistest:extendedContent WHERE ANY alias NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextUntokenised alias FROM cmistest:extendedContent WHERE 'Un tokenised' = ANY alias "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextUntokenised alias FROM cmistest:extendedContent WHERE ANY alias IN ('Un tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT cmistest:multipleTextUntokenised alias FROM cmistest:extendedContent WHERE ANY alias NOT IN ('Un tokenized')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:multipleTextTokenised alias FROM cmistest:extendedContent T WHERE 'tokenised' = ANY alias "), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:multipleTextTokenised alias FROM cmistest:extendedContent T WHERE ANY alias IN ('tokenised', 'Monkey')"), null), + "*[count(//doc)=1]"); + + assertQ(areq(params("rows", "20", "qt", "/cmis", "q", + "SELECT T.cmistest:multipleTextTokenised alias FROM cmistest:extendedContent T WHERE ANY alias NOT IN ('tokenized')"), null), + "*[count(//doc)=1]"); + }