def test_patch_2(self): a = {'a':{'b':[{'c': [{'d':[{'e': 1, 'f': 2}]}]}]}, 'b': 1} b = {'a':{'b':[{'c': [{'d':[{'e': 1}]}]}]}, 'b': 5} print " 1 ====================-----" print " 1 ---- ", a diff1 = dictdiff.diff(a, b) print diff1 dictdiff.patch(a, diff1) print " 1 ---- ", a print " 1 ====================-----" with self.assertRaises(KeyError): dictdiff.dot_lookup(a, 'a.b.[0].c.[0].d.[0].f') self.assertEqual(a['b'], 5)
def test_dot_lookup_2(self): """ make sure we cannot modify original object with return result of dot_lookup """ a = {'a': 1} res = dictdiff.dot_lookup(a, 'a') res = 2 self.assertEqual(a['a'], 1) a = {'a': [1, "h", {'b': 2}]} res = dictdiff.dot_lookup(a, 'a') res[0] = 2 self.assertEqual(a['a'][0], 1) res = dictdiff.dot_lookup(a, 'a.[2]') res['b'] = 3 self.assertEqual(a['a'][2]['b'], 2)
def test_dot_lookup_1(self): # simple change a = {'a':{'b':[{'c': [{'d':[{'e': 1, 'f': 2}]}]}]}, 'b': 1} res = dictdiff.dot_lookup(a, 'a') print res self.assertEqual(type(res), type({})) res = dictdiff.dot_lookup(a, 'a.b') self.assertEqual(type(res), type([])) res = dictdiff.dot_lookup(a, 'a.b.[0].c.[0].d.[0].f') print res self.assertEqual(res, 2) res = dictdiff.dot_lookup(a, 'a.b.[0].c.[0].d.[0]') print res self.assertEqual(res['e'], 1) self.assertEqual(res['f'], 2)
def test_dot_lookup_with_dot_key(self): a = {'a.b': 1, 'a': {'b': 2}} res = dictdiff.dot_lookup(a, 'a\.b') self.assertEqual(res, 1) res = dictdiff.dot_lookup(a, 'a.b') self.assertEqual(res, 2) a = {'a.b.c': 1, 'a': {'b':{'c': 2}}} res = dictdiff.dot_lookup(a, 'a\.b\.c') self.assertEqual(res, 1) res = dictdiff.dot_lookup(a, 'a.b.c') self.assertEqual(res, 2) a = {'a.b.c': 1, 'a': {'b':{'c': 2}}} parent, k, res, is_unary = dictdiff.dot_lookup_with_parent(a, 'a\.b\.c') self.assertEqual(res, 1) a = {'a.b': {'c': 1}} parent, k, res, is_unary = dictdiff.dot_lookup_with_parent(a, 'a\.b.c') self.assertEqual(res, 1) self.assertEqual(parent['c'], 1)