Exemplo n.º 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])
Exemplo n.º 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=''))")
Exemplo n.º 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)",
        )
Exemplo n.º 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)
Exemplo n.º 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}])
Exemplo n.º 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))
Exemplo n.º 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}])
Exemplo n.º 8
0
 def test_find_with_no_list(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     self.assertEqual(find(Filter(expr), {}), [])
Exemplo n.º 9
0
 def test_find_with_exception(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     assert_with_error(self, Filter(expr), JPathNodeError)