Added first version of DebugManager. Implemented draft of the rule engine

This commit is contained in:
2020-11-20 13:41:45 +01:00
parent cd066881b4
commit 315f8ea09b
156 changed files with 8388 additions and 2852 deletions
+38 -38
View File
@@ -105,44 +105,44 @@ class TestBuiltinHelpers(TestUsingMemoryBasedSheerka):
assert not res.status
assert res == item
@pytest.mark.parametrize("expression, vars_to_include, vars_to_exclude, expected_expr", [
("a == 1", [], [], []),
("a == 1", ["a"], [], ["a == 1"]),
("a == 1", [], ["a"], []),
("predicate(a)", [], [], []),
("predicate(a)", ["a"], [], ["predicate(a)"]),
("predicate(a, b)", ["a"], [], ["predicate(a, b)"]),
("predicate(a, b)", ["b"], [], ["predicate(a, b)"]),
("predicate(a, b)", ["a", "b"], [], ["predicate(a, b)"]),
("predicate(a, b)", ["a"], ["b"], []),
("a + b == 1", [], [], []),
("a + b == 1", ["a"], [], ["a + b == 1"]),
("a + b == 1", ["a"], ["b"], []),
("a + b == 1", ["b"], [], ["a + b == 1"]),
("a + b == 1", ["a", "b"], [], ["a + b == 1"]),
("a == 1 and b == 2", [], [], []),
("a == 1 and b == 2", ["a"], [], ["a == 1"]),
("a == 1 and b == 2", ["b"], [], ["b == 2"]),
("a == 1 and b == 2", ["a"], ["b"], ["a == 1"]),
("a == 1 and b == 2", ["a", "b"], [], ["a == 1 and b == 2"]),
("predicate(a,c) and predicate(b,c)", ["a", "b"], [], ["predicate(a,c) and predicate(b,c)"]),
("not(a == 1)", [], [], []),
("not(a == 1)", ["a"], [], ["not(a==1)"]),
("a == 1 or b == 2", [], [], []),
("a == 1 or b == 2", ["a"], [], ["a == 1"]),
("a == 1 or b == 2", ["b"], [], ["b == 2"]),
("a == 1 or b == 2", ["a", "b"], [], ["a == 1 or b == 2"]),
("predicate(a,c) or predicate(b,c)", ["a", "b"], [], ["predicate(a,c) or predicate(b,c)"]),
("a < 1 and a > b", ["a"], [], ["a < 1 and a > b"]),
])
def test_i_can_extract_predicates(self, expression, vars_to_include, vars_to_exclude, expected_expr):
sheerka = self.get_sheerka()
expected = [ast.parse(expr, mode="eval") for expr in expected_expr]
actual = core.builtin_helpers.extract_predicates(sheerka, expression, vars_to_include, vars_to_exclude)
assert len(actual) == len(expected)
for i in range(len(actual)):
assert self.dump_ast(actual[i]) == self.dump_ast(expected[i])
# @pytest.mark.parametrize("expression, vars_to_include, vars_to_exclude, expected_expr", [
# ("a == 1", [], [], []),
# ("a == 1", ["a"], [], ["a == 1"]),
# ("a == 1", [], ["a"], []),
# ("predicate(a)", [], [], []),
# ("predicate(a)", ["a"], [], ["predicate(a)"]),
# ("predicate(a, b)", ["a"], [], ["predicate(a, b)"]),
# ("predicate(a, b)", ["b"], [], ["predicate(a, b)"]),
# ("predicate(a, b)", ["a", "b"], [], ["predicate(a, b)"]),
# ("predicate(a, b)", ["a"], ["b"], []),
# ("a + b == 1", [], [], []),
# ("a + b == 1", ["a"], [], ["a + b == 1"]),
# ("a + b == 1", ["a"], ["b"], []),
# ("a + b == 1", ["b"], [], ["a + b == 1"]),
# ("a + b == 1", ["a", "b"], [], ["a + b == 1"]),
# ("a == 1 and b == 2", [], [], []),
# ("a == 1 and b == 2", ["a"], [], ["a == 1"]),
# ("a == 1 and b == 2", ["b"], [], ["b == 2"]),
# ("a == 1 and b == 2", ["a"], ["b"], ["a == 1"]),
# ("a == 1 and b == 2", ["a", "b"], [], ["a == 1 and b == 2"]),
# ("predicate(a,c) and predicate(b,c)", ["a", "b"], [], ["predicate(a,c) and predicate(b,c)"]),
# ("not(a == 1)", [], [], []),
# ("not(a == 1)", ["a"], [], ["not(a==1)"]),
# ("a == 1 or b == 2", [], [], []),
# ("a == 1 or b == 2", ["a"], [], ["a == 1"]),
# ("a == 1 or b == 2", ["b"], [], ["b == 2"]),
# ("a == 1 or b == 2", ["a", "b"], [], ["a == 1 or b == 2"]),
# ("predicate(a,c) or predicate(b,c)", ["a", "b"], [], ["predicate(a,c) or predicate(b,c)"]),
# ("a < 1 and a > b", ["a"], [], ["a < 1 and a > b"]),
# ])
# def test_i_can_extract_predicates(self, expression, vars_to_include, vars_to_exclude, expected_expr):
# sheerka = self.get_sheerka()
# expected = [ast.parse(expr, mode="eval") for expr in expected_expr]
#
# actual = core.builtin_helpers.extract_predicates(sheerka, expression, vars_to_include, vars_to_exclude)
# assert len(actual) == len(expected)
# for i in range(len(actual)):
# assert self.dump_ast(actual[i]) == self.dump_ast(expected[i])
@pytest.mark.parametrize("concepts, expected", [
([], []),