Fixed #131 : Implement ExprToConditions

Fixed #130 : ArithmeticOperatorParser
Fixed #129 : python_wrapper : create_namespace
Fixed #128 : ExpressionParser: Cannot parse func(x) infixed concept 'xxx'
This commit is contained in:
2021-10-13 16:06:57 +02:00
parent a61a1c0d2b
commit 89e1f20975
76 changed files with 5867 additions and 3206 deletions
+26 -7
View File
@@ -96,17 +96,17 @@ class TestSheerkaQueryManager(TestUsingMemoryBasedSheerka):
Concept("foo", body="b").auto_init(),
B("a31", "a32")]
assert sheerka.filter_objects(context, lst, "self.prop1 == 'a21'") == [lst[1]]
assert sheerka.filter_objects(context, lst, "self.prop2 >= 1") == [lst[0], lst[1], lst[2]]
assert sheerka.filter_objects(context, lst, "get_type(self) == 'foo' ") == [lst[4], lst[6]]
assert sheerka.filter_objects(context, lst, "self.fake_prop1 == 'a21' ") == [lst[5]]
assert sheerka.filter_objects(context, lst, "hasattr(self, 'fake_prop1')") == [lst[5], lst[7]]
assert sheerka.filter_objects(context, lst, predicate="self.prop1 == 'a21'") == [lst[1]]
assert sheerka.filter_objects(context, lst, predicate="self.prop2 >= 1") == [lst[0], lst[1], lst[2]]
assert sheerka.filter_objects(context, lst, predicate="get_type(self) == 'foo' ") == [lst[4], lst[6]]
assert sheerka.filter_objects(context, lst, predicate="self.fake_prop1 == 'a21' ") == [lst[5]]
assert sheerka.filter_objects(context, lst, predicate="hasattr(self, 'fake_prop1')") == [lst[5], lst[7]]
def test_i_can_filter_object_using_predicate_and_sheerka_objects(self):
sheerka, context, foo, bar = self.init_concepts("foo", "bar")
lst = [foo, bar, A("a21", 3.14)]
assert sheerka.filter_objects(context, lst, "self == bar") == [lst[1]]
assert sheerka.filter_objects(context, lst, predicate="self == bar") == [lst[1]]
def test_i_can_filter_objects_using_concept(self):
sheerka, context, foo, bar, isa = self.init_concepts(
@@ -116,7 +116,7 @@ class TestSheerkaQueryManager(TestUsingMemoryBasedSheerka):
create_new=True)
lst = [foo, A("a21", 3.14), bar, B("a21", 3.14)]
assert sheerka.filter_objects(context, lst, "self is a concept") == [foo, bar]
assert sheerka.filter_objects(context, lst, predicate="self is a concept") == [foo, bar]
def test_i_can_filter_objects_when_no_kwargs_and_no_predicate(self):
sheerka, context, foo, bar = self.init_concepts("foo", "bar")
@@ -124,6 +124,25 @@ class TestSheerkaQueryManager(TestUsingMemoryBasedSheerka):
assert sheerka.filter_objects(context, lst) == lst
def test_i_can_filter_objects_after_applying_a_mapping(self):
sheerka, context = self.init_test().unpack()
lst = [A("a11", 10),
A("a21", 3.14)]
res = sheerka.filter_objects(context, lst, mapping=lambda o: o.prop1, predicate="self[1] == '1'")
assert res == [A("a11", 10)]
def test_i_can_filter_objects_using_concept_after_applying_a_mapping(self):
sheerka, context, foo, bar, isa = self.init_concepts(
"foo",
"bar",
Concept("x is a concept", body="isinstance(x, Concept)", pre="is_question()").def_var("x"),
create_new=True)
lst = [foo, A(foo, 3.14), bar, A(bar, 3.14)]
res = sheerka.filter_objects(context, lst, mapping=lambda o: o.prop1, predicate="self is a concept")
assert res == [lst[1], lst[3]]
def test_i_must_select_object_property_using_string(self):
sheerka, context = self.init_test().unpack()