Example #1
0
 def test_recursive_descent_set_tocopy(self):
     path = "store..[?('price' in @)].price"
     original = copy.deepcopy(self.obj)
     result = querypath.set_(self.obj, path, self.value, True)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     self.assertEqual(original, self.obj)
     self.assertIsNot(result, self.obj)
Example #2
0
 def test_script_query_set_(self):
     path = "store.books.*[?(@.price<10)].title"
     result = querypath.set_(self.obj, path, self.value, False)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     for value in querypath.get(result,
                                "store.books.*[?(@.price>=10)].title"):
         self.assertNotEqual(value, self.value)
     self.assertIs(result, self.obj)
Example #3
0
 def test_script_query2_set_(self):
     path = "store.books.*[?('isbn' in @)].title"
     result = querypath.set_(self.obj, path, self.value, False)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     for value in querypath.get(result,
                                "store.books.*[?('isbn' not in @)].title"):
         self.assertNotEqual(value, self.value)
     self.assertIs(result, self.obj)
Example #4
0
 def test_script_query_set_tocopy(self):
     path = "store.books.*[?(@.price<10)].title"
     original = copy.deepcopy(self.obj)
     result = querypath.set_(self.obj, path, self.value, True)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     for value in querypath.get(result,
                                "store.books.*[?(@.price>=10)].title"):
         self.assertNotEqual(value, self.value)
     self.assertEqual(original, self.obj)
     self.assertIsNot(result, self.obj)
Example #5
0
 def test_script_query2_set_tocopy(self):
     path = "store.books.*[?('isbn' in @.__dict__)].title"
     original = copy.deepcopy(self.obj)
     result = querypath.set_(self.obj, path, self.value, True)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     for value in querypath.get(result,
                                "store.books.*[?('isbn' not in @.__dict__)].title"):
         self.assertNotEqual(value, self.value)
     self.assertEqual(original, self.obj)
     self.assertIsNot(result, self.obj)
Example #6
0
 def test_valid_set_(self):
     original = copy.deepcopy(self.obj)
     for path in (
         "store.bicycle.color",
         "store.books.0.author",
         "store.books.*.price",
         "store.books[:].price",
         "store.books[2:].price",
         "store.books[:-1].price",
         "store.books[::2].price",
         "store.bicycle.color|store.book[0].title",
         "store.books[(@.__len__()-1)].isbn",
         ):
         self.obj = copy.deepcopy(original)
         result = querypath.set_(self.obj, path, self.value, False)
         for value in querypath.get(result, path):
             self.assertEqual(value, self.value)
         self.assertIs(result, self.obj)
Example #7
0
def _merge(previous, items, tocopy):
    rvalue = previous
    for path, value in items if items is not None else tuple():
        rvalue = _querypath.set_(rvalue, path, value, tocopy)
    return rvalue
Example #8
0
 def test_recursive_descent_set_(self):
     path = "store..[?('price' in @)].price"
     result = querypath.set_(self.obj, path, self.value, False)
     for value in querypath.get(result, path):
         self.assertEqual(value, self.value)
     self.assertIs(result, self.obj)