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:
@@ -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)
|
||||
|
||||
@@ -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"),
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user