Implemented FunctionParser
This commit is contained in:
@@ -34,6 +34,11 @@ class TestAtomsParser(TestUsingMemoryBasedSheerka):
|
||||
|
||||
@pytest.mark.parametrize("text, expected", [
|
||||
("foo", ["foo"]),
|
||||
("c:foo:", [CN("foo", source="c:foo:")]),
|
||||
("c:|1001:", [CN("foo", source="c:|1001:")]),
|
||||
(" foo", ["foo"]),
|
||||
("foo ", ["foo"]),
|
||||
(" foo ", ["foo"]),
|
||||
("foo bar", ["foo", "bar"]),
|
||||
("foo bar twenties", ["foo", "bar", "twenties"]),
|
||||
("a plus b", [CN("plus", 0, 4)]),
|
||||
@@ -347,3 +352,27 @@ class TestAtomsParser(TestUsingMemoryBasedSheerka):
|
||||
|
||||
assert res.status
|
||||
assert lexer_nodes[0].concept.metadata.is_evaluated == expected_is_evaluated
|
||||
|
||||
def test_the_parser_always_return_a_new_instance_of_the_concept(self):
|
||||
concepts_map = {
|
||||
"foo": Concept("foo"),
|
||||
}
|
||||
|
||||
sheerka, context, parser = self.init_parser(concepts_map, create_new=True, use_sheerka=True)
|
||||
res = parser.parse(context, ParserInput("foo"))
|
||||
|
||||
assert res.status
|
||||
assert id(res.body.body[0].concept) != id(sheerka.get_by_name("foo"))
|
||||
|
||||
def test_i_can_only_parse_when_the_name_is_an_identifier(self):
|
||||
# to prove that I can distinguish string from actual concept name
|
||||
concepts_map = {
|
||||
"foo": Concept("foo"),
|
||||
}
|
||||
|
||||
sheerka, context, parser = self.init_parser(concepts_map, create_new=True, use_sheerka=True)
|
||||
res = parser.parse(context, ParserInput("'foo'"))
|
||||
|
||||
assert not res.status
|
||||
assert sheerka.isinstance(res.body, BuiltinConcepts.NOT_FOR_ME)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user