예제 #1
0
 def test_forall_negation_simple(self):
     """ Test a query that requires a wme to NOT exist """
     query = Query([WMEClause([("name", C.EQ, "bob")], negated=True)])
     self.fb.assertWME({"name": "bill"})
     response = self.fb.query(query)
     self.assertTrue(response)
     self.assertEqual(len(response._alternatives), 1)
예제 #2
0
 def test_query_wme_lacks_field_of_query(self):
     """ Test a query on a wme that lacks the appropriate field """
     query = Query([WMEClause([("a", C.EQ, 2)])])
     data = {"b": 2}
     self.fb.assertWME(data)
     response = self.fb.query(query)
     self.assertFalse(response)
예제 #3
0
 def test_query_neq(self):
     """ Test not equal alpha test """
     data = {"a": 2, "b": 3}
     self.fb.assertWME(data)
     query = Query([WMEClause([("a", C.NE, 5)])])
     response = self.fb.query(query)
     self.assertTrue(response)
예제 #4
0
 def test_forall_multi_clause_negation_fail(self):
     """ Test a multi clause negation that fails """
     query = Query([
         WMEClause([("name", C.EQ, "bob"), ("age", C.EQ, 20)], negated=True)
     ])
     self.fb.assertWME({"name": "bob", "age": 20})
     response = self.fb.query(query)
     self.assertFalse(response)
예제 #5
0
 def test_query_multi_clause_single_wme(self):
     """ Test a query of multiple clauses that must match
     on a single wme """
     query = Query([WMEClause([("a", C.EQ, 2), ("b", C.EQ, 3)])])
     data = {"a": 2, "b": 3}
     self.fb.assertWME(data)
     response = self.fb.query(query)
     self.assertTrue(response)
예제 #6
0
 def test_query_fail2(self):
     """ Ensure queries don't just look at the first field """
     data = {"a": 5, "b": 3}
     self.fb.assertWME(data)
     #Clauses are tuples
     query = Query([WMEClause([("b", C.EQ, 5)])])
     response = self.fb.query(query)
     self.assertIsInstance(response, Contexts)
     self.assertFalse(response)
예제 #7
0
 def test_query_fail(self):
     """ ensure query fails in the simplest case: no matching wme """
     data = {"a": 2, "b": 3}
     self.fb.assertWME(data)
     #Clauses are tuples
     query = Query([WMEClause([("a", C.EQ, 5)])])
     response = self.fb.query(query)
     self.assertIsInstance(response, Contexts)
     self.assertFalse(response)
예제 #8
0
 def test_query(self):
     """ initial query test, one clause, one wme """
     data = {"a": 2, "b": 3}
     self.fb.assertWME(data)
     #Clauses are tuples
     query = Query([WMEClause([("a", C.EQ, 2)])])
     response = self.fb.query(query)
     self.assertIsInstance(response, Contexts)
     self.assertTrue(response)
예제 #9
0
 def test_forall_negation_test_compound(self):
     """ Test a multi clause negation """
     query = Query([
         WMEClause([("name", C.EQ, "bob"), ("age", C.EQ, 20)], negated=True)
     ])
     self.fb.assertWME({"name": "bob", "age": 15})
     response = self.fb.query(query)
     self.assertTrue(response)
     self.assertEqual(len(response._alternatives), 1)
예제 #10
0
 def test_query_realistic(self):
     """ Test a simple query using more realistic data """
     self.fb.assertWME({"name": "bob"}, {"name": "bill"}, {"name": "jill"})
     query = Query([
         WMEClause([("name", C.EQ, "bob")]),
         WMEClause([("name", C.EQ, "bill")])
     ])
     response = self.fb.query(query)
     self.assertTrue(response)
예제 #11
0
 def test_query_bind_lacking_fail(self):
     """ Test a bind fail on a wme that lacks the field """
     query = Query([
         WMEClause([("a", Bind("x")), ("b", C.EQ, 2)]),
         WMEClause([("d", C.EQ, Bind("x"))])
     ])
     self.fb.assertWME({"a": 1, "b": 2}, {"c": 6})
     response = self.fb.query(query)
     self.assertFalse(response)
예제 #12
0
 def test_query_bind_unequal_fail(self):
     """ Test a bound test can fail """
     query = Query([
         WMEClause([("a", Bind("x")), ("b", C.EQ, 2)]),
         WMEClause([("c", C.EQ, Bind("x"))])
     ])
     self.fb.assertWME({"a": 1, "b": 2}, {"c": 6})
     response = self.fb.query(query)
     self.assertFalse(response)
예제 #13
0
 def test_query_bind(self):
     """ Test a multi clause binding query """
     query = Query([
         WMEClause([("a", Bind("x")), ("b", C.EQ, 2)]),
         WMEClause([("c", C.EQ, Bind("x"))])
     ])
     self.fb.assertWME({"a": 1, "b": 2}, {"c": 1})
     response = self.fb.query(query)
     self.assertTrue(response)
예제 #14
0
 def test_query_realistic2(self):
     """ A final psuedo-realistic data query test """
     self.fb.assertWME({"name": "bob"}, {"name": "bill"}, {"name": "jill"})
     query = Query([
         WMEClause([("name", Bind("x")), ("name", C.EQ, "bob")]),
         WMEClause([("name", Bind("y")), (Bind("y"), C.NE, Bind("x")),
                    ("name", C.NE, Bind("x")), ("name", C.NE, "bill")])
     ])
     response = self.fb.query(query)
     self.assertTrue(response)
     self.assertEqual(response._alternatives[0][0]["y"], "jill")
예제 #15
0
 def test_query_multi_clause_multi_wme(self):
     """ Test a multi clause query that must match on two different
     wmes """
     query = Query(
         [WMEClause([("a", C.EQ, 2)]),
          WMEClause([("b", C.EQ, 3)])])
     data = {"a": 2}
     data2 = {"b": 3}
     self.fb.assertWME(data, data2)
     response = self.fb.query(query)
     self.assertTrue(response)
예제 #16
0
 def test_forall_negation_fail(self):
     """ Test a negation that fails """
     query = Query([WMEClause([("name", C.EQ, "bob")], negated=True)])
     self.fb.assertWME({"name": "bob"})
     response = self.fb.query(query)
     self.assertFalse(response)