Implemented ConceptManager with concept creation, modification and deletion
This commit is contained in:
@@ -375,6 +375,26 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
assert evaluated.get_metadata().is_evaluated
|
||||
assert sheerka.objvalue(evaluated) == 2
|
||||
|
||||
def test_i_can_evaluate_a_concept_that_references_another_concept_twice(self):
|
||||
"""
|
||||
Test that a new instance of concept is return when the metadata refers to a concept
|
||||
:return:
|
||||
"""
|
||||
sheerka, context, predicate, foo = self.init_concepts(
|
||||
Concept("Sometimes True", body="in_context('a')"),
|
||||
Concept("foo", pre="c:Sometimes True:"))
|
||||
|
||||
foo1 = sheerka.new("foo")
|
||||
foo1 = sheerka.evaluate_concept(context, foo1) # 'a' is not in context, so it fails
|
||||
|
||||
context2 = self.get_context(sheerka)
|
||||
context2.add_to_protected_hints('a')
|
||||
foo2 = sheerka.new("foo")
|
||||
foo2 = sheerka.evaluate_concept(context2, foo2) # 'a' in context + new instance of 'Sometimes True'
|
||||
|
||||
assert sheerka.isinstance(foo1, BuiltinConcepts.CONDITION_FAILED)
|
||||
assert sheerka.isinstance(foo2, "foo")
|
||||
|
||||
def test_i_can_reference_sheerka(self):
|
||||
sheerka = self.get_sheerka()
|
||||
|
||||
@@ -624,8 +644,8 @@ class TestSheerkaEvaluateConcept(TestUsingMemoryBasedSheerka):
|
||||
eval_body=True
|
||||
)
|
||||
|
||||
sheerka.add_in_cache(one_str)
|
||||
sheerka.add_in_cache(one_digit)
|
||||
sheerka.test_only_add_in_cache(one_str)
|
||||
sheerka.test_only_add_in_cache(one_digit)
|
||||
|
||||
evaluated = sheerka.evaluate_concept(context, one_digit)
|
||||
assert evaluated.key == one_digit.key
|
||||
|
||||
Reference in New Issue
Block a user