Пример #1
0
 def test_group_inconsistent_with_one_statement(self):
     group = FactorGroup(
         [self.slower_specific_statement, self.farm_statement])
     register = ContextRegister()
     register.insert_pair(Entity(name="the car"), Entity(name="the pickup"))
     assert not group.consistent_with(self.faster_statement,
                                      context=register)
Пример #2
0
 def test_no_duplicate_explanations_consistent(self):
     large_payments = FactorGroup([
         Statement(
             predicate=Comparison(
                 content=
                 "the number of dollars that $payer paid to $payee was",
                 sign=">",
                 expression=10000,
             ),
             terms=[Entity(name="Alice"),
                    Entity(name="Bob")],
         ),
         Statement(
             predicate=Comparison(
                 content=
                 "the number of dollars that $payer paid to $payee was",
                 sign=">",
                 expression=1000,
             ),
             terms=[Entity(name="Dan"),
                    Entity(name="Eve")],
         ),
     ])
     small_payments = FactorGroup([
         Statement(
             predicate=Comparison(
                 content=
                 "the number of dollars that $payer paid to $payee was",
                 sign=">",
                 expression=100,
             ),
             terms={
                 "payer": Entity(name="Fred"),
                 "payee": Entity(name="Greg")
             },
         ),
         Statement(
             predicate=Comparison(
                 content=
                 "the number of dollars that $payer paid to $payee was",
                 sign=">",
                 expression=10,
             ),
             terms={
                 "payer": Entity(name="Jim"),
                 "payee": Entity(name="Kim")
             },
         ),
     ])
     assert large_payments.consistent_with(small_payments)
     all_explanations = list(
         large_payments.explanations_consistent_with(small_payments))
     assert len(all_explanations) == 24
     limited_explanations = list(
         large_payments.explanations_consistent_with(
             small_payments,
             context=([Entity(name="Alice")], [Entity(name="Jim")])))
     assert len(limited_explanations) == 6
Пример #3
0
 def test_group_inconsistent_with_single_factor(self):
     group = FactorGroup(
         [self.slower_specific_statement, self.farm_statement])
     register = ContextRegister()
     register.insert_pair(Entity(name="the car"), Entity(name="the pickup"))
     assert not group.consistent_with(self.faster_statement,
                                      context=register)
     assert not consistent_with(
         group, self.faster_statement, context=register)
     assert repr(group).startswith("FactorGroup([Statement")
     assert "30.0 mile / hour" in repr(group)
Пример #4
0
 def test_consistent_with_none(self):
     group = FactorGroup([self.slower_general_statement, self.farm_statement])
     assert group.consistent_with(None)
Пример #5
0
 def test_groups_with_one_statement_consistent(self):
     specific_group = FactorGroup([self.slower_specific_statement])
     general_group = FactorGroup([self.faster_statement])
     assert specific_group.consistent_with(general_group)
     assert consistent_with(specific_group, general_group)
     assert repr(specific_group).startswith("FactorGroup([")
Пример #6
0
 def test_two_inconsistent_groups(self):
     left = FactorGroup([self.slower_specific_statement])
     right = FactorGroup([self.faster_statement])
     context = ContextRegister()
     context.insert_pair(Entity(name="the car"), Entity(name="the pickup"))
     assert not left.consistent_with(right, context=context)