Added first version of DebugManager. Implemented draft of the rule engine

This commit is contained in:
2020-11-20 13:41:45 +01:00
parent cd066881b4
commit 315f8ea09b
156 changed files with 8388 additions and 2852 deletions
+18 -15
View File
@@ -1,5 +1,5 @@
from core.builtin_concepts import BuiltinConcepts
from core.concept import Concept, ConceptParts
from core.concept import Concept, ConceptParts, get_concept_attrs
from tests.TestUsingFileBasedSheerka import TestUsingFileBasedSheerka
from tests.TestUsingMemoryBasedSheerka import TestUsingMemoryBasedSheerka
@@ -10,8 +10,10 @@ class TestSheerkaModifyConcept(TestUsingMemoryBasedSheerka):
def test_i_can_modify_a_concept(self):
sheerka, context, foo, bar = self.init_concepts("foo", "bar", create_new=True, cache_only=False)
assert get_concept_attrs(foo) == []
foo_instance = sheerka.new("foo")
foo_instance.metadata.body = "metadata value" # modify metadata
foo_instance.get_metadata().body = "metadata value" # modify metadata
foo_instance.def_var("var_name", "default value") # modify definition of variables
foo_instance.add_prop(BuiltinConcepts.ISA, bar) # modify property
foo_instance.set_value(ConceptParts.BODY, "body value") # modify value
@@ -20,30 +22,31 @@ class TestSheerkaModifyConcept(TestUsingMemoryBasedSheerka):
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.NEW_CONCEPT)
assert res.body.body.metadata.body == "metadata value"
assert res.body.body.metadata.variables == [("var_name", "default value")]
assert res.body.body.get_metadata().body == "metadata value"
assert res.body.body.get_metadata().variables == [("var_name", "default value")]
assert res.body.body.get_prop(BuiltinConcepts.ISA) == {bar}
assert res.body.body.body == "body value"
assert res.body.body.get_value("var_name") == "var value"
assert get_concept_attrs(foo) == ["var_name"]
# test that object
foo_from_sheerka = sheerka.get_by_key("foo")
assert foo_from_sheerka.metadata.body == "metadata value"
assert foo_from_sheerka.metadata.variables == [("var_name", "default value")]
assert foo_from_sheerka.get_metadata().body == "metadata value"
assert foo_from_sheerka.get_metadata().variables == [("var_name", "default value")]
assert foo_from_sheerka.get_prop(BuiltinConcepts.ISA) == {bar}
assert foo_from_sheerka.body == "body value"
assert foo_from_sheerka.get_value("var_name") == "var value"
# other caches are also updated
assert sheerka.get_by_id(foo.id).metadata.body == "metadata value"
assert sheerka.get_by_name(foo.name).metadata.body == "metadata value"
assert sheerka.get_by_hash(foo_instance.get_definition_hash()).metadata.body == "metadata value"
assert sheerka.get_by_id(foo.id).get_metadata().body == "metadata value"
assert sheerka.get_by_name(foo.name).get_metadata().body == "metadata value"
assert sheerka.get_by_hash(foo_instance.get_definition_hash()).get_metadata().body == "metadata value"
# sdp can be updated
sheerka.cache_manager.commit(context)
from_sdp = sheerka.sdp.get(sheerka.CONCEPTS_BY_ID_ENTRY, foo.id)
assert from_sdp.metadata.body == "metadata value"
assert from_sdp.metadata.variables == [("var_name", "default value")]
assert from_sdp.get_metadata().body == "metadata value"
assert from_sdp.get_metadata().variables == [("var_name", "default value")]
assert from_sdp.get_prop(BuiltinConcepts.ISA) == {bar}
assert from_sdp.body == "body value"
assert from_sdp.get_value("var_name") == "var value"
@@ -81,16 +84,16 @@ class TestSheerkaModifyConcept(TestUsingMemoryBasedSheerka):
Concept("foo", body="2"), create_new=True)
foo2_instance = sheerka.new("foo")[1]
foo2_instance.metadata.body = "value"
foo2_instance.get_metadata().body = "value"
res = sheerka.modify_concept(context, foo2_instance)
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.NEW_CONCEPT)
assert res.body.body.metadata.body == "value"
assert res.body.body.get_metadata().body == "value"
foo_from_sheerka = sheerka.new("foo")
assert foo_from_sheerka[0].metadata.body == "1"
assert foo_from_sheerka[1].metadata.body == "value"
assert foo_from_sheerka[0].get_metadata().body == "1"
assert foo_from_sheerka[1].get_metadata().body == "value"
def test_i_can_get_and_set_attribute(self):
sheerka, context = self.init_concepts()