[Zope-Checkins] CVS: Zope/lib/python/Products/PluginIndexes/TopicIndex/test - testTopicIndex.py:1.1.2.3

Andreas Jung andreas@zope.com
Tue, 16 Oct 2001 11:32:23 -0400


Update of /cvs-repository/Zope/lib/python/Products/PluginIndexes/TopicIndex/test
In directory cvs.zope.org:/tmp/cvs-serv26631/test

Modified Files:
      Tag: ajung-topicindex
	testTopicIndex.py 
Log Message:
added tests for ZCatalog queries


=== Zope/lib/python/Products/PluginIndexes/TopicIndex/test/testTopicIndex.py 1.1.2.2 => 1.1.2.3 ===
 execfile(os.path.join(sys.path[0],'framework.py'))
 from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex
+import Zope
+from Products.ZCatalog.ZCatalog import ZCatalog
 
 
 class Obj:
     
-    def __init__(self,meta_type=''):
+    def __init__(self,id,meta_type=''):
+        self.id        = id
         self.meta_type = meta_type
+    
+    def getId(self): return self.id 
+    def getPhysicalPath(self):  return self.id
+
+
+
+class TestBase(unittest.TestCase):
+
+    def _searchAnd(self,query,expected):
+        return self._search(query,'and',expected)
+
+    def _searchOr(self,query,expected):
+        return self._search(query,'or',expected)
+
+
+    def _search(self,query,operator,expected):
+
+        res = self.TI._apply_index({'topic':{'query':query,'operator':operator}})
+        rows = list(res[0])
+        rows.sort()
+        expected.sort()
+
+        if rows != expected:
+            print "query:i     ", query
+            print "index means:",rows
+            print "expected:   ",expected
+            raise AssertionError
+
+        return rows
         
 
-class TestTopicIndex(unittest.TestCase):
+class TestTopicIndex(TestBase):
 
     def setUp(self):
-        self.TI = TopicIndex("topicIndex")
+        self.TI = TopicIndex("topic")
         self.TI.addFilteredSet("doc1","PythonFilteredSet","o.meta_type=='doc1'")
         self.TI.addFilteredSet("doc2","PythonFilteredSet","o.meta_type=='doc2'")
         
-        self.TI.index_object(0 , Obj())
-        self.TI.index_object(1 , Obj('doc1'))
-        self.TI.index_object(2 , Obj('doc1'))
-        self.TI.index_object(3 , Obj('doc2'))
-        self.TI.index_object(4 , Obj('doc2'))
-        self.TI.index_object(5 , Obj('doc3'))
-        self.TI.index_object(6 , Obj('doc3'))
+        self.TI.index_object(0 , Obj('0',))
+        self.TI.index_object(1 , Obj('1','doc1'))
+        self.TI.index_object(2 , Obj('2','doc1'))
+        self.TI.index_object(3 , Obj('3','doc2'))
+        self.TI.index_object(4 , Obj('4','doc2'))
+        self.TI.index_object(5 , Obj('5','doc3'))
+        self.TI.index_object(6 , Obj('6','doc3'))
 
 
     def testOr(self):
@@ -45,25 +77,64 @@
         self._searchAnd(['doc1','doc2'],[])
 
 
-    def _searchAnd(self,query,expected):
-        return self._search(query,'and',expected)
+class ZCatalogTopicTests(TestBase):
 
-    def _searchOr(self,query,expected):
-        return self._search(query,'or',expected)
+
+    def setUp(self):
+        
+        self.cat = ZCatalog('catalog')
+        self.cat.addIndex('topic','TopicIndex')
+        self.TI = self.cat._catalog.indexes['topic']
+
+        self.TI.addFilteredSet("doc1","PythonFilteredSet","o.meta_type=='doc1'")
+        self.TI.addFilteredSet("doc2","PythonFilteredSet","o.meta_type=='doc2'")
+        
+        self.cat.catalog_object(Obj('0'))
+        self.cat.catalog_object(Obj('1','doc1'))
+        self.cat.catalog_object(Obj('2','doc1'))
+        self.cat.catalog_object(Obj('3','doc2'))
+        self.cat.catalog_object(Obj('4','doc2'))
+        self.cat.catalog_object(Obj('5','doc3'))
+        self.cat.catalog_object(Obj('6','doc3'))
+
+
+    def testOr(self):
+        """ testing or """
+        self._searchOr('doc1',[1,2])
+        self._searchOr('doc2',[3,4])
+        self._searchOr(['doc1','doc2'],[1,2,3,4])
+
+
+    def testAnd(self):
+        """ testing And """
+        self._searchAnd('doc1',[1,2])
+        self._searchAnd('doc2',[3,4])
+        self._searchAnd(['doc1','doc2'],[])
 
 
     def _search(self,query,operator,expected):
 
-        res = self.TI._apply_index({'topicIndex':{'query':query,'operator':operator}})
+        res = self.TI._apply_index({'topic':{'query':query,'operator':operator}})
         rows = list(res[0])
         rows.sort()
+        rows = [int(self.cat._catalog.paths[x]) for x in rows]
         expected.sort()
-        assert rows==expected
+
+        if rows != expected:
+            print "query:      ", query
+            print "result:     ",rows
+            print "expected:   ",expected
+            raise AssertionError
+
+        return rows
 
 
 def test_suite():
 
-    return unittest.makeSuite(TestTopicIndex)
+    return unittest.TestSuite( (
+        unittest.makeSuite(TestTopicIndex),
+        unittest.makeSuite(ZCatalogTopicTests),
+        ))
 
 
 framework()