Author: natalia
Date: Fri Aug 10 19:49:10 2007
New Revision: 564825

URL: http://svn.apache.org/viewvc?view=rev&rev=564825
Log:
Test indexer's tests

Added:
    
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
   (with props)
    
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
   (with props)
Modified:
    
xml/xindice/trunk/java/tests/src/org/apache/xindice/util/ConfigurationTest.java

Added: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
URL: 
http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java?view=auto&rev=564825
==============================================================================
--- 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
 (added)
+++ 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
 Fri Aug 10 19:49:10 2007
@@ -0,0 +1,154 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.xindice.core.indexer;
+
+import junit.framework.TestCase;
+import org.apache.xindice.core.Database;
+import org.apache.xindice.core.Collection;
+import org.apache.xindice.core.DatabaseTest;
+import org.apache.xindice.util.Configuration;
+import org.apache.xindice.xml.dom.DOMParser;
+import org.w3c.dom.Document;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * Tests indexed queries
+ *
+ * @version $Revision$, $Date$
+ */
+public class LuceneIndexerTest extends TestCase {
+
+    private Database db;
+    private Collection collection;
+    protected String indexClass;
+
+
+    public LuceneIndexerTest(String name) {
+        super(name);
+        indexClass = "org.apache.xindice.core.indexer.LuceneIndexer";
+    }
+
+    public void setUp() throws Exception {
+        String name = getClass().getName();
+        db = new Database();
+        db.setConfig(new 
Configuration(DOMParser.toDocument(DatabaseTest.DATABASE)));
+        collection = db.createCollection(name, new Configuration(
+                DOMParser.toDocument(
+                        "<collection compressed='true' name='" + name + "' 
inline-metadata='true'>" +
+                        "<filer 
class='org.apache.xindice.core.filer.BTreeFiler'/>" +
+                        "</collection>"), false
+        ));
+
+        Document document = DOMParser.toDocument("<doc><a>test</a> 
<b>foo</b></doc>");
+        collection.insertDocument("key1", document);
+
+        document = DOMParser.toDocument("<doc><a>test</a> <b>bar</b></doc>");
+        collection.insertDocument("key2", document);
+
+        document = DOMParser.toDocument("<doc><a>test</a> <b>test</b></doc>");
+        collection.insertDocument("key3", document);
+
+        document = DOMParser.toDocument("<doc><a>text</a> <b>test</b></doc>");
+        collection.insertDocument("key4", document);
+
+        document = DOMParser.toDocument("<doc><a>foo</a> <b>test</b></doc>");
+        collection.insertDocument("key5", document);
+    }
+
+    public void tearDown() throws Exception {
+        db.dropCollection(collection);
+        db.close();
+    }
+
+    private LuceneIndexer createIndex(String name, HashMap patterns) throws 
Exception {
+        String config = "<index name='" + name + "' " +
+                        "class='" + indexClass + "' " +
+                        
"analyzer='org.apache.lucene.analysis.SimpleAnalyzer'>";
+        for (Iterator i = patterns.keySet().iterator(); i.hasNext(); ) {
+            String alias = (String) i.next();
+            config += "<pattern pattern='" + patterns.get(alias) + "' alias='" 
+ alias + "' />";
+        }
+        config += "</index>";
+
+        LuceneIndexer ind = (LuceneIndexer) collection.createIndexer(new 
Configuration(DOMParser.toDocument(config)));
+        Thread.sleep(1000);
+        return ind;
+    }
+
+    private IndexMatch[] query(Indexer idx, String query) throws Exception {
+        return idx.queryMatches(new IndexQuery(null, IndexQuery.TQ, query));
+    }
+
+    public void testSingleIndex() throws Exception {
+        HashMap patterns = new HashMap();
+        patterns.put("test", "a");
+        LuceneIndexer idx = createIndex("test", patterns);
+
+        String query = "test:test";
+        IndexMatch[] match = query(idx, query);
+
+        assertEquals(3, match.length);
+    }
+
+    public void testDuplicate() throws Exception {
+        try {
+            HashMap patterns = new HashMap();
+            patterns.put("test1", "[EMAIL PROTECTED]");
+            patterns.put("test2", "[EMAIL PROTECTED]");
+            createIndex("test1", patterns);
+            createIndex("test2", patterns);
+            assertTrue("There can be only one full text index per collection", 
false);
+        } catch (DuplicateIndexException e) {
+            // correct behavior
+        }
+    }
+
+    public void testMultipleIndexes() throws Exception {
+        HashMap patterns = new HashMap();
+        patterns.put("test1", "[EMAIL PROTECTED]");
+        patterns.put("test2", "[EMAIL PROTECTED]");
+        LuceneIndexer idx = createIndex("test", patterns);
+
+        IndexMatch[] match = query(idx, "test1:test");
+        assertEquals(3, match.length);
+
+        match = query(idx, "test2:test");
+        assertEquals(3, match.length);
+
+        match = query(idx, "test1:test AND test2:test");
+        assertEquals(1, match.length);
+
+        match = query(idx, "test1:test OR test2:test");
+        assertEquals(5, match.length);
+    }
+
+    public void testNestedContent() throws Exception {
+        HashMap patterns = new HashMap();
+        patterns.put("doc", "doc");
+        LuceneIndexer idx = createIndex("test", patterns);
+
+        String query = "doc:foo";
+        IndexMatch[] match = query(idx, query);
+
+        assertEquals(2, match.length);
+    }
+}

Propchange: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/indexer/LuceneIndexerTest.java
------------------------------------------------------------------------------
    svn:keywords = Id Revision Author Date

Added: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
URL: 
http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java?view=auto&rev=564825
==============================================================================
--- 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
 (added)
+++ 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
 Fri Aug 10 19:49:10 2007
@@ -0,0 +1,167 @@
+/*
+ * 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.
+ *
+ * $Id$
+ */
+
+package org.apache.xindice.core.query;
+
+import junit.framework.TestCase;
+import org.apache.xindice.core.Database;
+import org.apache.xindice.core.Collection;
+import org.apache.xindice.core.DatabaseTest;
+import org.apache.xindice.core.data.NodeSet;
+import org.apache.xindice.core.data.Key;
+import org.apache.xindice.core.indexer.LuceneIndexer;
+import org.apache.xindice.core.indexer.Indexer;
+import org.apache.xindice.util.Configuration;
+import org.apache.xindice.xml.dom.DOMParser;
+import org.w3c.dom.Document;
+
+import java.util.HashMap;
+import java.util.Iterator;
+
+/**
+ * Tests indexed queries
+ *
+ * @version $Revision$, $Date$
+ */
+public class TextQueryResolverTest extends TestCase {
+
+    private Database db;
+    private Collection collection;
+    private Indexer idx;
+    private String indexClass;
+
+
+    public TextQueryResolverTest(String name) {
+        super(name);
+        indexClass = "org.apache.xindice.core.indexer.LuceneIndexer";
+    }
+
+    public void setUp() throws Exception {
+        String name = getClass().getName();
+        db = new Database();
+        db.setConfig(new 
Configuration(DOMParser.toDocument(DatabaseTest.DATABASE)));
+        collection = db.createCollection(name, new Configuration(
+                DOMParser.toDocument(
+                        "<collection compressed='true' name='" + name + "' 
inline-metadata='true'>" +
+                        "<filer 
class='org.apache.xindice.core.filer.BTreeFiler'/>" +
+                        "</collection>"), false
+        ));
+
+        Document document = DOMParser.toDocument("<doc><a>test</a> 
<b>foo</b></doc>");
+        collection.insertDocument("key1", document);
+
+        document = DOMParser.toDocument("<doc><a>test</a> <b>bar</b></doc>");
+        collection.insertDocument("key2", document);
+
+        document = DOMParser.toDocument("<doc><a>test</a> <b>test</b></doc>");
+        collection.insertDocument("key3", document);
+
+        document = DOMParser.toDocument("<doc><a>text</a> <b>test</b></doc>");
+        collection.insertDocument("key4", document);
+
+        document = DOMParser.toDocument("<doc><a>foo</a> <b>test</b></doc>");
+        collection.insertDocument("key5", document);
+
+        HashMap patterns = new HashMap();
+        patterns.put("test1", "[EMAIL PROTECTED]");
+        patterns.put("test2", "[EMAIL PROTECTED]");
+        idx = createIndex("test", patterns);
+    }
+
+    public void tearDown() throws Exception {
+        db.dropCollection(collection);
+        db.close();
+    }
+
+    private LuceneIndexer createIndex(String name, HashMap patterns) throws 
Exception {
+        String config = "<index name='" + name + "' " +
+                        "class='" + indexClass + "' " +
+                        
"analyzer='org.apache.lucene.analysis.SimpleAnalyzer'>";
+        for (Iterator i = patterns.keySet().iterator(); i.hasNext(); ) {
+            String alias = (String) i.next();
+            config += "<pattern pattern='" + patterns.get(alias) + "' alias='" 
+ alias + "' />";
+        }
+        config += "</index>";
+
+        LuceneIndexer ind = (LuceneIndexer) collection.createIndexer(new 
Configuration(DOMParser.toDocument(config)));
+        Thread.sleep(2000);
+        return ind;
+    }
+
+    public void testNoTextIndexer() throws Exception {
+        try {
+            collection.dropIndexer(idx);
+
+            TextQueryResolver res = new TextQueryResolver();
+            res.query(collection, "test", null, null);
+
+            assertTrue("Text query requires LuceneIndexer", false);
+        } catch (QueryException e) {
+            // correct behavior
+        }
+    }
+
+    public void testQuery() throws Exception {
+        TextQueryResolver res = new TextQueryResolver();
+
+        NodeSet set = res.query(collection, "test1:test", null, null);
+        int count = 0;
+        while (set.hasMoreNodes()) {
+            set.getNextNode();
+            count++;
+        }
+        assertEquals("Number of elements in a result", 3, count);
+
+        collection.remove("key1");
+        set = res.query(collection, "test1:test", null, null);
+
+        count = 0;
+        while (set.hasMoreNodes()) {
+            set.getNextNode();
+            count++;
+        }
+        assertEquals("Number of elements in a result", 2, count);
+    }
+
+    public void testCompiledQuery() throws Exception {
+        TextQueryResolver res = new TextQueryResolver();
+
+        Query query = res.compileQuery(collection, "test1:test", null, null);
+        NodeSet set = query.execute();
+        int count = 0;
+        while (set.hasMoreNodes()) {
+            set.getNextNode();
+            count++;
+        }
+        assertEquals("Number of elements in a result", 3, count);
+    }
+
+    public void testQueryWithKeySet() throws Exception {
+        TextQueryResolver res = new TextQueryResolver();
+
+        Key[] keys = new Key[] {new Key("key1"), new Key("key3"), new 
Key("key4")};
+        NodeSet set = res.query(collection, "test1:test", null, keys);
+        int count = 0;
+        while (set.hasMoreNodes()) {
+            set.getNextNode();
+            count++;
+        }
+        assertEquals("Number of elements in a result", 2, count);
+    }
+}

Propchange: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/core/query/TextQueryResolverTest.java
------------------------------------------------------------------------------
    svn:keywords = Id Revision Author Date

Modified: 
xml/xindice/trunk/java/tests/src/org/apache/xindice/util/ConfigurationTest.java
URL: 
http://svn.apache.org/viewvc/xml/xindice/trunk/java/tests/src/org/apache/xindice/util/ConfigurationTest.java?view=diff&rev=564825&r1=564824&r2=564825
==============================================================================
--- 
xml/xindice/trunk/java/tests/src/org/apache/xindice/util/ConfigurationTest.java 
(original)
+++ 
xml/xindice/trunk/java/tests/src/org/apache/xindice/util/ConfigurationTest.java 
Fri Aug 10 19:49:10 2007
@@ -58,9 +58,10 @@
         assertEquals("queryengine", config.getName());
 
         Configuration[] children = config.getChildren();
-        assertEquals(2, children.length);
+        assertEquals(3, children.length);
         assertEquals("resolver", children[0].getName());
         assertEquals("resolver", children[1].getName());
+        assertEquals("resolver", children[2].getName());
     }
 
     public void testEditReadonly() throws Exception {


Reply via email to