svn commit: r559274 - /xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java

[email protected]
Newsgroups gmane.text.xml.xindice.devel
Message-ID <[email protected]>
Author: natalia
Date: Tue Jul 24 18:42:23 2007
New Revision: 559274

URL: http://svn.apache.org/viewvc?view=rev&rev=559274
Log:
Tests for Name/Value indexers on empty elements. Result checking fixed.

Modified:
    xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java

Modified: xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java
URL: http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java?view=diff&rev=559274&r1=559273&r2=559274
==============================================================================
--- xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java (original)
+++ xml/xindice/trunk/java/tests/src/org/apache/xindice/integration/client/services/IndexedSearchTest.java Tue Jul 24 18:42:23 2007
@@ -74,13 +74,13 @@
 
         if (!aCollectionCreated) {
             try {
-                this.client.dropCollection(PARENT_COLLECTION_PATH, COLLECTION_NAME);
+                client.dropCollection(PARENT_COLLECTION_PATH, COLLECTION_NAME);
             } catch (Exception anException) {
                 /*
                  * ignore problems during drop collection above...
                  */
             } finally {
-                this.client.createCollection(PARENT_COLLECTION_PATH, COLLECTION_NAME);
+                client.createCollection(PARENT_COLLECTION_PATH, COLLECTION_NAME);
                 aCollectionCreated = true;
             }
         }
@@ -104,7 +104,7 @@
                     "  <last>Jones" + aNumber + "</last>" +
                     "  <phone type='home'>555-345-6789</phone>" +
                     "</person>";
-            this.client.insertDocument(COLLECTION_PATH, "doc" + String.valueOf(anIndex), aDocument);
+            client.insertDocument(COLLECTION_PATH, "doc" + String.valueOf(anIndex), aDocument);
         }
     }
 
@@ -192,10 +192,9 @@
          */
         public void runTest() throws Exception {
             try {
-                Result aResult;
                 addTestDocuments();
 
-                aResult = runNonIndexed();
+                Result aResult = runNonIndexed();
                 checkResult(aResult);
                 long aNonIndexedTime = aResult.getElapsedTime();
                 aResult = runIndexed();
@@ -270,12 +269,12 @@
             }
 
             if (itsExpectedResources != null && itsExpectedResources.length > 1) {
-                for (int anIndex = 0; anIndex < itsExpectedResources.length / 2; anIndex += 2) {
+                for (int anIndex = 0; anIndex < itsExpectedResources.length / 2; anIndex++) {
                     XMLResource aResource = (XMLResource) aResourceSet.getResource(anIndex);
                     Node aNode = aResource.getContentAsDOM();
-                    int anExpectedSourceDocumentIndex = ((Integer) itsExpectedResources[anIndex]).intValue();
-                    String anExpected = "<?xml version=\"1.0\"?>\n" + addSource((String) itsExpectedResources[anIndex + 1],
-                                                                                TEST_DOCUMENT_PREFIX + anIndex,
+                    int anExpectedSourceDocumentIndex = ((Integer) itsExpectedResources[anIndex * 2]).intValue();
+                    String anExpected = "<?xml version=\"1.0\"?>\n" + addSource((String) itsExpectedResources[anIndex * 2 + 1],
+                                                                                TEST_DOCUMENT_PREFIX + anExpectedSourceDocumentIndex,
                                                                                 IndexedSearchTest.COLLECTION_PATH);
                     String anActual = TextWriter.toString(aNode);
                     //itsLog.info(itsDescription);
@@ -284,7 +283,7 @@
                     //itsLog.info(anExpected);
                     //itsLog.info("Actual:");
                     //itsLog.info(anActual);
-                    XMLAssert.assertXMLEqual("While checking target Resource " + anIndex / 2,
+                    XMLAssert.assertXMLEqual("While checking target Resource " + anIndex,
                                              anExpected, anActual);
                 }
             }
@@ -317,10 +316,10 @@
          */
         public void createIndex() throws Exception {
             if (!itsIndexCreated) {
-                IndexedSearchTest.this.client.createIndexer(COLLECTION_PATH,
-                                                            "<?xml version='1.0'?><index name='" + itsTestIndexName + "' " +
-                                                            "class='org.apache.xindice.core.indexer." + itsTestIndexType + "Indexer' " +
-                                                            "pattern='" + itsTestIndexPattern + "' />");
+                client.createIndexer(COLLECTION_PATH,
+                                     "<?xml version='1.0'?><index name='" + itsTestIndexName + "' " +
+                                     "class='org.apache.xindice.core.indexer." + itsTestIndexType + "Indexer' " +
+                                     "pattern='" + itsTestIndexPattern + "' />");
                 itsIndexCreated = true;
 
                 // Wait for the indexer to do the background indexing
@@ -333,7 +332,7 @@
          */
         public void dropIndex() throws Exception {
             if (itsIndexCreated) {
-                IndexedSearchTest.this.client.dropIndexer(COLLECTION_PATH, itsTestIndexName);
+                client.dropIndexer(COLLECTION_PATH, itsTestIndexName);
                 itsIndexCreated = false;
             }
         }
@@ -386,22 +385,40 @@
                     "<?xml version='1.0'?>" +
                     "<person number3='yes'>" +
                         "<first surname='no' given='yes'>Sally</first>" +
-                        "<last surname='yes'>aSm</last>" +
+                        "<last surname='yes'>Sam</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
                         "</address>" +
+                    "</person>",
+
+                    "<?xml version='1.0'?>" +
+                    "<person number3='yes'>" +
+                        "<first surname='no' given='yes'>Sally</first>" +
+                        "<last surname='yes'>Sam</last>" +
+                        "<phone call='no' type='work'>555-345-6789</phone>" +
+                        "<address>" +
+                            "<street>" +
+                                "<number given='no' />Main St" +
+                            "</street>" +
+                        "</address>" +
                     "</person>"
                 },
-                1,                        // expected result count
+                2,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1),
-                    "<address> " +
+                    new Integer(0),
+                    "<address>" +
                         "<street>" +
                             "<number given='no' />" +
                         "</street>" +
+                    "</address>",
+                    new Integer(1),
+                    "<address>" +
+                        "<street>" +
+                            "<number given='no' />Main St" +
+                        "</street>" +
                     "</address>"
                 });
 
@@ -428,7 +445,7 @@
                         "<second surname='no' given='yes'>Wally</second>" +
                         "<last surname='yes'>aSm</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
@@ -437,7 +454,7 @@
                 },
                 1,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1),
+                    new Integer(0),
                     "<second surname='no' given='yes'>Wally</second>"
                 });
 
@@ -464,7 +481,7 @@
                         "<first surname='no' given='yes'>Sally</first>" +
                         "<last surname='yes'>aSm</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
@@ -473,7 +490,7 @@
                 },
                 1,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1),
+                    new Integer(0),
                     "<phone call='no' type='work'>555-345-6789</phone>"
                 });
 
@@ -501,7 +518,7 @@
                         "<second surname='no' given='yes'>Wally</second>" +
                         "<last surname='yes'>aSm</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
@@ -510,7 +527,7 @@
                 },
                 1,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1),
+                    new Integer(0),
                     "<second surname='no' given='yes'>Wally</second>",
                 });
 
@@ -537,7 +554,7 @@
                         "<first surname='no' given='yes'>Sally</first>" +
                         "<last surname='yes'>aSm</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
@@ -546,15 +563,8 @@
                 },
                 2,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1),
-                    "<first surname='no' given='yes'>Sally</first>",
-
-                    new Integer(1),
-                    "<address> " +
-                        "<street>" +
-                            "<number given='no' />" +
-                        "</street>" +
-                    "</address>"
+                    new Integer(0), "<first surname='no' given='yes'>Sally</first>",
+                    new Integer(0), "<number given='no' />"
                 });
 
         aTest.runTest();
@@ -581,7 +591,7 @@
                         "<first surname='no' given='yes'>Sally</first>" +
                         "<last surname='yes'>aSm</last>" +
                         "<phone call='no' type='work'>555-345-6789</phone>" +
-                        "<address> " +
+                        "<address>" +
                             "<street>" +
                                 "<number given='no' />" +
                             "</street>" +
@@ -590,8 +600,8 @@
                 },
                 2,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1), "<first surname='no' given='yes'>Sally</first>",
-                    new Integer(1), "<number given='no' />"
+                    new Integer(0), "<first surname='no' given='yes'>Sally</first>",
+                    new Integer(0), "<number given='no' />"
                 });
 
         aTest.runTest();
@@ -638,7 +648,7 @@
                 },
                 2,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1), "<person number3='yes'>" +
+                    new Integer(0), "<person number3='yes'>" +
                                         "<first surname='no' given='yes'>Sally</first>" +
                                         "<last surname='yes'>Smith</last>" +
                                         "<phone call='no' type='work'>555-345-6789</phone>" +
@@ -649,7 +659,7 @@
                                         "</address>" +
                                     "</person>",
 
-                    new Integer(2), "<person number3='yes'>" +
+                    new Integer(1), "<person number3='yes'>" +
                                         "<first surname='no' given='yes'>Sally</first>" +
                                         "<last surname='yes'>Smithers</last>" +
                                         "<phone call='no' type='work'>555-345-6789</phone>" +
@@ -693,7 +703,7 @@
                 },
                 1,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1), "<phone call='no' type='work'>555-345-6789</phone>"
+                    new Integer(0), "<phone call='no' type='work'>555-345-6789</phone>"
                 });
 
         aTest.runTest();
@@ -740,8 +750,59 @@
                 },
                 2,                        // expected result count
                 new Object[] {            // expected resources to check for (can be empty or partial set)
-                    new Integer(1), "<phone call='no' type='work'>555-345-6789</phone>",
+                    new Integer(0), "<phone call='no' type='work'>555-345-6789</phone>",
                     new Integer(1), "<phone call='no' type='work'>525-345-6789</phone>"
+                });
+
+        aTest.runTest();
+    }
+
+    /**
+     * Tests an equals search query for an empty Element value that should be resolvable using
+     * indexed searching on a value index.
+     */
+    public void testSpecificElementNoAttributeValueIndexedEmptyStringSearch()
+            throws Exception {
+        // search all records whose address is empty
+        IndexerTestDefinition aTest = new IndexerTestDefinition(
+                "testSpecificElementNoAttributeValueIndexedEqualsSearch", // description
+                "//address[. = '']",      // query
+                "SENA",                   // index name
+                "Value",                  // index type
+                "address",                // index pattern
+                8,                        // indexed query speedup expected (conservative)
+                new String[] {            // test docs specifically for this test
+                    "<?xml version='1.0'?>" +
+                    "<person number3='yes'>" +
+                        "<first surname='no' given='yes'>Sally</first>" +
+                        "<last surname='yes'>Smith</last>" +
+                        "<phone call='no' type='work'>555-345-6789</phone>" +
+                        "<address>" +
+                            "<street>" +
+                                "<number given='no' />" +
+                            "</street>" +
+                        "</address>" +
+                    "</person>",
+
+                    "<?xml version='1.0'?>" +
+                    "<person number3='yes'>" +
+                        "<first surname='no' given='yes'>Sally</first>" +
+                        "<last surname='yes'>Smithers</last>" +
+                        "<phone call='no' type='work'>555-345-6789</phone>" +
+                        "<address>" +
+                            "<street>" +
+                                "<number given='no' />Main St" +
+                            "</street>" +
+                        "</address>" +
+                    "</person>"
+                },
+                1,                        // expected result count
+                new Object[] {            // expected resources to check for (can be empty or partial set)
+                    new Integer(0), "<address>" +
+                                        "<street>" +
+                                            "<number given='no' />" +
+                                        "</street>" +
+                                    "</address>"
                 });
 
         aTest.runTest();
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.