@@ -369,58 +369,85 @@ def test_issue40(self):
369
369
patch = jsonpatch .make_patch (src , dest )
370
370
371
371
372
- # class OptimizationTests(unittest.TestCase):
373
- # def test_use_replace_instead_of_remove_add(self):
374
- # src = {'foo': [1, 2, 3]}
375
- # dst = {'foo': [3, 2, 3]}
376
- # patch = list(jsonpatch.make_patch(src, dst))
377
- # self.assertEqual(len(patch), 1)
378
- # self.assertEqual(patch[0]['op'], 'replace')
379
- # res = jsonpatch.apply_patch(src, patch)
380
- # self.assertEqual(res, dst)
381
-
382
- # def test_use_replace_instead_of_remove_add_nested(self):
383
- # src = {'foo': [{'bar': 1, 'baz': 2}, {'bar': 2, 'baz': 3}]}
384
- # dst = {'foo': [{'bar': 1}, {'bar': 2, 'baz': 3}]}
385
- # patch = list(jsonpatch.make_patch(src, dst))
386
- # self.assertEqual(len(patch), 1)
387
- # self.assertEqual(patch[0]['op'], 'replace')
388
- # res = jsonpatch.apply_patch(src, patch)
389
- # self.assertEqual(res, dst)
390
-
391
- # def test_use_move_instead_of_remove_add(self):
392
- # src = {'foo': [4, 1, 2, 3]}
393
- # dst = {'foo': [1, 2, 3, 4]}
394
- # patch = list(jsonpatch.make_patch(src, dst))
395
- # self.assertEqual(len(patch), 1)
396
- # self.assertEqual(patch[0]['op'], 'move')
397
- # res = jsonpatch.apply_patch(src, patch)
398
- # self.assertEqual(res, dst)
399
-
400
- # def test_use_move_instead_of_add_remove(self):
401
- # src = {'foo': [1, 2, 3]}
402
- # dst = {'foo': [3, 1, 2]}
403
- # patch = list(jsonpatch.make_patch(src, dst))
404
- # self.assertEqual(len(patch), 1)
405
- # self.assertEqual(patch[0]['op'], 'move')
406
- # res = jsonpatch.apply_patch(src, patch)
407
- # self.assertEqual(res, dst)
408
-
409
- # def test_minimal_patch(self):
410
- # """ Test whether a minimal patch is created, see #36 """
411
- # src = [{"foo": 1, "bar": 2}]
412
- # dst = [{"foo": 2, "bar": 2}]
413
- # patch = jsonpatch.make_patch(src, dst)
414
-
415
- # exp = [
416
- # {
417
- # "path": "/0/foo",
418
- # "value": 2,
419
- # "op": "replace"
420
- # }
421
- # ]
422
-
423
- # self.assertEqual(patch.patch, exp)
372
+ class OptimizationTests (unittest .TestCase ):
373
+ def test_use_replace_instead_of_remove_add (self ):
374
+ src = {'foo' : [1 , 2 , 3 ]}
375
+ dst = {'foo' : [3 , 2 , 3 ]}
376
+ patch = list (jsonpatch .make_patch (src , dst ))
377
+ self .assertEqual (len (patch ), 1 )
378
+ self .assertEqual (patch [0 ]['op' ], 'replace' )
379
+ res = jsonpatch .apply_patch (src , patch )
380
+ self .assertEqual (res , dst )
381
+
382
+ def test_use_replace_instead_of_remove_add_nested (self ):
383
+ src = {'foo' : [{'bar' : 1 , 'baz' : 2 }, {'bar' : 2 , 'baz' : 3 }]}
384
+ dst = {'foo' : [{'bar' : 1 }, {'bar' : 2 , 'baz' : 3 }]}
385
+ patch = list (jsonpatch .make_patch (src , dst ))
386
+ self .assertEqual (len (patch ), 1 )
387
+ self .assertEqual (patch [0 ]['op' ], 'replace' )
388
+ res = jsonpatch .apply_patch (src , patch )
389
+ self .assertEqual (res , dst )
390
+
391
+ def test_use_move_instead_of_remove_add (self ):
392
+ src = {'foo' : [4 , 1 , 2 , 3 ]}
393
+ dst = {'foo' : [1 , 2 , 3 , 4 ]}
394
+ patch = list (jsonpatch .make_patch (src , dst ))
395
+ self .assertEqual (len (patch ), 1 )
396
+ self .assertEqual (patch [0 ]['op' ], 'move' )
397
+ res = jsonpatch .apply_patch (src , patch )
398
+ self .assertEqual (res , dst )
399
+
400
+ def test_use_move_instead_of_add_remove (self ):
401
+ src = {'foo' : [1 , 2 , 3 ]}
402
+ dst = {'foo' : [3 , 1 , 2 ]}
403
+ patch = list (jsonpatch .make_patch (src , dst ))
404
+ self .assertEqual (len (patch ), 1 )
405
+ self .assertEqual (patch [0 ]['op' ], 'move' )
406
+ res = jsonpatch .apply_patch (src , patch )
407
+ self .assertEqual (res , dst )
408
+
409
+ def test_minimal_patch (self ):
410
+ """ Test whether a minimal patch is created, see #36 """
411
+ src = [{'a' : 1 , 'foo' : {'b' : 2 , 'd' : 5 }}]
412
+ dst = [{'a' : 1 , 'foo' : {'b' : 3 , 'd' : 6 }}]
413
+ patch = jsonpatch .make_patch (src , dst )
414
+ self .assertEqual (patch .apply (src ), dst )
415
+
416
+ src = [{'a' : 1 , 'b' : 2 , 'd' : 5 }]
417
+ dst = [{'a' : 1 , 'c' : 3 , 'd' : 5 }]
418
+ patch = jsonpatch .make_patch (src , dst )
419
+ self .assertEqual (patch .apply (src ), dst )
420
+
421
+ src = [{'a' : 1 , 'b' : 2 , 'd' : 5 }]
422
+ dst = [{'d' : 6 }]
423
+ patch = jsonpatch .make_patch (src , dst )
424
+ self .assertEqual (patch .apply (src ), dst )
425
+
426
+ src = [{'a' : 1 }, {'b' : 2 }]
427
+ dst = [{'a' : 1 , 'b' : 2 }]
428
+ patch = jsonpatch .make_patch (src , dst )
429
+ self .assertEqual (patch .apply (src ), dst )
430
+
431
+ src = [{"a" : 1 , "b" : 2 }]
432
+ dst = [{"b" : 2 , "c" : 2 }]
433
+ exp = [{u'path' : u'/0' , u'value' : {u'c' : 2 , u'b' : 2 }, u'op' : u'replace' }]
434
+ patch = jsonpatch .make_patch (src , dst )
435
+ self .assertEqual (patch .patch , exp )
436
+
437
+ src = [{"foo" : 1 , "bar" : 2 }]
438
+ dst = [{"foo" : 2 , "bar" : 2 }]
439
+
440
+ patch = jsonpatch .make_patch (src , dst )
441
+
442
+ exp = [
443
+ {
444
+ "path" : "/0/foo" ,
445
+ "value" : 2 ,
446
+ "op" : "replace"
447
+ }
448
+ ]
449
+
450
+ self .assertEqual (patch .patch , exp )
424
451
425
452
426
453
class InvalidInputTests (unittest .TestCase ):
@@ -489,7 +516,7 @@ def get_suite():
489
516
suite .addTest (unittest .makeSuite (MakePatchTestCase ))
490
517
suite .addTest (unittest .makeSuite (InvalidInputTests ))
491
518
suite .addTest (unittest .makeSuite (ConflictTests ))
492
- # suite.addTest(unittest.makeSuite(OptimizationTests))
519
+ suite .addTest (unittest .makeSuite (OptimizationTests ))
493
520
return suite
494
521
495
522
0 commit comments