File: testStandardStorage.py

package info (click to toggle)
zope-textindexng2 1%3A2.2.0-5
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 2,888 kB
  • ctags: 1,598
  • sloc: ansic: 6,836; python: 6,596; xml: 185; makefile: 137; sh: 41
file content (133 lines) | stat: -rw-r--r-- 5,312 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
###########################################################################
#
# TextIndexNG                The next generation TextIndex for Zope
#
# This software is governed by a license. See
# LICENSE.txt for the terms of this license.
#
###########################################################################

import sys, unittest 

from Products.TextIndexNG2.interfaces.IStorage import StorageInterface 
from Products.TextIndexNG2.storages.StandardStorage import Storage
from Products.TextIndexNG2.classVerify import verifyClass

class StorageTests(unittest.TestCase):

    def setUp(self):
        self._storage = Storage()

    def testInterface(self):
        verifyClass(StorageInterface, self._storage.__class__)

    def testSimple(self):
        self.assertEqual(len(self._storage), 0)
        self._storage.insert( (1,2,3,4,5), 1)
        self._storage.insert( (3,4,5,6,7), 2)
        self.assertEqual(len(self._storage), 2)
        self.assertEqual(list(self._storage.getDocIds()), list((1,2)))
        self._storage.removeDocument(9999)
        self._storage.removeDocument(2)
        self._storage.removeDocument(1)
        self.assertEqual(len(self._storage), 0)

    def testReindex(self):
        self.assertEqual(len(self._storage), 0)
        self._storage.insert( (1,2,3,4,5), 1)
        self._storage.insert( (3,4,5,6,7), 2)
        self._storage.insert( (3,4,22,32), 3)
        self.assertEqual(len(self._storage), 3)
        self.assertEqual(self._storage.getNumDocuments(), 3)
        self.assertEqual(list(self._storage.getDocIds()), list((1,2,3)))

        self._storage.insert( (20,21,23), 3)
        self.assertEqual(self._storage.getNumDocuments(), 3)
        self.assertEqual(list(self._storage.getDocIds()), list((1,2,3)))

        self.assertEqual(list(self._storage.getWordIdsForDocId(1)),
                         list( (1,2,3,4,5)))        
        self.assertEqual(list(self._storage.getWordIdsForDocId(2)),
                         list( (3,4,5,6,7)))        
        self.assertEqual(list(self._storage.getWordIdsForDocId(3)),
                         list( (20,21,23)))        

    def testReindexRemoving(self):
        self.assertEqual(len(self._storage), 0)
        self._storage.insert( (1,2,3,4,5), 1)
        self._storage.insert( (3,4,5,6,7), 2)
        self._storage.insert( (3,4,22,32), 3)

        self._storage.removeWordIdsForDocId(3, [22,32,100])
        self.assertEqual(list(self._storage.getWordIdsForDocId(3)),
                         list( (3,4)))        

    def testMultipleWids(self):
        self._storage.insert( (1,2,2,3,3,5), 1)
        self._storage.insert( (5,5,2,2,1), 2)

        self.assertEqual(list(self._storage.getWordIdsForDocId(1)),
                         list( (1,2,2,3,3,5)))        
        self.assertEqual(list(self._storage.getWordIdsForDocId(2)),
                         list( (5,5,2,2,1)))        
        self._storage.removeWordIdsForDocId(2, [5])
        self.assertEqual(list(self._storage.getWordIdsForDocId(2)),
                         list( (2,2,1)))        

    def testDocids(self):
        self._storage.insert( (1,2,3,4,5), 1)
        self._storage.insert( (3,4,5,6,7), 2)
        self._storage.insert( (3,4,22,32), 3)
        self.assertEqual( list(self._storage.getDocumentIdsForWordId(5)),
                          list( (1,2)))
        self.assertEqual( list(self._storage.getDocumentIdsForWordId(3)),
                          list( (1,2,3)))
        self.assertEqual( list(self._storage.getDocumentIdsForWordId(32)),
                          list( (3,)))
        self.assertEqual( list(self._storage.getDocumentIdsForWordId(987)),
                          [])

    def testWordFrequency1(self):
        self._storage.insert( (1,2,3,4,5,5,4,2,1,22), 1)
        self.assertEqual( (self._storage.getWordFrequency(1,1)), 2)
        self.assertEqual( (self._storage.getWordFrequency(1,2)), 2)
        self.assertEqual( (self._storage.getWordFrequency(1,3)), 1)
        self.assertEqual( (self._storage.getWordFrequency(1,4)), 2)
        self.assertEqual( (self._storage.getWordFrequency(1,5)), 2)
        self.assertEqual( (self._storage.getWordFrequency(1,22)), 1)

    def testWordFrequency2(self):
        self._storage.insert( (1,2,3,4,5,5,4,2,1,22), 1)
        self._storage.insert( (1,2,4,99,99), 2)
        self.assertEqual( (self._storage.getWordFrequency(2,1)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,2)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,4)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,99)), 2)
        self._storage.removeDocument(1)
        self._storage.removeDocument(3)
        self.assertEqual( (self._storage.getWordFrequency(2,1)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,2)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,4)), 1)
        self.assertEqual( (self._storage.getWordFrequency(2,99)), 2)

def test_suite():
    s = unittest.TestSuite()
    s.addTest(unittest.makeSuite(StorageTests))
    return s

def main():
   unittest.TextTestRunner().run(test_suite())

def debug():
   test_suite().debug()

def pdebug():
    import pdb
    pdb.run('debug()')
   
if __name__=='__main__':
   if len(sys.argv) > 1:
      globals()[sys.argv[1]]()
   else:
      main()