Concept validation must be requested

This commit is contained in:
2020-03-09 12:23:53 +01:00
parent ef31a4807d
commit 1bde97b5e3
27 changed files with 346 additions and 280 deletions
+23 -18
View File
@@ -36,7 +36,7 @@ class TestSheerkaNonReg(TestUsingFileBasedSheerka):
assert res[0].value == concept
# sanity check
evaluated = sheerka.evaluate_concept(self.get_context(), res[0].value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), res[0].value)
assert evaluated == simplec("one", 1)
def test_i_can_recognize_concept_with_concept_body(self):
@@ -53,7 +53,7 @@ class TestSheerkaNonReg(TestUsingFileBasedSheerka):
assert return_value == concept_un
# sanity check
evaluated = sheerka.evaluate_concept(self.get_context(), return_value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), return_value)
assert evaluated == simplec("un", simplec("one", None))
def test_i_can_recognize_concept_with_no_body(self):
@@ -194,7 +194,7 @@ as:
assert return_value.metadata.props[0] == ('a', "foo")
# sanity check
evaluated = sheerka.evaluate_concept(self.get_context(), return_value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), return_value)
assert evaluated.props["a"].value == concept_foo
def test_i_can_recognize_concept_with_variable_and_python_as_body(self):
@@ -208,7 +208,7 @@ as:
assert sheerka.isinstance(res[0].value, hello_a)
# sanity check
evaluated = sheerka.evaluate_concept(self.get_context(), res[0].value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), res[0].value)
assert evaluated.body == "hello foo"
assert evaluated.metadata.is_evaluated
assert evaluated.props["a"].value == simplec("foo", "foo")
@@ -323,7 +323,7 @@ as:
assert sheerka.isinstance(return_value, concept_b)
# sanity check
evaluated = sheerka.evaluate_concept(self.get_context(), return_value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), return_value)
assert evaluated.body == "one three"
assert evaluated.metadata.is_evaluated
assert evaluated.props["a"] == Property("a", sheerka.new(concept_a.key, body="one").init_key())
@@ -355,7 +355,7 @@ as:
assert res[0].status
assert sheerka.isinstance(res[0].value, concept_b)
evaluated = sheerka.evaluate_concept(self.get_context(), res[0].value, True)
evaluated = sheerka.evaluate_concept(self.get_context(eval_body=True), res[0].value)
assert evaluated.body == "one two three"
assert evaluated.props["a"] == Property("a", sheerka.new(concept_a.key, body="one two").init_key())
@@ -406,7 +406,7 @@ as:
assert len(res) == 1
assert res[0].status
assert sheerka.isinstance(res[0].body, "twenties")
assert sheerka.evaluate_concept(self.get_context(), res[0].body, True).body == 21
assert sheerka.evaluate_concept(self.get_context(eval_body=True), res[0].body).body == 21
res = sheerka.evaluate_user_input("twenty one + 1")
assert len(res) == 1
@@ -450,7 +450,7 @@ as:
assert len(res) == 1
assert res[0].status
assert sheerka.isinstance(res[0].body, "twenties")
assert sheerka.evaluate_concept(self.get_context(), res[0].value, True).body == 21
assert sheerka.evaluate_concept(self.get_context(eval_body=True), res[0].value).body == 21
res = sheerka.evaluate_user_input("twenty one + 1")
assert len(res) == 1
@@ -695,8 +695,15 @@ as:
res = sheerka.evaluate_user_input("eval twenty two")
assert len(res) == 1 and res[0].status and res[0].body == 22
res = sheerka.evaluate_user_input("twenty three")
assert len(res) == 1
assert not res[0].status
assert sheerka.isinstance(res[0].body, BuiltinConcepts.WHERE_CLAUSE_FAILED)
res = sheerka.evaluate_user_input("eval twenty three")
assert len(res) > 1
assert len(res) == 1
assert not res[0].status
assert sheerka.isinstance(res[0].body, BuiltinConcepts.WHERE_CLAUSE_FAILED)
# def test_i_can_detect_when_only_one_evaluator_is_in_error(self):
# sheerka = self.get_sheerka()
@@ -722,10 +729,7 @@ as:
assert res[0].status
assert res[0].body == 2
@pytest.mark.xfail
def test_i_can_evaluate_bnf_concept_with_where_clause(self):
sheerka = self.get_sheerka()
sheerka.evaluate_user_input("def concept a from bnf 'bar' | 'baz'")
@@ -741,7 +745,7 @@ as:
res = sheerka.evaluate_user_input("eval foo bar")
assert len(res) == 1
assert res[0].status
assert res[0].body.body == "hello world"
assert res[0].body == "hello world"
res = sheerka.evaluate_user_input("foo baz")
assert len(res) == 1
@@ -749,17 +753,18 @@ as:
assert sheerka.isinstance(res[0].body, BuiltinConcepts.WHERE_CLAUSE_FAILED)
res = sheerka.evaluate_user_input("eval foo baz")
assert len(res) > 1
assert len(res) == 1
assert not res[0].status
assert sheerka.isinstance(res[0].body, BuiltinConcepts.WHERE_CLAUSE_FAILED)
# The following test fails
# the Where clause is evaluated while it should not
res = sheerka.evaluate_user_input("foobar")
assert len(res) == 1
assert res[0].status
res = sheerka.evaluate_user_input("eval foobar")
assert len(res) > 1 # error
assert res[0].status
assert len(res) == 1 # error
assert not res[0].status
assert sheerka.isinstance(res[0].body, BuiltinConcepts.WHERE_CLAUSE_FAILED)
def test_i_can_say_than_bnf_concept_isa_another_concept(self):
sheerka = self.get_sheerka()