Added simple form of concept composition
This commit is contained in:
+101
-13
@@ -401,18 +401,6 @@ def test_i_can_eval_bnf_definitions_from_separate_instances():
|
||||
assert res[0].value.props["a"] == Property("a", sheerka.new(concept_a.key, body="one two").init_key())
|
||||
|
||||
|
||||
def test_i_can_eval_a_mix_with_bnf_and_python():
|
||||
sheerka = get_sheerka()
|
||||
|
||||
sheerka.evaluate_user_input("def concept one as 1")
|
||||
sheerka.evaluate_user_input("def concept twenties from bnf 'twenty' one as 20 + one")
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one + 1")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body == 22
|
||||
|
||||
|
||||
@pytest.mark.parametrize("desc, definitions", [
|
||||
("Simple form", [
|
||||
"def concept one as 1",
|
||||
@@ -450,16 +438,116 @@ def test_i_can_mix_concept_with_python_to_define_numbers(desc, definitions):
|
||||
assert res[0].status
|
||||
assert res[0].body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one + one")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one + twenty two")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body == 43
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one + one")
|
||||
res = sheerka.evaluate_user_input("1 + twenty one")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body == 22
|
||||
|
||||
# res = sheerka.evaluate_user_input("1 + 1 + twenty one")
|
||||
# assert len(res) == 1
|
||||
# assert res[0].status
|
||||
# assert res[0].body == 23
|
||||
|
||||
|
||||
def test_i_can_mix_concept_of_concept():
|
||||
sheerka = get_sheerka()
|
||||
|
||||
definitions = [
|
||||
"def concept one as 1",
|
||||
"def concept two as 2",
|
||||
"def concept twenties from bnf 'twenty' (one|two)=unit as 20 + unit",
|
||||
"def concept a plus b as a + b"
|
||||
]
|
||||
|
||||
for definition in definitions:
|
||||
sheerka.evaluate_user_input(definition)
|
||||
|
||||
# res = sheerka.evaluate_user_input("1 plus 2")
|
||||
# assert len(res) == 1
|
||||
# assert res[0].status
|
||||
# assert res[0].body.body == 3
|
||||
#
|
||||
# res = sheerka.evaluate_user_input("1 plus one")
|
||||
# assert len(res) == 1
|
||||
# assert res[0].status
|
||||
# assert res[0].body.body == 2
|
||||
|
||||
# res = sheerka.evaluate_user_input("1 + 1 plus 1")
|
||||
# assert len(res) == 1
|
||||
# assert res[0].status
|
||||
# assert res[0].body.body == 3
|
||||
|
||||
res = sheerka.evaluate_user_input("1 plus twenty one")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("one plus 1")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 2
|
||||
|
||||
res = sheerka.evaluate_user_input("one plus two")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 3
|
||||
|
||||
res = sheerka.evaluate_user_input("one plus twenty one")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one plus 1")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one plus one")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 22
|
||||
|
||||
res = sheerka.evaluate_user_input("twenty one plus twenty two")
|
||||
assert len(res) == 1
|
||||
assert res[0].status
|
||||
assert res[0].body.body == 43
|
||||
|
||||
|
||||
# def test_i_can_evaluate_concept_of_concept_when_multiple_choices():
|
||||
# sheerka = get_sheerka()
|
||||
#
|
||||
# definitions = [
|
||||
# "def concept little a where a",
|
||||
# "def concept blue a where a",
|
||||
# "def concept little blue a where a",
|
||||
# "def concept house"
|
||||
# ]
|
||||
#
|
||||
# for definition in definitions:
|
||||
# sheerka.evaluate_user_input(definition)
|
||||
#
|
||||
# ### CAUTION ####
|
||||
# # this test cannot work !!
|
||||
# # it is just to hint the result that I would like to achieve
|
||||
#
|
||||
# res = sheerka.evaluate_user_input("little blue house")
|
||||
# assert len(res) == 2
|
||||
# assert res[0].status
|
||||
# assert res[0].body == "little(blue(house))"
|
||||
#
|
||||
# assert res[1].status
|
||||
# assert res[1].body == "little blue(house)"
|
||||
|
||||
|
||||
def test_i_can_say_that_a_concept_isa_another_concept():
|
||||
sheerka = get_sheerka()
|
||||
|
||||
Reference in New Issue
Block a user