Beispiel #1
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))
Beispiel #2
0
    def test_node_equals(self):
        assert Root() == Root()
        assert This() == This()
        assert Index(2) == Index(2)
        assert Len() == Len()
        assert Sum() == Sum()
        assert Avg() == Avg()
        assert Sorted() == Sorted()
        assert And(Root(), Fields("name")) == And(Root(), Fields("name"))
        assert Or(Root(), Fields("name")) == Or(Root(), Fields("name"))

        assert Child(Root(), Fields("name")) == Child(Root(), Fields("name"))
        assert Where(Root(), Fields("name")) == Where(Root(), Fields("name"))
Beispiel #3
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)
Beispiel #4
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}])
Beispiel #5
0
 def test_repr_all_nodes(self):
     self.assertEqual(repr(Node(None, None)), "")
     self.assertEqual(repr(Child(Root(), Fields("name"))),
                      "Child(Root(), Fields('name'))")
     self.assertEqual(
         repr(Descendants(Root(), Fields("name"))),
         "Descendants(Root(), Fields('name'))",
     )
     self.assertEqual(repr(Union(Root(), Fields("name"))),
                      "Union(Root()|Fields('name'))")
Beispiel #6
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)",
        )
Beispiel #7
0
 def test_str_all_nodes(self):
     self.assertEqual(str(Node(None, None)), "")
     self.assertEqual(str(Child(Root(), Fields("name"))), "$.name")
     self.assertEqual(str(Where(Root(), Fields("name"))), "$ where name")
     self.assertEqual(str(Descendants(Root(), Fields("name"))), "$..name")
     self.assertEqual(str(Union(Root(), Fields("name"))), "$|name")
Beispiel #8
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}])
Beispiel #9
0
 def test_find_with_no_list(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     self.assertEqual(find(Filter(expr), {}), [])
Beispiel #10
0
 def test_find_with_exception(self):
     expr = Expression(Child(Root(), Fields("data")), "==", 2)
     assert_with_error(self, Filter(expr), JPathNodeError)
Beispiel #11
0
 def test_find(self):
     data = {"data": [{"value": 2}, {"other": 3}]}
     child = Child(Child(Root(), Fields("data")), AllIndex())
     where = Where(child, Fields("value"))
     self.assertEqual(find(where, data), [{"value": 2}])
Beispiel #12
0
 def test_find(self):
     child = Child(Root(), Fields("value"))
     self.assertEqual(find(child, {"value": 23}), [23])
     self.assertEqual(find(child, dict()), [])
     self.assertEqual(find(child, {"other": 23}), [])
Beispiel #13
0
 def p_child(p):
     """json_path : json_path '.' json_path
                  | json_path '[' index ']'"""
     p[0] = Child(p[1], p[3])