Working on #51 : Working
This commit is contained in:
@@ -1334,45 +1334,33 @@ isinstance(var, Concept) and var.key == 'hello __var__0'""" + \
|
||||
assert self.sheerka.is_success(self.sheerka.objvalue(res))
|
||||
|
||||
@pytest.mark.parametrize("expression, variable_name, expected_compiled", [
|
||||
(
|
||||
"recognize(__ret.body, greetings)",
|
||||
None,
|
||||
"__x_00__ = __ret.body\nisinstance(__x_00__, Concept) and __x_00__.name == 'greetings'"
|
||||
),
|
||||
# (
|
||||
# "recognize(__ret.body, greetings)",
|
||||
# None,
|
||||
# "__x_00__ = __ret.body\nisinstance(__x_00__, Concept) and __x_00__.name == 'greetings'"
|
||||
# ),
|
||||
# (
|
||||
# "recognize(__ret.body, c:|1001:)",
|
||||
# None,
|
||||
# ["#__x_00__|__name__|'__ret'",
|
||||
# "#__x_00__|body|#__x_01__",
|
||||
# "#__x_01__|__is_concept__|True",
|
||||
# "#__x_01__|id|'1001'"]
|
||||
# "__x_00__ = __ret.body\nisinstance(__x_00__, Concept) and __x_00__.id == '1001'"
|
||||
# ),
|
||||
# (
|
||||
# "recognize(__ret.body, c:greetings:)",
|
||||
# None,
|
||||
# ["#__x_00__|__name__|'__ret'",
|
||||
# "#__x_00__|body|#__x_01__",
|
||||
# "#__x_01__|__is_concept__|True",
|
||||
# "#__x_01__|name|'greetings'"]
|
||||
# "__x_00__ = __ret.body\nisinstance(__x_00__, Concept) and __x_00__.name == 'greetings'"
|
||||
# ),
|
||||
# (
|
||||
# "recognize(__ret.body, greetings) and __ret.body.a == 'my friend'",
|
||||
# "my friend",
|
||||
# ["#__x_00__|__name__|'__ret'",
|
||||
# "#__x_00__|body|#__x_01__",
|
||||
# "#__x_01__|__is_concept__|True",
|
||||
# "#__x_01__|name|'greetings'",
|
||||
# "#__x_01__|a|'my friend'"]
|
||||
# ),
|
||||
# (
|
||||
# "recognize(__ret.body, greetings) and __ret.body.a == sheerka",
|
||||
# "sheerka",
|
||||
# ["#__x_00__|__name__|'__ret'",
|
||||
# "#__x_00__|body|#__x_01__",
|
||||
# "#__x_01__|__is_concept__|True",
|
||||
# "#__x_01__|name|'greetings'",
|
||||
# "#__x_01__|a|'__sheerka__'"]
|
||||
# "__x_00__ = __ret.body\nisinstance(__x_00__, Concept) and __x_00__.name == 'greetings' and __x_00__.a == 'my friend'"
|
||||
# ),
|
||||
(
|
||||
"recognize(__ret.body, greetings) and __ret.body.a == sheerka",
|
||||
"sheerka",
|
||||
"""__x_00__ = __ret.body
|
||||
__x_01__ = __x_00__.a
|
||||
isinstance(__x_00__, Concept) and __x_00__.name == 'greetings' and isinstance(__x_01__, Expando) and __x_01__.name == 'sheerka'"""
|
||||
),
|
||||
# (
|
||||
# "recognize(__ret.body, greetings) and __ret.body.a == foo",
|
||||
# "foo",
|
||||
|
||||
@@ -3,7 +3,7 @@ import pytest
|
||||
from core.builtin_concepts_ids import BuiltinConcepts
|
||||
from core.sheerka.services.SheerkaExecute import ParserInput
|
||||
from core.tokenizer import Tokenizer
|
||||
from parsers.BaseExpressionParser import VariableNode
|
||||
from parsers.BaseExpressionParser import VariableNode, ComparisonNode
|
||||
from parsers.BaseParser import ErrorSink
|
||||
from parsers.ExpressionParser import ExpressionParser
|
||||
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
|
||||
@@ -56,7 +56,7 @@ class TestExpressionParser(TestUsingMemoryBasedSheerka):
|
||||
("func(var1.attr1 > var2.attr2)", FN("func(", ")", [GT(VAR("var1.attr1"), VAR("var2.attr2"))])),
|
||||
("func1(var1) and func2(var2)", AND(FN("func1(", ")", [VAR("var1")]), FN("func2(", (")", 1), [VAR("var2")]))),
|
||||
("__ret", VAR("__ret")),
|
||||
#("func1().func2()", [])
|
||||
# ("func1().func2()", [])
|
||||
])
|
||||
def test_i_can_parse_input(self, expression, expected):
|
||||
sheerka, context, parser, parser_input, error_sink = self.init_parser_with_source(expression)
|
||||
@@ -91,3 +91,14 @@ class TestExpressionParser(TestUsingMemoryBasedSheerka):
|
||||
|
||||
assert not error_sink.has_error
|
||||
assert parsed == get_expr_node_from_test_node(expression, EXPR("var1 + var2"))
|
||||
|
||||
@pytest.mark.parametrize("expression, expected", [
|
||||
("ret.status in ('a', 1 , func())", "new_var in ('a', 1 , func())"),
|
||||
("ret.status not in ('a', 1 , func())", "new_var not in ('a', 1 , func())"),
|
||||
|
||||
])
|
||||
def test_i_can_rebuild_source(self, expression, expected):
|
||||
sheerka, context, parser, parser_input, error_sink = self.init_parser_with_source(expression)
|
||||
parsed = parser.parse_input(context, parser_input, error_sink)
|
||||
|
||||
assert ComparisonNode.rebuild_source("new_var", parsed.comp, parsed.right.get_source()) == expected
|
||||
|
||||
Reference in New Issue
Block a user