def test_term_frequency(self): self.__ranker.reset(21) self.__ranker.update("foo", 2, in3120.Posting(21, 4)) self.__ranker.update("bar", 1, in3120.Posting(21, 3)) self.assertEqual(self.__ranker.evaluate(), 11) self.__ranker.reset(42) self.__ranker.update("foo", 1, in3120.Posting(42, 1)) self.__ranker.update("baz", 2, in3120.Posting(42, 2)) self.assertEqual(self.__ranker.evaluate(), 5)
def test_static_quality_score(self): self.__ranker.reset(0) self.__ranker.update("foo", 1, in3120.Posting(0, 1)) score1 = self.__ranker.evaluate() self.__ranker.reset(1) self.__ranker.update("foo", 1, in3120.Posting(1, 1)) score2 = self.__ranker.evaluate() self.assertGreater(score1, 0.0) self.assertGreater(score2, 0.0) self.assertGreater(score1, score2)
def test_term_frequency(self): self.__ranker.reset(1) self.__ranker.update("foo", 1, in3120.Posting(1, 1)) score1 = self.__ranker.evaluate() self.__ranker.reset(2) self.__ranker.update("foo", 1, in3120.Posting(1, 2)) score2 = self.__ranker.evaluate() self.assertGreater(score1, 0.0) self.assertGreater(score2, 0.0) self.assertGreater(score2, score1)
def test_inverse_document_frequency(self): self.__ranker.reset(3) self.__ranker.update("the", 1, in3120.Posting(3, 1)) self.assertAlmostEqual(self.__ranker.evaluate(), 0.0, 8) self.__ranker.reset(3) self.__ranker.update("bar", 1, in3120.Posting(3, 1)) score1 = self.__ranker.evaluate() self.__ranker.reset(5) self.__ranker.update("baz", 1, in3120.Posting(5, 1)) score2 = self.__ranker.evaluate() self.assertGreater(score1, 0.0) self.assertGreater(score2, 0.0) self.assertGreater(score1, score2)
def test_order_independence(self): postings1 = [ in3120.Posting(1, 0), in3120.Posting(2, 0), in3120.Posting(3, 0) ] postings2 = [ in3120.Posting(2, 0), in3120.Posting(3, 0), in3120.Posting(6, 0) ] result12 = list( map(lambda p: p.document_id, self.__merger.intersection(iter(postings1), iter(postings2)))) result21 = list( map(lambda p: p.document_id, self.__merger.intersection(iter(postings2), iter(postings1)))) self.assertListEqual(result12, [2, 3]) self.assertListEqual(result12, result21) result12 = list( map(lambda p: p.document_id, self.__merger.union(iter(postings1), iter(postings2)))) result21 = list( map(lambda p: p.document_id, self.__merger.union(iter(postings2), iter(postings1)))) self.assertListEqual(result12, [1, 2, 3, 6]) self.assertListEqual(result12, result21)
def test_empty_lists(self): posting = in3120.Posting(123, 4) self.assertListEqual( list(self.__merger.intersection(iter([]), iter([]))), []) self.assertListEqual( list(self.__merger.intersection(iter([]), iter([posting]))), []) self.assertListEqual( list(self.__merger.intersection(iter([posting]), iter([]))), []) self.assertListEqual(list(self.__merger.union(iter([]), iter([]))), []) self.assertListEqual([ p.document_id for p in self.__merger.union(iter([]), iter([posting])) ], [posting.document_id]) self.assertListEqual([ p.document_id for p in self.__merger.union(iter([posting]), iter([])) ], [posting.document_id])
def test_uses_yield(self): import types postings1 = [ in3120.Posting(1, 0), in3120.Posting(2, 0), in3120.Posting(3, 0) ] postings2 = [ in3120.Posting(2, 0), in3120.Posting(3, 0), in3120.Posting(6, 0) ] result1 = self.__merger.intersection(iter(postings1), iter(postings2)) result2 = self.__merger.union(iter(postings1), iter(postings2)) self.assertIsInstance(result1, types.GeneratorType, "Are you using yield?") self.assertIsInstance(result2, types.GeneratorType, "Are you using yield?")