Fixed #9 : I can parse 'def concept'
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
import pytest
|
||||
|
||||
from base import BaseParserTest
|
||||
from core.BuiltinConcepts import BuiltinConcepts
|
||||
from core.error import ErrorContext
|
||||
from evaluators.RecognizeDefConcept import RecognizeDefConcept
|
||||
from helpers import _rv, _rvf
|
||||
from parsers.ConceptDefinitionParser import ConceptDefinition
|
||||
from parsers.ParserInput import ParserInput
|
||||
|
||||
|
||||
class TestRecognizeDefConcept(BaseParserTest):
|
||||
@pytest.fixture()
|
||||
def evaluator(self, sheerka):
|
||||
return sheerka.evaluators[RecognizeDefConcept.NAME]
|
||||
|
||||
def test_i_can_match(self, sheerka, context, evaluator):
|
||||
ret_val = _rv(sheerka.newn(BuiltinConcepts.PARSER_INPUT, pi=ParserInput("def concept")))
|
||||
assert evaluator.matches(context, ret_val).status is True
|
||||
|
||||
ret_val = _rv(sheerka.newn(BuiltinConcepts.PARSER_INPUT, pi=ParserInput("def")))
|
||||
assert evaluator.matches(context, ret_val).status is False
|
||||
|
||||
ret_val = _rv(sheerka.newn(BuiltinConcepts.PARSER_INPUT, pi=ParserInput("other text")))
|
||||
assert evaluator.matches(context, ret_val).status is False
|
||||
|
||||
ret_val = _rv(sheerka.newn(BuiltinConcepts.UNKNOWN_CONCEPT)) # it responds to USER_INPUT only
|
||||
assert evaluator.matches(context, ret_val).status is False
|
||||
|
||||
ret_val = _rvf(sheerka.newn(BuiltinConcepts.PARSER_INPUT, pi=ParserInput("def concept"))) # status is false
|
||||
assert evaluator.matches(context, ret_val).status is False
|
||||
|
||||
def test_i_can_recognize_a_def_concept(self, context, evaluator):
|
||||
ret_val_input = self.get_parser_input(context, "def concept one as 1")
|
||||
res = evaluator.eval(context, None, ret_val_input)
|
||||
|
||||
assert len(res.new) == 1
|
||||
assert res.new[0].status
|
||||
assert isinstance(res.new[0].value, ConceptDefinition)
|
||||
|
||||
assert res.eaten == [ret_val_input]
|
||||
|
||||
def test_i_can_manage_when_def_concept_fails(self, context, evaluator):
|
||||
ret_val_input = self.get_parser_input(context, "def concept")
|
||||
res = evaluator.eval(context, None, ret_val_input)
|
||||
|
||||
assert len(res.new) == 1
|
||||
assert not res.new[0].status
|
||||
assert isinstance(res.new[0].value, ErrorContext)
|
||||
|
||||
assert res.eaten == []
|
||||
Reference in New Issue
Block a user