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:
2021-02-12 15:15:31 +01:00
parent 3a12ea58df
commit cac2dad17f
62 changed files with 1182 additions and 480 deletions
+4 -2
View File
@@ -245,8 +245,10 @@ class TestReteConditions(TestUsingMemoryBasedSheerka):
matches = list(network.matches)
assert len(matches) == 2
assert matches[0].token.wmes == [wme3, wme2]
assert matches[1].token.wmes == [wme1, wme3]
# assert matches[0].token.wmes == [wme3, wme2]
# assert matches[1].token.wmes == [wme1, wme3]
assert len(matches[0].token.wmes) == 2
assert len(matches[1].token.wmes) == 2
def test_i_can_manage_binding_conditions(self):
network = ReteNetwork()
+22 -2
View File
@@ -638,15 +638,26 @@ class TestReteNetwork(TestUsingMemoryBasedSheerka):
network.remove_rule(rule3)
assert len(list(p_node3.activations)) == 0
def test_rule_is_added_to_rete_network_when_it_is_created(self):
def test_exec_rule_is_added_to_rete_network_when_it_is_created(self):
sheerka, context, rule = self.init_test().with_exec_rules(("rule_name", "id.attr == 'value'", 'True')).unpack()
evaluation_service = sheerka.services[SheerkaEvaluateRules.NAME]
rete_network = evaluation_service.network
assert len(rete_network.pnodes) == 1
assert rete_network.pnodes[0].rules[0] == rule
assert rule.rete_net == rete_network
assert len(rule.rete_p_nodes) > 0
def test_rule_is_removed_to_rete_network_when_it_is_deleted(self):
def test_format_rule_is_not_added_to_rete_network_when_it_is_created(self):
sheerka, context, rule = self.init_test().with_format_rules(("rule_name", "id.attr == 'value'", 'True')).unpack()
evaluation_service = sheerka.services[SheerkaEvaluateRules.NAME]
rete_network = evaluation_service.network
assert len(rete_network.pnodes) == 0
assert rule.rete_net is None
assert len(rule.rete_p_nodes) == 0
def test_rule_is_removed_from_rete_network_when_it_is_deleted(self):
sheerka, context, rule = self.init_test().with_exec_rules(("id.attr == 'value'", 'True')).unpack()
evaluation_service = sheerka.services[SheerkaEvaluateRules.NAME]
rete_network = evaluation_service.network
@@ -654,6 +665,15 @@ class TestReteNetwork(TestUsingMemoryBasedSheerka):
sheerka.remove_rule(context, rule)
assert len(rete_network.pnodes) == 0
def test_rule_is_removed_from_rete_network_when_it_is_deleted_from_another_ontology(self):
sheerka, context, rule = self.init_test().with_exec_rules(("id.attr == 'value'", 'True')).unpack()
evaluation_service = sheerka.services[SheerkaEvaluateRules.NAME]
rete_network = evaluation_service.network
sheerka.push_ontology(context, "new ontology")
sheerka.remove_rule(context, rule)
assert len(rete_network.pnodes) == 0
def test_rules_are_removed_upon_ontology_removal(self):
sheerka, context = self.init_test().unpack()
service = sheerka.services[SheerkaRuleManager.NAME]