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
+65
View File
@@ -0,0 +1,65 @@
from core.builtin_concepts import BuiltinConcepts
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
class TestSheerkaAdmin(TestUsingMemoryBasedSheerka):
def test_i_can_get_last_ret(self):
pass
def test_i_can_get_last_error_ret(self):
sheerka, context = self.init_concepts()
# nothing in history
last_error_ret = sheerka.last_error_ret(context)
assert sheerka.isinstance(last_error_ret, BuiltinConcepts.RETURN_VALUE)
assert not last_error_ret.status
assert sheerka.isinstance(last_error_ret.body, BuiltinConcepts.NOT_FOUND)
# only success in history
r_success = sheerka.ret("Test", True, "success")
sheerka.last_return_values.append([r_success])
last_error_ret = sheerka.last_error_ret(context)
assert sheerka.isinstance(last_error_ret, BuiltinConcepts.RETURN_VALUE)
assert not last_error_ret.status
assert sheerka.isinstance(last_error_ret.body, BuiltinConcepts.NOT_FOUND)
# at least on error
r_failure = sheerka.ret("Test", False, "failure")
sheerka.last_return_values.append([r_failure])
assert sheerka.last_error_ret(context) == r_failure
# add another success and make sure we get the same error
sheerka.last_return_values.append([r_success])
assert sheerka.last_error_ret(context) == r_failure
# and I only get the last failure
r_failure2 = sheerka.ret("Test", False, "another failure")
sheerka.last_return_values.append([r_failure2])
assert sheerka.last_error_ret(context) == r_failure2
# but I still can get the previous error
assert sheerka.last_error_ret(context, -2) == r_failure
def test_i_can_get_last_error_ret_when_only_one_ret_has_failed(self):
sheerka, context = self.init_concepts()
r_success = sheerka.ret("Test", True, "success")
r_failure = sheerka.ret("Test", False, "False1")
sheerka.last_return_values.append([r_success, r_failure])
assert sheerka.last_error_ret(context) == r_failure
def test_i_cannot_get_last_error_ret_when_too_many_errors(self):
sheerka, context = self.init_concepts()
r1 = sheerka.ret("Test", True, "success")
r2 = sheerka.ret("Test", False, "False1")
r3 = sheerka.ret("Test", False, "False2")
sheerka.last_return_values.append([r1, r2, r3])
last_error_ret = sheerka.last_error_ret(context)
assert sheerka.isinstance(last_error_ret, BuiltinConcepts.RETURN_VALUE)
assert not last_error_ret.status
assert sheerka.isinstance(last_error_ret.body, BuiltinConcepts.TOO_MANY_ERRORS)
assert last_error_ret.body.body == [r2, r3]