ExactConceptParser can now recognize concepts by their names
This commit is contained in:
@@ -96,7 +96,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.body == "do not resolve"
|
||||
assert evaluated.metadata.is_evaluated
|
||||
|
||||
def test_i_can_evaluate_property_using_do_not_resolve(self):
|
||||
def test_i_can_evaluate_variable_using_do_not_resolve(self):
|
||||
sheerka, context, concept = self.init_concepts(Concept("foo").def_var("a"), eval_body=True)
|
||||
concept.compiled["a"] = DoNotResolve("do not resolve")
|
||||
|
||||
@@ -181,7 +181,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert sheerka.objvalue(evaluated) == CB("a", None)
|
||||
assert evaluated.metadata.is_evaluated
|
||||
|
||||
def test_i_can_evaluate_concept_when_properties_reference_others_concepts(self):
|
||||
def test_i_can_evaluate_concept_when_variables_reference_others_concepts(self):
|
||||
sheerka, context, concept_a, concept = self.init_concepts(
|
||||
Concept("a"),
|
||||
Concept("foo", body="a").def_var("a", "a"),
|
||||
@@ -194,7 +194,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == concept_a
|
||||
|
||||
def test_i_can_evaluate_concept_when_properties_reference_others_concepts_2(self):
|
||||
def test_i_can_evaluate_concept_when_variables_reference_others_concepts_2(self):
|
||||
"""
|
||||
Same test,
|
||||
but the name of the property and the name of the concept are different
|
||||
@@ -208,7 +208,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == concept_a
|
||||
|
||||
def test_i_can_evaluate_concept_when_properties_reference_others_concepts_with_body(self):
|
||||
def test_i_can_evaluate_concept_when_variables_reference_others_concepts_with_body(self):
|
||||
sheerka, context, *concepts = self.init_concepts(
|
||||
Concept(name="a", body="1"),
|
||||
Concept(name="b", body="2"),
|
||||
@@ -221,7 +221,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == 3
|
||||
|
||||
def test_i_can_evaluate_concept_when_properties_is_a_concept(self):
|
||||
def test_i_can_evaluate_concept_when_variables_is_a_concept(self):
|
||||
sheerka, context, concept_a = self.init_concepts(Concept(name="a", body="'a'"), eval_body=True)
|
||||
|
||||
concept = Concept("foo").def_var("a")
|
||||
@@ -231,7 +231,29 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.get_value("a") == CB("a", "a")
|
||||
|
||||
def test_i_can_evaluate_when_property_asts_is_a_list(self):
|
||||
def test_i_can_evaluate_concept_when_variable_is_a_concept_token(self):
|
||||
sheerka, context, concept_a, concept_b = self.init_concepts(
|
||||
"a",
|
||||
Concept("b").def_var("var_name", "c:a:"), # c:a: means concept 'a'
|
||||
eval_body=True)
|
||||
|
||||
evaluated = sheerka.evaluate_concept(context, concept_b)
|
||||
|
||||
assert evaluated.key == concept_b.key
|
||||
assert evaluated.get_value("var_name") == concept_a
|
||||
|
||||
def test_i_can_evaluate_concept_when_body_isa_concept_token(self):
|
||||
sheerka, context, concept_a, concept_b = self.init_concepts(
|
||||
"a",
|
||||
Concept("b", body="c:a:"), # c:a: means concept 'a'
|
||||
eval_body=True)
|
||||
|
||||
evaluated = sheerka.evaluate_concept(context, concept_b)
|
||||
|
||||
assert evaluated.key == concept_b.key
|
||||
assert evaluated.body == concept_a
|
||||
|
||||
def test_i_can_evaluate_when_variable_asts_is_a_list(self):
|
||||
sheerka = self.get_sheerka()
|
||||
foo = Concept("foo", body="1")
|
||||
|
||||
@@ -270,7 +292,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == sheerka.test()
|
||||
|
||||
def test_properties_values_takes_precedence_over_the_outside_world(self):
|
||||
def test_variables_values_takes_precedence_over_the_outside_world(self):
|
||||
sheerka, context, concept_a, concept_b = self.init_concepts(
|
||||
Concept(name="a", body="'concept_a'"),
|
||||
Concept(name="b", body="'concept_b'"),
|
||||
@@ -294,7 +316,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == CB("b", "concept_b")
|
||||
|
||||
def test_properties_values_takes_precedence(self):
|
||||
def test_variables_values_takes_precedence(self):
|
||||
sheerka, context, concept_a, concept_b = self.init_concepts(
|
||||
Concept(name="a", body="'concept_a'"),
|
||||
Concept(name="b", body="'concept_b'"),
|
||||
@@ -306,7 +328,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.key == concept.key
|
||||
assert evaluated.body == 'prop_aconcept_b'
|
||||
|
||||
def test_i_can_reference_sub_property_of_a_property(self):
|
||||
def test_i_can_reference_sub_property_of_a_variable(self):
|
||||
sheerka, context, concept_a = self.init_concepts(
|
||||
Concept(name="concept_a").def_var("subProp", "'sub_a'"),
|
||||
eval_body=True
|
||||
@@ -316,7 +338,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
evaluated = sheerka.evaluate_concept(context, concept)
|
||||
assert evaluated == CB(concept.key, "sub_a")
|
||||
|
||||
def test_i_cannot_evaluate_concept_if_property_is_in_error(self):
|
||||
def test_i_cannot_evaluate_concept_if_variable_is_in_error(self):
|
||||
sheerka = self.get_sheerka()
|
||||
|
||||
concept = Concept(name="concept_a").def_var("subProp", "undef_concept")
|
||||
@@ -344,7 +366,7 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
sheerka, context, concept = self.init_concepts(
|
||||
Concept("foo", body="10", where=where_clause).def_var("a", "20"),
|
||||
)
|
||||
|
||||
|
||||
evaluated = sheerka.evaluate_concept(self.get_context(sheerka, False, True), concept)
|
||||
|
||||
if expected:
|
||||
|
||||
Reference in New Issue
Block a user