Implemented some enhancement request and fixed some bugs
Fixed #2 : Variables are not recognized when inside a rule token Fixed #15 : Rule: rete attributes are lost when a new ontology is created Fixed #14 : ReteNetwork: Format rules must not be added to Rete network Fixed #16 : DefConcept: Variables are not recognized when they are keyword arguments Fixed #4 : Comparison are not correctly set when comparison property is a concept Fixed #14 : Parser: merge FunctionParser.NamesNode and ExpressionParser.NamesNode Fixed #18 : Parser: Add SourceCodeNode test to UnrecognizedNodeParser Fixed #20 : At startup Number concept is saved in db a numerous number of time Fixed #21 : CacheManager: I can remove all elements from a ListIfNeededCache and fill it again Fixed #22 : CacheManager: I can remove all elements from a SetCache and fill it again Fixed #23 : HistoryManager: history() no longer works Fixed #24 : HistoryManager: history() no longer works after creating an exec rule Fixed #25 : SheerkaMemory: Use MemoryObject instead of sheerka.local Fixed #26 : Debugger: add the list all available services.. Fixed #27 : CONCEPTS_GRAMMARS_ENTRY does not seems to be in use any more Fixed #28 : Give order to services
This commit is contained in:
@@ -19,14 +19,32 @@ class DummyObj:
|
||||
|
||||
|
||||
class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
|
||||
return_value_id = 0
|
||||
rv = None
|
||||
rr = None
|
||||
rc = None
|
||||
|
||||
@classmethod
|
||||
def setup(cls):
|
||||
sheerka = cls().get_sheerka()
|
||||
cls.return_value_id = sheerka.get_by_key("__RETURN_VALUE").id
|
||||
|
||||
def backup_registered(self, service):
|
||||
self.rv = service.registered_vars.copy(),
|
||||
self.rr = service.registered_rules.copy(),
|
||||
self.rc = service.registered_concepts.copy(),
|
||||
service.registered_vars.clear()
|
||||
service.registered_rules.clear()
|
||||
service.registered_concepts.clear()
|
||||
|
||||
def restore_registered(self, service):
|
||||
service.registered_vars.clear()
|
||||
service.registered_rules.clear()
|
||||
service.registered_concepts.clear()
|
||||
service.registered_vars.extend(self.rv)
|
||||
service.registered_vars.extend(self.rr)
|
||||
service.registered_vars.extend(self.rc)
|
||||
|
||||
@pytest.mark.parametrize("item_type", [
|
||||
"vars", "rules", "concepts"
|
||||
])
|
||||
@@ -387,7 +405,7 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
sheerka.debug_var(context, "s.m.v", "1+", 10, variable="my_var")
|
||||
sheerka.set_debug_var(context, "s.m.v", "1+", 10, variable="my_var")
|
||||
assert service.debug_vars_settings == [
|
||||
DebugItem("my_var", "s", "m", 1, True, 10, False, True)
|
||||
]
|
||||
@@ -398,7 +416,7 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
sheerka.debug_rule(context, "s.m.v", "1+", 10, rule="my_rule")
|
||||
sheerka.set_debug_rule(context, "s.m.v", "1+", 10, rule="my_rule")
|
||||
assert service.debug_rules_settings == [
|
||||
DebugItem("my_rule", "s", "m", 1, True, 10, False, True)
|
||||
]
|
||||
@@ -409,7 +427,7 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
sheerka.debug_concept(context, "s.m.v", "1+", 10, concept="my_concept")
|
||||
sheerka.set_debug_concept(context, "s.m.v", "1+", 10, concept="my_concept")
|
||||
assert service.debug_concepts_settings == [
|
||||
DebugItem("my_concept", "s", "m", 1, True, 10, False, True)
|
||||
]
|
||||
@@ -422,9 +440,9 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
root_context = self.get_context(sheerka)
|
||||
|
||||
sheerka.set_debug(root_context, True)
|
||||
sheerka.debug_var(root_context, "service_name.*.var")
|
||||
sheerka.debug_rule(root_context, 1)
|
||||
sheerka.debug_concept(root_context, 1001)
|
||||
sheerka.set_debug_var(root_context, "service_name.*.var")
|
||||
sheerka.set_debug_rule(root_context, 1)
|
||||
sheerka.set_debug_concept(root_context, 1001)
|
||||
|
||||
another_service = SheerkaDebugManager(sheerka)
|
||||
another_service.initialize_deferred(root_context, True)
|
||||
@@ -705,9 +723,9 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
sheerka.push_ontology(context, "new ontology")
|
||||
|
||||
service.set_debug(context)
|
||||
service.debug_var(context, "var_service.var_method.var_name", "1+", 1)
|
||||
service.debug_rule(context, "rule_service.rule_method.rule_name", "2+", 2)
|
||||
service.debug_concept(context, "concept_service.concept_method.concept_name", "3+", 3)
|
||||
service.set_debug_var(context, "var_service.var_method.var_name", "1+", 1)
|
||||
service.set_debug_rule(context, "rule_service.rule_method.rule_name", "2+", 2)
|
||||
service.set_debug_concept(context, "concept_service.concept_method.concept_name", "3+", 3)
|
||||
|
||||
# sanity check
|
||||
assert service.activated
|
||||
@@ -728,17 +746,17 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
service.set_debug(context)
|
||||
service.debug_var(context, "v_service.v_method.v_name", "1+", 1)
|
||||
service.debug_rule(context, "r_service.r_method.r_name", "2+", 2)
|
||||
service.debug_concept(context, "c_serv.c_method.c_name", "3+", 3)
|
||||
service.set_debug_var(context, "v_service.v_method.v_name", "1+", 1)
|
||||
service.set_debug_rule(context, "r_service.r_method.r_name", "2+", 2)
|
||||
service.set_debug_concept(context, "c_serv.c_method.c_name", "3+", 3)
|
||||
|
||||
sheerka.push_ontology(context, "new ontology")
|
||||
|
||||
# modify the state
|
||||
service.set_debug(context, False)
|
||||
service.debug_var(context, "var_service2.var_method2.var_name2", "11+", 11)
|
||||
service.debug_rule(context, "rule_service2.rule_method2.rule_name2", "22+", 22)
|
||||
service.debug_concept(context, "concept_service2.concept_method2.concept_name2", "33+", 33)
|
||||
service.set_debug_var(context, "var_service2.var_method2.var_name2", "11+", 11)
|
||||
service.set_debug_rule(context, "rule_service2.rule_method2.rule_name2", "22+", 22)
|
||||
service.set_debug_concept(context, "concept_service2.concept_method2.concept_name2", "33+", 33)
|
||||
|
||||
# sanity
|
||||
assert not service.activated
|
||||
@@ -752,3 +770,133 @@ class TestSheerkaDebugManager(TestUsingMemoryBasedSheerka):
|
||||
assert service.debug_vars_settings == [DebugItem("v_name", "v_service", "v_method", 1, True, 1, False, True)]
|
||||
assert service.debug_rules_settings == [DebugItem("r_name", "r_service", "r_method", 2, True, 2, False, True)]
|
||||
assert service.debug_concepts_settings == [DebugItem("c_name", "c_serv", "c_method", 3, True, 3, False, True)]
|
||||
|
||||
def test_i_can_register_debug_item(self):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
try:
|
||||
self.backup_registered(service)
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service", "method", "var_name")
|
||||
assert service.registered_vars == [("service", "method", "var_name")]
|
||||
|
||||
service.register_debug(service.RULES_DEBUG_TYPE, "service", "method", "rule_name")
|
||||
assert service.registered_rules == [("service", "method", "rule_name")]
|
||||
|
||||
service.register_debug(service.CONCEPTS_DEBUG_TYPE, "service", "method", "concept_name")
|
||||
assert service.registered_concepts == [("service", "method", "concept_name")]
|
||||
finally:
|
||||
self.restore_registered(service)
|
||||
|
||||
def test_i_can_filter_registered_debug_item(self):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
try:
|
||||
self.backup_registered(service)
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method1", "var_name1")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method1", "var_name2")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method2", "var_name1")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method2", "var_name2")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method1", "var_name1")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method1", "var_name2")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method2", "var_name1")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method2", "var_name2")
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, "service1")) == [
|
||||
("service1", "method1", "var_name1"),
|
||||
("service1", "method1", "var_name2"),
|
||||
("service1", "method2", "var_name1"),
|
||||
("service1", "method2", "var_name2"),
|
||||
]
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, "service1.method2")) == [
|
||||
("service1", "method2", "var_name1"),
|
||||
("service1", "method2", "var_name2"),
|
||||
]
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, "service1.method2.var_name1")) == [
|
||||
("service1", "method2", "var_name1"),
|
||||
]
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, "*.*.var_name1")) == [
|
||||
("service1", "method1", "var_name1"),
|
||||
("service1", "method2", "var_name1"),
|
||||
("service2", "method1", "var_name1"),
|
||||
("service2", "method2", "var_name1"),
|
||||
]
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, "*.method2.*")) == [
|
||||
("service1", "method2", "var_name1"),
|
||||
("service1", "method2", "var_name2"),
|
||||
("service2", "method2", "var_name1"),
|
||||
("service2", "method2", "var_name2"),
|
||||
]
|
||||
|
||||
assert list(service.filter_registered_debug(service.VARS_DEBUG_TYPE, method="method1")) == [
|
||||
("service1", "method1", "var_name1"),
|
||||
("service1", "method1", "var_name2"),
|
||||
("service2", "method1", "var_name1"),
|
||||
("service2", "method1", "var_name2"),
|
||||
]
|
||||
finally:
|
||||
self.restore_registered(service)
|
||||
|
||||
def test_i_can_list_registered_debug(self):
|
||||
sheerka, context = self.init_concepts()
|
||||
service = sheerka.services[SheerkaDebugManager.NAME]
|
||||
|
||||
try:
|
||||
self.backup_registered(service)
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method1", "var_name1")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method1", "var_name2")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method2", "var_name3")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service1", "method2", "var_name4")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method3", "var_name5")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method3", "var_name6")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method1", "var_name7")
|
||||
service.register_debug(service.VARS_DEBUG_TYPE, "service2", "method1", "var_name8")
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE)
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == ["service1", "service2"]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, "service2")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == ["service2.method1", "service2.method3"]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, "service2.method3")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == ["service2.method3.var_name5", "service2.method3.var_name6"]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, "*.method1")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == [
|
||||
"service1.method1.var_name1",
|
||||
"service1.method1.var_name2",
|
||||
"service2.method1.var_name7",
|
||||
"service2.method1.var_name8",
|
||||
]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, method="method1")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == [
|
||||
"service1.method1.var_name1",
|
||||
"service1.method1.var_name2",
|
||||
"service2.method1.var_name7",
|
||||
"service2.method1.var_name8",
|
||||
]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, "*.*.var_name7")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == [
|
||||
"service2.method1.var_name7",
|
||||
]
|
||||
|
||||
res = service.list_registered(service.VARS_DEBUG_TYPE, variable="var_name7")
|
||||
assert sheerka.isinstance(res, BuiltinConcepts.TO_LIST)
|
||||
assert list(res.body) == [
|
||||
"service2.method1.var_name7",
|
||||
]
|
||||
finally:
|
||||
self.restore_registered(service)
|
||||
|
||||
Reference in New Issue
Block a user