Пример #1
0
 def p_expression(p):
     """expression : json_path
                   | json_path FILTER_OP jp_object"""
     if len(p) == 2:
         p[0] = Expression(p[1])
     else:
         p[0] = Expression(p[1], p[2], p[3])
Пример #2
0
    def test_filter_str_and_repr(self):
        self.assertEqual(str(Filter("")), "[?()]")
        self.assertEqual(str(Filter([])), "[?([])]")
        self.assertEqual(str(Filter(Expression())), "[?()]")

        self.assertEqual(repr(Filter([])), "Filter([])")
        self.assertEqual(repr(Filter(Expression())),
                         "Filter(Expression(target='',op='',value=''))")
Пример #3
0
    def test_str_and_repr(self):
        self.assertEqual(str(Expression("", "", "")), "")
        self.assertEqual(
            str(Expression(Child(This(), Fields("name")), ">", 10)),
            "@.name>10")

        self.assertEqual(repr(Expression("", "", "")),
                         "Expression(target='',op='',value='')")
        self.assertEqual(
            repr(Expression("name", ">", 10)),
            "Expression(target='name',op='>',value=10)",
        )
Пример #4
0
 def test_find(self):
     data = {"value": 2, "other": 3}
     self.assertEqual(
         Expression(Child(This(), Fields("value")), "==", 2).find(data),
         True)
     self.assertEqual(
         Expression(Child(This(), Fields("other")), "<", 6).find(data),
         True)
     self.assertEqual(
         Expression(Child(This(), Fields("value")), None, 2).find(data),
         True)
     self.assertEqual(
         Expression(Child(This(), Fields("val")), ">=", 4).find({}), False)
Пример #5
0
 def test_find_with_none_expressions(self):
     data = {"data": 2}
     data_2 = [{"data": 2}, {"data": 4}]
     self.assertEqual(find(Filter(None), data), [data])
     self.assertEqual(find(Filter([]), data), [data])
     self.assertEqual(find(Filter({}), data), [data])
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     self.assertEqual(find(Filter(expr), data_2), [{"data": 2}])
Пример #6
0
 def test_equal(self):
     self.assertEqual(Expression("", "", ""), Expression("", "", ""))
     self.assertEqual(
         Expression(Child(This(), Fields("name")), "==", 4),
         Expression(Child(This(), Fields("name")), "==", 4),
     )
     self.assertNotEqual(Expression("", "", ""),
                         Expression(None, None, None))
Пример #7
0
 def test_find(self):
     data = [{"value": 2}, {"other": 3}, {"value": 1}]
     exp = Expression(Child(This(), Fields("value")), "<=", 2)
     self.assertEqual(find(Filter(exp), data), [{"value": 2}, {"value": 1}])
Пример #8
0
 def test_find_with_no_list(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     self.assertEqual(find(Filter(expr), {}), [])
Пример #9
0
 def test_find_with_exception(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     assert_with_error(self, Filter(expr), JPathNodeError)