class TestTopicIndex(TestBase): def setUp(self): 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('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): self._searchOr('doc1',[1,2]) self._searchOr(['doc1'],[1,2]) self._searchOr('doc2',[3,4]), self._searchOr(['doc2'],[3,4]) self._searchOr(['doc1','doc2'], [1,2,3,4]) def testAnd(self): self._searchAnd('doc1',[1,2]) self._searchAnd(['doc1'],[1,2]) self._searchAnd('doc2',[3,4]) self._searchAnd(['doc2'],[3,4]) self._searchAnd(['doc1','doc2'],[])
def test_TopicIndex(self): from xml.dom.minidom import parseString from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex from Products.GenericSetup.testing import DummySetupEnviron from Products.GenericSetup.PluginIndexes.exportimport \ import TopicIndexNodeAdapter environ = DummySetupEnviron() def _no_clear(*a): raise AssertionError("Don't clear me!") index = TopicIndex('topics') index.addFilteredSet('bar', 'PythonFilteredSet', 'True') index.addFilteredSet('baz', 'PythonFilteredSet', 'False') bar = index.filteredSets['bar'] baz = index.filteredSets['baz'] bar.clear = baz.clear = _no_clear adapted = TopicIndexNodeAdapter(index, environ) adapted.node = parseString(_SET_XML).documentElement # no raise
class TestTopicIndex(TestBase): def setUp(self): 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('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 test_interfaces(self): from Products.PluginIndexes.interfaces import ITopicIndex from Products.PluginIndexes.interfaces import IPluggableIndex from zope.interface.verify import verifyClass verifyClass(ITopicIndex, TopicIndex) verifyClass(IPluggableIndex, TopicIndex) def testOr(self): self._searchOr('doc1', [1, 2]) self._searchOr(['doc1'], [1, 2]) self._searchOr('doc2', [3, 4]), self._searchOr(['doc2'], [3, 4]) self._searchOr(['doc1', 'doc2'], [1, 2, 3, 4]) def testAnd(self): self._searchAnd('doc1', [1, 2]) self._searchAnd(['doc1'], [1, 2]) self._searchAnd('doc2', [3, 4]) self._searchAnd(['doc2'], [3, 4]) self._searchAnd(['doc1', 'doc2'], []) def testRemoval(self): self.TI.index_object(1, Obj('1', 'doc2')) self._searchOr('doc1', [2]) self._searchOr('doc2', [1, 3, 4])
def test_TopicIndex(self): from xml.dom.minidom import parseString from Products.PluginIndexes.TopicIndex.TopicIndex import TopicIndex from Products.GenericSetup.testing import DummySetupEnviron from Products.GenericSetup.PluginIndexes.exportimport \ import TopicIndexNodeAdapter environ = DummySetupEnviron() def _no_clear(*a): raise AssertionError("Don't clear me!") index = TopicIndex('topics') index.addFilteredSet('bar', 'PythonFilteredSet', 'True') index.addFilteredSet('baz', 'PythonFilteredSet', 'False') bar = index.filteredSets['bar'] baz = index.filteredSets['baz'] bar.clear = baz.clear = _no_clear adapted = TopicIndexNodeAdapter(index, environ) adapted.node = parseString(_SET_XML).documentElement # no raise
class TestTopicIndex(TestBase): def setUp(self): 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('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 test_interfaces(self): from Products.PluginIndexes.interfaces import ITopicIndex from Products.PluginIndexes.interfaces import IPluggableIndex from Products.PluginIndexes.interfaces import IUniqueValueIndex from zope.interface.verify import verifyClass verifyClass(ITopicIndex, TopicIndex) verifyClass(IPluggableIndex, TopicIndex) verifyClass(IUniqueValueIndex, TopicIndex) def testOr(self): self._searchOr('doc1', [1, 2]) self._searchOr(['doc1'], [1, 2]) self._searchOr('doc2', [3, 4]), self._searchOr(['doc2'], [3, 4]) self._searchOr(['doc1', 'doc2'], [1, 2, 3, 4]) def testAnd(self): self._searchAnd('doc1', [1, 2]) self._searchAnd(['doc1'], [1, 2]) self._searchAnd('doc2', [3, 4]) self._searchAnd(['doc2'], [3, 4]) self._searchAnd(['doc1', 'doc2'], []) def testRemoval(self): self.TI.index_object(1, Obj('1', 'doc2')) self._searchOr('doc1', [2]) self._searchOr('doc2', [1, 3, 4]) def testNumObjects(self): self.assertEqual(self.TI.numObjects(), 4) def testIndexSize(self): self.assertEqual(self.TI.indexSize(), 2) def testGetEntryForObject(self): self.assertEqual(self.TI.getEntryForObject(0), None) self.assertEqual(self.TI.getEntryForObject(0, 'foo'), 'foo') self.assertEqual(self.TI.getEntryForObject(1), ['doc1']) self.assertEqual(self.TI.getEntryForObject(3), ['doc2']) def testUniqueValues(self): self.assertEqual(list(self.TI.uniqueValues()), ['doc1', 'doc2']) self.assertEqual(list(self.TI.uniqueValues(withLength=1)), [('doc1', 2), ('doc2', 2)]) def testHasUniqueValuesFor(self): self.assertFalse(self.TI.hasUniqueValuesFor('miss')) self.assertTrue(self.TI.hasUniqueValuesFor('topic'))