def test_expression_substitute_evaluate_all_or_terms_to_false(self): e = Expression('a or b') e1 = e.substitute(lambda v: False) self.assertEqual(e1, Expression(False))
def test_expression_substitute_remove_terms_from_or(self): e = Expression('a or b') e1 = e.substitute(lambda v: {'a': False}.get(v.symbol, v)) self.assertEqual(e1, Expression(Variable('b')))
def test_expression_substitute_evaluate_all_and_terms_to_true(self): e = Expression('a and b') e1 = e.substitute(lambda v: True) self.assertEqual(e1, Expression(True))
def test_expression_substitute_with_short_circuit_and(self): e = Expression('a and (b or c) and d') e1 = e.substitute(lambda v: {'a': False}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertFalse(e1.value)
def test_expression_substitute_with_short_circuit_or(self): e = Expression('(a and b) or c or d') e1 = e.substitute(lambda v: {'c': True}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertTrue(e1.value)
def test_expression_substitute_unknown_to_expression(self): e = Expression('b1 and b2') e1 = e.substitute(lambda v: v) self.assertEqual(e1, Expression('b1 and b2'))
def test_expression_substitute_existing_false(self): e = Expression('b1') self.assertFalse(e.substitute(lambda v: {'b1': False}.get(v.symbol, v)))
def test_expression_substitute_unknown_to_expression(self): e = Expression('b1 and b2') e1 = e.substitute(lambda v: v) self.assertEqual(e1, Expression('b1 and b2'))
def test_expression_substitute_invalid(self): e = Expression('b1 and b2') with self.assertRaises(SubstitutionError): e.substitute(lambda v: {'b1': 17}.get(v.symbol, v))
def test_expression_substitute_existing_false(self): e = Expression('b1') e1 = e.substitute(lambda v: {'b1': False}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertFalse(e1.value)
def test_expression_substitute_unknown_to_variable(self): e = Expression('b1') e1 = e.substitute(lambda v: v) self.assertEqual(e1, Expression(Variable('b1')))
def test_expression_substitute_evaluate_all_or_terms_to_false(self): e = Expression('a or b') e1 = e.substitute(lambda v: False) self.assertEqual(e1, Expression(False))
def test_expression_substitute_evaluate_all_and_terms_to_true(self): e = Expression('a and b') e1 = e.substitute(lambda v: True) self.assertEqual(e1, Expression(True))
def test_expression_substitute_remove_terms_from_or(self): e = Expression('a or b') e1 = e.substitute(lambda v: {'a': False}.get(v.symbol, v)) self.assertEqual(e1, Expression(Variable('b')))
def test_expression_substitute_existing_false(self): e = Expression('b1') e1 = e.substitute(lambda v: {'b1': False}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertFalse(e1.value)
def test_expression_substitute_with_short_circuit_and(self): e = Expression('a and (b or c) and d') e1 = e.substitute(lambda v: {'a': False}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertFalse(e1.value)
def test_expression_substitute_unknown_to_variable(self): e = Expression('b1') e1 = e.substitute(lambda v: v) self.assertEqual(e1, Expression(Variable('b1')))
def test_expression_substitute_with_short_circuit_or(self): e = Expression('(a and b) or c or d') e1 = e.substitute(lambda v: {'c': True}.get(v.symbol, v)) self.assertTrue(e1.has_value()) self.assertTrue(e1.value)
def test_expression_substitute_invalid(self): e = Expression('b1 and b2') with self.assertRaises(SubstitutionError): e.substitute(lambda v: {'b1': 17}.get(v.symbol, v))
def test_expression_substitute_existing(self): e = Expression('b1') self.assertTrue(e.substitute(lambda v: {'b1': True}.get(v.symbol, v)))