def test_boolean_query(self): prefix_q = cbft.PrefixQuery('someterm', boost=2) bool_q = cbft.BooleanQuery(must=prefix_q, must_not=prefix_q, should=prefix_q) exp = {'prefix': 'someterm', 'boost': 2.0} self.assertEqual({'conjuncts': [exp]}, bool_q.must.encodable) self.assertEqual({ 'min': 1, 'disjuncts': [exp] }, bool_q.should.encodable) self.assertEqual({ 'min': 1, 'disjuncts': [exp] }, bool_q.must_not.encodable) # Test multiple criteria in must and must_not pq_1 = cbft.PrefixQuery('someterm', boost=2) pq_2 = cbft.PrefixQuery('otherterm') bool_q = cbft.BooleanQuery(must=[pq_1, pq_2]) exp = { 'conjuncts': [{ 'prefix': 'someterm', 'boost': 2.0 }, { 'prefix': 'otherterm' }] } self.assertEqual({'must': exp}, bool_q.encodable)
def test_conjunction_query(self): cq = cbft.ConjunctionQuery() self.assertRaises(cbft.NoChildrenError, getattr, cq, 'encodable') cq.conjuncts.append(cbft.PrefixQuery('somePrefix')) self.assertEqual({'conjuncts': [{ 'prefix': 'somePrefix' }]}, cq.encodable)
def test_disjunction_query(self): dq = cbft.DisjunctionQuery() self.assertEqual(1, dq.min) self.assertRaises(cbft.NoChildrenError, getattr, dq, 'encodable') dq.disjuncts.append(cbft.PrefixQuery('somePrefix')) self.assertEqual({'min': 1, 'disjuncts': [{'prefix': 'somePrefix'}]}, dq.encodable) self.assertRaises(ValueError, setattr, dq, 'min', 0) dq.min = 2 self.assertRaises(cbft.NoChildrenError, getattr, dq, 'encodable')
def test_prefix_query(self): pq = cbft.PrefixQuery('someterm', boost=1.5) self.assertEqual({'prefix': 'someterm', 'boost': 1.5}, pq.encodable)