Implemented ConceptManager with concept creation, modification and deletion
This commit is contained in:
@@ -3,6 +3,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
|
||||
from core.sheerka.services.SheerkaExecute import ParserInput
|
||||
from core.tokenizer import Tokenizer
|
||||
from evaluators.PythonEvaluator import PythonEvaluator, PythonEvalError, NamesWithAttributesVisitor
|
||||
@@ -18,6 +19,10 @@ def get_obj_name(obj):
|
||||
return obj.name
|
||||
|
||||
|
||||
def return_return_value(status):
|
||||
return ReturnValueConcept("who", status, f"the value is {status}")
|
||||
|
||||
|
||||
def get_source_code_node(source_code, concepts=None):
|
||||
if concepts:
|
||||
for concept_name, concept in sorted(concepts.items(), key=lambda kv: len(kv[0]), reverse=True):
|
||||
@@ -132,8 +137,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
evaluated = PythonEvaluator().eval(context, parsed)
|
||||
|
||||
assert evaluated.status
|
||||
assert sheerka.has_key("foo")
|
||||
|
||||
assert sheerka.services[SheerkaConceptManager.NAME].has_key("foo")
|
||||
|
||||
def test_i_can_eval_ast_expression_that_references_concepts(self):
|
||||
"""
|
||||
@@ -141,7 +145,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
:return:
|
||||
"""
|
||||
context = self.get_context()
|
||||
context.sheerka.add_in_cache(Concept("foo", body="1"))
|
||||
context.sheerka.test_only_add_in_cache(Concept("foo", body="1"))
|
||||
|
||||
parsed = PythonParser().parse(context, ParserInput("foo + 2"))
|
||||
evaluated = PythonEvaluator().eval(context, parsed)
|
||||
@@ -155,7 +159,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
:return:
|
||||
"""
|
||||
context = self.get_context()
|
||||
context.sheerka.add_in_cache(Concept("foo"))
|
||||
context.sheerka.test_only_add_in_cache(Concept("foo"))
|
||||
|
||||
parsed = PythonParser().parse(context, ParserInput("def a(b):\n return b\na(c:foo:)"))
|
||||
evaluated = PythonEvaluator().eval(context, parsed)
|
||||
@@ -178,7 +182,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
|
||||
def test_i_can_eval_concept_token(self):
|
||||
context = self.get_context()
|
||||
context.sheerka.add_in_cache(Concept("foo", body="2"))
|
||||
context.sheerka.test_only_add_in_cache(Concept("foo", body="2"))
|
||||
context.add_to_short_term_memory("get_obj_name", get_obj_name)
|
||||
|
||||
parsed = PythonParser().parse(context, ParserInput("get_obj_name(c:foo:)"))
|
||||
@@ -190,7 +194,7 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
|
||||
def test_i_can_eval_when_expect_success(self):
|
||||
context = self.get_context()
|
||||
context.sheerka.add_in_cache(Concept("foo", body="2"))
|
||||
context.sheerka.test_only_add_in_cache(Concept("foo", body="2"))
|
||||
|
||||
parsed = PythonParser().parse(context, ParserInput("foo==2"))
|
||||
python_evaluator = PythonEvaluator()
|
||||
@@ -334,6 +338,23 @@ class TestPythonEvaluator(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.status
|
||||
assert evaluated.value == "Print return values"
|
||||
|
||||
@pytest.mark.parametrize("method, expected_status", [
|
||||
("return_return_value(True)", True),
|
||||
("return_return_value(False)", False),
|
||||
])
|
||||
def test_i_can_eval_a_function_that_returns_a_return_value(self, method, expected_status):
|
||||
context = self.get_context()
|
||||
context.add_to_short_term_memory("return_return_value", return_return_value)
|
||||
|
||||
parsed = FunctionParser().parse(context, ParserInput(method))
|
||||
python_evaluator = PythonEvaluator()
|
||||
evaluated = python_evaluator.eval(context, parsed)
|
||||
ret_val = return_return_value(expected_status)
|
||||
|
||||
assert evaluated.status == expected_status
|
||||
assert evaluated.value == ret_val.body
|
||||
assert ret_val in evaluated.parents
|
||||
|
||||
@pytest.mark.parametrize("text, expected", [
|
||||
("foo.bar.baz", [["foo", "bar", "baz"]]),
|
||||
("foo.bar.baz; one.two.three", [["foo", "bar", "baz"]]),
|
||||
|
||||
Reference in New Issue
Block a user