[Checkins] SVN: zope.index/trunk/src/zope/index/text/ 100% coverage for zope.index.text.okapiindex module.

Tres Seaver tseaver at palladion.com
Wed Jun 10 20:14:13 EDT 2009


Log message for revision 100823:
  100% coverage for zope.index.text.okapiindex module.

Changed:
  U   zope.index/trunk/src/zope/index/text/okapiindex.py
  U   zope.index/trunk/src/zope/index/text/tests/test_okapiindex.py

-=-
Modified: zope.index/trunk/src/zope/index/text/okapiindex.py
===================================================================
--- zope.index/trunk/src/zope/index/text/okapiindex.py	2009-06-10 23:49:31 UTC (rev 100822)
+++ zope.index/trunk/src/zope/index/text/okapiindex.py	2009-06-11 00:14:13 UTC (rev 100823)
@@ -195,7 +195,7 @@
 from zope.index.text.baseindex import inverse_doc_frequency
 try:
     from zope.index.text.okascore import score
-except ImportError:
+except ImportError: #pragma NO COVERAGE
     score = None
 from BTrees.Length import Length
 
@@ -255,7 +255,7 @@
     # D to TF(D,t)*IDF(t) directly, where the product is computed as a float.
     # NOTE:  This may be overridden below, by a function that computes the
     # same thing but with the inner scoring loop in C.
-    if score is None:
+    if score is None: #pragma NO COVERAGE
         def _search_wids(self, wids):
             if not wids:
                 return []

Modified: zope.index/trunk/src/zope/index/text/tests/test_okapiindex.py
===================================================================
--- zope.index/trunk/src/zope/index/text/tests/test_okapiindex.py	2009-06-10 23:49:31 UTC (rev 100822)
+++ zope.index/trunk/src/zope/index/text/tests/test_okapiindex.py	2009-06-11 00:14:13 UTC (rev 100823)
@@ -61,6 +61,73 @@
         index = self._makeOne()
         self.assertEqual(index._totaldoclen(), 0)
 
+    def test_index_doc_updates_totaldoclen(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        index.index_doc(2, 'two three four')
+        self.assertEqual(index._totaldoclen(), 6)
+
+    def test_index_doc_existing_updates_totaldoclen(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        index.index_doc(1, 'two three four')
+        self.assertEqual(index._totaldoclen(), 3)
+
+    def test_index_doc_upgrades_totaldoclen(self):
+        index = self._makeOne()
+
+        # Simulate old instances which didn't have Length attributes
+        index._totaldoclen = 0
+
+        index.index_doc(1, 'one two three')
+
+        self.assertEqual(index._totaldoclen(), 3)
+
+    def test__search_wids_non_empty_wids(self):
+        TEXT = 'one two three'
+        index = self._makeOne()
+        index.index_doc(1, TEXT )
+        wids = [index._lexicon._wids[x] for x in TEXT.split()]
+        relevances = index._search_wids(wids)
+        self.assertEqual(len(relevances), len(wids))
+        for relevance in relevances:
+            self.failUnless(isinstance(relevance[0], index.family.IF.Bucket))
+            self.assertEqual(len(relevance[0]), 1)
+            self.failUnless(isinstance(relevance[0][1], float))
+            self.failUnless(isinstance(relevance[1], int))
+
+    def test__search_wids_old_totaldoclen_no_write_on_read(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+
+        # Simulate old instances which didn't have Length attributes
+        index._totaldoclen = 3
+
+        relevances = index._search_wids([1])
+
+        self.failUnless(isinstance(index._totaldoclen, int))
+
+    def test_query_weight_empty_wids(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.assertEqual(index.query_weight(()), 0.0)
+
+    def test_query_weight_oov_wids(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.assertEqual(index.query_weight(['nonesuch']), 0.0)
+
+    def test_query_weight_hit_single_occurence(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one two three')
+        self.failUnless(0.0 < index.query_weight(['one']))
+
+    def test_query_weight_hit_multiple_occurences(self):
+        index = self._makeOne()
+        index.index_doc(1, 'one one two three one')
+        self.failUnless(0.0 < index.query_weight(['one']))
+
+
 class OkapiIndexTest32(OkapiIndexTestBase, unittest.TestCase):
 
     def _getBTreesFamily(self):



More information about the Checkins mailing list