Fixed #3: Added sheerka.resolve_rule()
Fixed #5: Refactored SheerkaComparisonManager Fixed #6: Sya parser no longer works after restart
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import ast
|
||||
|
||||
import pytest
|
||||
|
||||
from core.builtin_concepts import ReturnValueConcept, ParserResultConcept, BuiltinConcepts
|
||||
from core.concept import Concept, CB
|
||||
from core.sheerka.services.SheerkaConceptManager import SheerkaConceptManager
|
||||
@@ -11,7 +12,6 @@ from parsers.BaseNodeParser import SourceCodeNode, SourceCodeWithConceptNode
|
||||
from parsers.FunctionParser import FunctionParser
|
||||
from parsers.PythonParser import PythonNode, PythonParser
|
||||
from parsers.PythonWithConceptsParser import PythonWithConceptsParser
|
||||
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
|
||||
|
||||
@@ -226,7 +226,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
evaluated = python_evaluator.eval(context, parsed)
|
||||
|
||||
assert evaluated.status
|
||||
assert sheerka.get_concepts_weights(BuiltinConcepts.PRECEDENCE) == {'c:__var__0 plus __var__1|1001:': 1,
|
||||
assert sheerka.get_weights(BuiltinConcepts.PRECEDENCE) == {'c:__var__0 plus __var__1|1001:': 1,
|
||||
'c:__var__0 mult __var__1|1002:': 2}
|
||||
|
||||
def test_i_can_define_variables(self):
|
||||
@@ -370,3 +370,21 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
|
||||
sequence = visitor.get_sequences(ast_, "foo")
|
||||
assert sequence == expected
|
||||
|
||||
@pytest.mark.parametrize("parser, value", [
|
||||
(PythonParser(), "3"),
|
||||
(FunctionParser(), "3"),
|
||||
(PythonParser(), 3),
|
||||
(FunctionParser(), 3),
|
||||
])
|
||||
def test_i_can_eval_unresolved_rules(self, parser, value):
|
||||
context = self.get_context()
|
||||
context.add_to_short_term_memory("get_obj_name", get_obj_name)
|
||||
context.add_to_short_term_memory("x", value)
|
||||
|
||||
parsed = parser.parse(context, ParserInput("get_obj_name(r:|x:)"))
|
||||
python_evaluator = PythonEvaluator()
|
||||
evaluated = python_evaluator.eval(context, parsed)
|
||||
|
||||
assert evaluated.status
|
||||
assert evaluated.value == context.sheerka.get_rule_by_id(str(value)).name
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import pytest
|
||||
from core.builtin_concepts import ReturnValueConcept, ParserResultConcept, BuiltinConcepts
|
||||
from core.rule import Rule, ACTION_TYPE_DEFERRED
|
||||
from core.rule import Rule
|
||||
from evaluators.RuleEvaluator import RuleEvaluator
|
||||
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
@@ -37,11 +37,11 @@ class TestRuleEvaluator(TestUsingMemoryBasedSheerka):
|
||||
assert result.value == expected
|
||||
assert result.parents == [ret_val]
|
||||
|
||||
def test_i_can_evaluate_deferred_rules(self):
|
||||
def test_i_can_evaluate_unresolved_rules(self):
|
||||
context = self.get_context()
|
||||
|
||||
rule = Rule().set_id("i")
|
||||
rule.metadata.action_type = ACTION_TYPE_DEFERRED
|
||||
rule.metadata.id_is_unresolved = True
|
||||
ret_val = ReturnValueConcept("some_name", True, ParserResultConcept(value=[rule]), True)
|
||||
context.add_to_short_term_memory("i", 1)
|
||||
evaluator = RuleEvaluator()
|
||||
@@ -57,7 +57,7 @@ class TestRuleEvaluator(TestUsingMemoryBasedSheerka):
|
||||
sheerka, context = self.init_concepts()
|
||||
|
||||
rule = Rule().set_id("unknown variable")
|
||||
rule.metadata.action_type = ACTION_TYPE_DEFERRED
|
||||
rule.metadata.id_is_unresolved = True
|
||||
ret_val = ReturnValueConcept("some_name", True, ParserResultConcept(value=[rule]), True)
|
||||
evaluator = RuleEvaluator()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user