[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