Fixed #43 : BnfNodeParser: I can recognize when multiple level of ISA

Fixed #44 : BnfNodeParser: I must simplify results when multiple levels of ISA
Fixed #45 : Dynamic variables cannot be parsed at restart
Fixed #46 : Concepts variables values are transformed into list by default
Fixed #47 : SheerkaAdmin. Add min, max, mean time when restoring files
This commit is contained in:
2021-03-08 17:35:30 +01:00
parent bd8e027827
commit 031bd0274e
20 changed files with 303 additions and 33 deletions
+49
View File
@@ -798,6 +798,34 @@ class TestSheerkaConceptManager(TestUsingMemoryBasedSheerka):
assert sheerka.get_attr(foo, prop) == bar
def test_i_setting_twice_the_same_property_creates_a_list(self):
sheerka, context = self.init_concepts()
foo = Concept("foo")
prop = Concept("property")
bar = Concept("bar")
baz = Concept("baz")
qux = Concept("qux")
res = sheerka.set_attr(foo, prop, bar)
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.SUCCESS)
assert sheerka.get_attr(foo, prop) == bar
res = sheerka.set_attr(foo, prop, bar) # again, same value as no effect
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.SUCCESS)
assert sheerka.get_attr(foo, prop) == bar
res = sheerka.set_attr(foo, prop, baz)
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.SUCCESS)
assert sheerka.get_attr(foo, prop) == [bar, baz]
res = sheerka.set_attr(foo, prop, qux)
assert res.status
assert sheerka.isinstance(res.body, BuiltinConcepts.SUCCESS)
assert sheerka.get_attr(foo, prop) == [bar, baz, qux]
def test_i_cannot_remove_a_concept_which_has_reference(self):
sheerka, context, one, twenty_one = self.init_test().with_concepts(
Concept("one"),
@@ -1067,6 +1095,27 @@ class TestSheerkaConceptManager(TestUsingMemoryBasedSheerka):
'hundred': ['1005', '1007'],
}
def test_i_can_resolve_when_concepts_have_multiple_levels_of_sets(self):
sheerka, context, adjective, color, red, qualified_table = self.init_concepts(
"adjective",
"color",
"red",
Concept("qualified table", definition="adjective 'table'"),
)
sheerka.set_isa(context, color, adjective)
sheerka.set_isa(context, red, color)
by_first_token = compute_concepts_by_first_token(context, [adjective, color, red, qualified_table]).body
resolved_ret_val = resolve_concepts_by_first_keyword(context, by_first_token)
assert resolved_ret_val.status
assert resolved_ret_val.body == {
'adjective': ['1001'],
'color': ['1002'],
'red': ['1003', '1004'],
}
def test_concepts_are_defined_once(self):
sheerka = self.get_sheerka()
context = self.get_context(sheerka)
+8
View File
@@ -120,6 +120,14 @@ class TestSheerkaUsingMemoryBasedSheerka(TestUsingMemoryBasedSheerka):
assert new.get_value("a") == 10
assert new.get_value("b") == "value"
def test_i_can_instantiate_concepts_when_variables_are_defined_in_constructor(self):
sheerka, context, foo = self.init_test().with_concepts(
Concept(name="foo", variables=[("x", "default value for x"), ("y", None)]),
create_new=True).unpack()
new = sheerka.new(foo.key)
assert new.values() == {"x": NotInit, "y": NotInit} # default values are not used ?
def test_i_can_instantiate_multiple_when_same_key(self):
sheerka, context, *concepts = self.init_test().with_concepts(
Concept("foo", body="foo1"),
+3 -1
View File
@@ -386,8 +386,10 @@ def test_i_can_deep_copy_a_concept():
desc="concept2_desc",
id="concept2_ids",
props={"prop_name": concept1},
variables=[("var1", "default_value1"), ("var2", "default_value2")],
variables=[("var21", "default_value21"), ("var22", "default_value22")],
bound_body="var1")
concept2.set_value("var21", "default_value21")
concept2.set_value("var22", "default_value22")
concept = Concept(name="my_name",
is_builtin=True,