def test_injected_caching(self): class MockCaching(object): _cache = dict() _get = 0 _set = 0 def get(self, key): self._get += 1 return self._cache.get(key) def __setitem__(self, key, value): self._set += 1 self._cache[key] = value caching = MockCaching() self.searchResults(query.And(query.All(f1)), caching=caching) self.assertEqual(caching._get, 2) self.assertEqual(caching._set, 2) self.searchResults(query.And(query.All(f1)), caching=caching) self.assertEqual(caching._get, 3) self.assertEqual(caching._set, 2) self.assertEqual(sorted(caching._cache.keys()), [('all', 'catalog1', 'f1'), ('and', ('all', 'catalog1', 'f1'))]) self.assertEqual([v.keys() for v in caching._cache.values()], [[0, 1, 2, 3, 4, 5], [0, 1, 2, 3, 4, 5]])
def test_And_weighted(self): # this only executes the code path without any clue what the # impact of 'weighted' should be, if any self.assertEqual( self.displayQuery( query.And(query.All(f1), query.All(f1), weighted=True)), [1, 2, 3, 4, 5, 6])
def test_timing(self): with LogCapture() as logged: self.searchResults(query.And(query.All(f1)), timing=.00000001) records = logged.records self.assertEqual(len(records), 3) self.assertIn("('and', ('all', 'catalog1', 'f1')", records[1].msg) self.assertIn("('all', 'catalog1', 'f1')", records[2].msg)
def test_Term_dunder_ror(self): class OrDisabledAll(query.All): def __or__(self, other): return NotImplemented left = OrDisabledAll(f1) right = query.All(f1) self.assertEqual(self.displayQuery(left | right), [1, 2, 3, 4, 5, 6])
def test_Term_dunder_rand(self): class AndDisabledAll(query.All): def __and__(self, other): return NotImplemented left = AndDisabledAll(f1) right = query.All(f1) self.assertEqual(self.displayQuery(left & right), [1, 2, 3, 4, 5, 6])
def test_Difference_empty_difference(self): self.assertEqual( self.displayQuery(query.Difference(query.All(f1), query.All(f1))), [])
def test_Difference_second_empty_result(self): self.assertEqual( self.displayQuery( query.Difference(query.All(f1), query.Eq(f1, 'foo'))), [1, 2, 3, 4, 5, 6])
def test_Or_one_result(self): self.assertEqual(self.displayQuery(query.Or(query.All(f1))), [1, 2, 3, 4, 5, 6])
def test_timing_cutoff(self): with LogCapture() as logged: self.searchResults(query.And(query.All(f1)), timing=5) records = logged.records self.assertEqual(len(records), 0)
def test_setup(self): """verify test fixtures by reproducing first doctest""" self.assertEqual(self.displayQuery(query.All(f1)), [1, 2, 3, 4, 5, 6])