def test_evaluate_normal(self): # NOTE: the actual expr.resource_name is irrelevant for this test expr = ResourceExpression("obj.a == 2") self.assertTrue(expr.evaluate([Resource({'a': 1}), Resource({'a': 2})])) self.assertTrue(expr.evaluate([Resource({'a': 2}), Resource({'a': 1})])) self.assertFalse( expr.evaluate([Resource({'a': 1}), Resource({'a': 3})]))
def test_evaluate_normal(self): # NOTE: the actual expr.resource_name is irrelevant for this test expr = ResourceExpression("obj.a == 2") self.assertTrue( expr.evaluate([ Resource({'a': 1}), Resource({'a': 2})])) self.assertTrue( expr.evaluate([ Resource({'a': 2}), Resource({'a': 1})])) self.assertFalse( expr.evaluate([ Resource({'a': 1}), Resource({'a': 3})]))
def test_compound_expression_or_failing(self): resource_map = { 'a': [Resource({'foo': 2})], 'b': [Resource({'bar': 3})] } expr = ResourceExpression("a.foo == 1 and b.bar == 2") self.assertFalse( expr.evaluate(resource_map['a'], resource_map['b'], resource_map=resource_map))
def test_compound_expression_or_passing(self): resource_map = { 'a': [Resource({'foo': 1})], 'b': [Resource({'bar': 3})] } expr = ResourceExpression("a.foo == 1 or b.bar == 2") self.assertTrue( expr.evaluate(resource_map['a'], resource_map['b'], resource_map=resource_map))
def test_compound_many_subexpressions_failing(self): resource_map = { 'a': [Resource({'foo': 1}), Resource({'foo': 2})], 'b': [Resource({'bar': 3}), Resource({'bar': 4})] } expr = ResourceExpression( "a.foo == 3 or b.bar == 3 and a.foo == 2 and b.bar == 1") self.assertFalse( expr.evaluate(resource_map['a'], resource_map['b'], resource_map=resource_map))
def test_evaluate_exception(self): # NOTE: the actual expr.resource_name is irrelevant for this test expr = ResourceExpression("obj.a == 2") self.assertFalse(expr.evaluate([Resource()]))