def test_simple_expression(self): x1, x2 = symbols('x1, x2') function = Or(x1, x2) self.assertEquals(function.subs({'x1': False, 'x2': False}), False) self.assertEquals(function.subs({'x1': True, 'x2': False}), True) self.assertEquals(function.subs({'x1': False, 'x2': True}), True) self.assertEquals(function.subs({'x1': True, 'x2': True}), True)
def test_complex_expression(self): x1, x2, x3 = symbols('x1, x2, x3') subfunction = And(x2, x3) function = Or(x1, subfunction, And(x1, x2)) print(function.args[0]) print(function.args) for combination in itertools.combinations((True, False), 3): self.assertEquals(function.subs(dict(zip(('x1', 'x2', 'x3'), combination))), combination[0] or (combination[1] and combination[2]))