[Checkins] SVN: Products.ZCTextIndex/trunk/src/Products/ZCTextIndex/tests/testLexicon.py - some cleanup
Yvo Schubbe
y.2010 at wcm-solutions.de
Sat Aug 14 06:09:19 EDT 2010
Log message for revision 115676:
- some cleanup
Changed:
U Products.ZCTextIndex/trunk/src/Products/ZCTextIndex/tests/testLexicon.py
-=-
Modified: Products.ZCTextIndex/trunk/src/Products/ZCTextIndex/tests/testLexicon.py
===================================================================
--- Products.ZCTextIndex/trunk/src/Products/ZCTextIndex/tests/testLexicon.py 2010-08-14 09:45:51 UTC (rev 115675)
+++ Products.ZCTextIndex/trunk/src/Products/ZCTextIndex/tests/testLexicon.py 2010-08-14 10:09:18 UTC (rev 115676)
@@ -16,15 +16,15 @@
import unittest
-import os, sys
+import os
+import sys
+import transaction
import ZODB
-import transaction
-from Products.ZCTextIndex.Lexicon import Lexicon
-from Products.ZCTextIndex.Lexicon import Splitter, CaseNormalizer
class StupidPipelineElement:
+
def __init__(self, fromword, toword):
self.__fromword = fromword
self.__toword = toword
@@ -38,7 +38,9 @@
res.append(term)
return res
+
class WackyReversePipelineElement:
+
def __init__(self, revword):
self.__revword = revword
@@ -53,7 +55,9 @@
res.append(term)
return res
+
class StopWordPipelineElement:
+
def __init__(self, stopdict={}):
self.__stopdict = stopdict
@@ -67,73 +71,100 @@
return res
-class Test(unittest.TestCase):
+class LexiconTests(unittest.TestCase):
+ def _getTargetClass(self):
+ from Products.ZCTextIndex.Lexicon import Lexicon
+ return Lexicon
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
def test_interfaces(self):
from Products.ZCTextIndex.interfaces import ILexicon
from zope.interface.verify import verifyClass
- verifyClass(ILexicon, Lexicon)
+ verifyClass(ILexicon, self._getTargetClass())
def testSourceToWordIds(self):
- lexicon = Lexicon(Splitter())
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter())
wids = lexicon.sourceToWordIds('cats and dogs')
self.assertEqual(wids, [1, 2, 3])
def testTermToWordIds(self):
- lexicon = Lexicon(Splitter())
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter())
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('dogs')
self.assertEqual(wids, [3])
def testMissingTermToWordIds(self):
- lexicon = Lexicon(Splitter())
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter())
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('boxes')
self.assertEqual(wids, [0])
def testTermToWordIdsWithProcess_post_glob(self):
"""This test is for added process_post_glob"""
+ from Products.ZCTextIndex.Lexicon import Splitter
+
class AddedSplitter(Splitter):
def process_post_glob(self, lst):
assert lst == ['dogs']
return ['dogs']
- lexicon = Lexicon(AddedSplitter())
+ lexicon = self._makeOne(AddedSplitter())
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('dogs')
self.assertEqual(wids, [3])
def testMissingTermToWordIdsWithProcess_post_glob(self):
"""This test is for added process_post_glob"""
+ from Products.ZCTextIndex.Lexicon import Splitter
+
class AddedSplitter(Splitter):
def process_post_glob(self, lst):
assert lst == ['dogs']
return ['fox']
- lexicon = Lexicon(AddedSplitter())
+ lexicon = self._makeOne(AddedSplitter())
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('dogs')
self.assertEqual(wids, [0])
def testOnePipelineElement(self):
- lexicon = Lexicon(Splitter(), StupidPipelineElement('dogs', 'fish'))
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter(),
+ StupidPipelineElement('dogs', 'fish'))
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('fish')
self.assertEqual(wids, [3])
def testSplitterAdaptorFold(self):
- lexicon = Lexicon(Splitter(), CaseNormalizer())
+ from Products.ZCTextIndex.Lexicon import CaseNormalizer
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter(), CaseNormalizer())
wids = lexicon.sourceToWordIds('CATS and dogs')
wids = lexicon.termToWordIds('cats and dogs')
self.assertEqual(wids, [1, 2, 3])
def testSplitterAdaptorNofold(self):
- lexicon = Lexicon(Splitter())
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter())
wids = lexicon.sourceToWordIds('CATS and dogs')
wids = lexicon.termToWordIds('cats and dogs')
self.assertEqual(wids, [0, 2, 3])
def testTwoElementPipeline(self):
- lexicon = Lexicon(Splitter(),
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter(),
StupidPipelineElement('cats', 'fish'),
WackyReversePipelineElement('fish'))
wids = lexicon.sourceToWordIds('cats and dogs')
@@ -141,17 +172,21 @@
self.assertEqual(wids, [1])
def testThreeElementPipeline(self):
- lexicon = Lexicon(Splitter(),
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ lexicon = self._makeOne(Splitter(),
StopWordPipelineElement({'and':1}),
StupidPipelineElement('dogs', 'fish'),
WackyReversePipelineElement('fish'))
wids = lexicon.sourceToWordIds('cats and dogs')
wids = lexicon.termToWordIds('hsif')
self.assertEqual(wids, [2])
-
+
def testSplitterLocaleAwareness(self):
+ import locale
+ from Products.ZCTextIndex.Lexicon import Splitter
from Products.ZCTextIndex.HTMLSplitter import HTMLWordSplitter
- import locale
+
loc = locale.setlocale(locale.LC_ALL) # get current locale
# set German locale
try:
@@ -171,41 +206,51 @@
locale.setlocale(locale.LC_ALL, loc) # restore saved locale
-class TestLexiconConflict(unittest.TestCase):
+class LexiconConflictTests(unittest.TestCase):
db = None
+ def _getTargetClass(self):
+ from Products.ZCTextIndex.Lexicon import Lexicon
+ return Lexicon
+
+ def _makeOne(self, *args, **kw):
+ return self._getTargetClass()(*args, **kw)
+
def tearDown(self):
if self.db is not None:
self.db.close()
self.storage.cleanup()
def openDB(self):
+ from ZODB.DB import DB
from ZODB.FileStorage import FileStorage
- from ZODB.DB import DB
+
n = 'fs_tmp__%s' % os.getpid()
self.storage = FileStorage(n)
self.db = DB(self.storage)
-
+
def testAddWordConflict(self):
- self.l = Lexicon(Splitter())
+ from Products.ZCTextIndex.Lexicon import Splitter
+
+ self.l = self._makeOne(Splitter())
self.openDB()
r1 = self.db.open().root()
r1['l'] = self.l
transaction.commit()
-
+
r2 = self.db.open().root()
copy = r2['l']
# Make sure the data is loaded
list(copy._wids.items())
list(copy._words.items())
copy.length()
-
+
self.assertEqual(self.l._p_serial, copy._p_serial)
-
+
self.l.sourceToWordIds('mary had a little lamb')
transaction.commit()
-
+
copy.sourceToWordIds('whose fleece was')
copy.sourceToWordIds('white as snow')
transaction.commit()
@@ -215,6 +260,6 @@
def test_suite():
suite = unittest.TestSuite()
- suite.addTest(unittest.makeSuite(Test))
- suite.addTest(unittest.makeSuite(TestLexiconConflict))
+ suite.addTest(unittest.makeSuite(LexiconTests))
+ suite.addTest(unittest.makeSuite(LexiconConflictTests))
return suite
More information about the checkins
mailing list