Fixed concept token parsing

This commit is contained in:
2020-05-23 10:46:03 +02:00
parent 32fb0e5398
commit c79403443f
5 changed files with 21 additions and 21 deletions
+16 -12
View File
@@ -4,7 +4,7 @@ import pytest
from core.builtin_concepts import BuiltinConcepts, ReturnValueConcept, UserInputConcept
from core.concept import Concept, PROPERTIES_TO_SERIALIZE, ConceptParts
from core.sheerka.Sheerka import Sheerka, BASE_NODE_PARSER_CLASS
from core.tokenizer import Token, TokenKind, Tokenizer
from core.tokenizer import Token, TokenKind
from tests.TestUsingFileBasedSheerka import TestUsingFileBasedSheerka
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
@@ -276,30 +276,35 @@ class TestSheerkaUsingMemoryBasedSheerka(TestUsingMemoryBasedSheerka):
assert not sheerka.is_success(sheerka.new(BuiltinConcepts.TOO_MANY_SUCCESS))
@pytest.mark.parametrize("concept, expected", [
(None, None),
# by name
("foo", ["foo", "foo2"]),
("bar", "bar"),
("plus", "plus"),
("a mult b", "mult"),
("unknown", None),
# by tuple
((None, None), None),
(("foo", None), ["foo", "foo2"]),
(("foo", "1002"), "foo2"),
((None, "1001"), "foo"),
(("plus", None), "plus"),
(("1001", None), "1001"),
(("unknown", None), None),
((None, "unknown"), None),
#
# by token
(Token(TokenKind.CONCEPT, (None, None), 0, 0, 0), None),
(Token(TokenKind.CONCEPT, ("foo", None), 0, 0, 0), ["foo", "foo2"]),
# by concept token str
("c:foo:", ["foo", "foo2"]),
# I cannot resolve
(None, None),
("unknown", None),
((None, None), None),
(("unknown", None), None),
((None, "unknown"), None),
(Token(TokenKind.CONCEPT, (None, None), 0, 0, 0), None),
("c:unknown:", None),
("c:foo:.id", None),
("c:foo: + 1", None),
])
def test_i_can_resolve_concept(self, concept, expected):
@@ -315,10 +320,8 @@ class TestSheerkaUsingMemoryBasedSheerka(TestUsingMemoryBasedSheerka):
cmap = {k: concepts[i] for i, k in enumerate(["foo", "foo2", "bar", "plus", "mult", "1001"])}
cmap[None] = None
if isinstance(expected, list):
assert sheerka.resolve(concept) == [cmap[e] for e in expected]
else:
assert sheerka.resolve(concept) == cmap[expected]
real_expected = [cmap[e] for e in expected] if isinstance(expected, list) else cmap[expected]
assert sheerka.resolve(concept) == real_expected
def test_i_can_resolve_when_searching_by_definition(self):
sheerka, context, plus = self.init_concepts(
@@ -328,6 +331,7 @@ class TestSheerkaUsingMemoryBasedSheerka(TestUsingMemoryBasedSheerka):
assert sheerka.resolve("a plus b") == plus
class TestSheerkaUsingFileBasedSheerka(TestUsingFileBasedSheerka):
def test_root_folder_is_created_after_initialization(self):
+1
View File
@@ -158,6 +158,7 @@ def test_i_can_escape():
("c:key|id:", "key", "id"),
("c:|id:", None, "id"),
("c:key|:", "key", None),
("c:key|id:x", None, None),
])
def test_i_can_unstr_concept(text, expected_key, expected_id):
k, i = core.utils.unstr_concept(text)