Exemplo n.º 1
0
 def test_no_differences(self):
     map1 = {'a': 1}
     diff_obj = diff_mapping(map1, map1)
     diffs = [
         MappingDiffItem(unchanged, 'a', unchanged, 1)]
     expected_diff = Diff(dict, diffs)
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map1)
Exemplo n.º 2
0
 def test_common_keys_values_different_types(self):
     map1 = {'a': (1, 2)}
     map2 = {'a': '1, 2'}
     diff_obj = diff_mapping(map1, map2)
     diffs = [
         MappingDiffItem(unchanged, 'a', remove, (1, 2)),
         MappingDiffItem(unchanged, 'a', insert, '1, 2')]
     expected_diff = Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 3
0
 def test_common_keys_values_not_diffable(self):
     map1 = {'a': 1}
     map2 = {'a': 2}
     diff_obj = diff_mapping(map1, map2)
     diffs = [
         MappingDiffItem(unchanged, 'a', remove, 1),
         MappingDiffItem(unchanged, 'a', insert, 2)]
     expected_diff = Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 4
0
 def test_mostly_inserts(self):
     map1 = {'c': 3}
     map2 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
     diff_obj = diff_mapping(map1, map2)
     diffs = [
         MappingDiffItem(unchanged, 'c', unchanged, 3),
         MappingDiffItem(insert, 'a', insert, 1),
         MappingDiffItem(insert, 'b', insert, 2),
         MappingDiffItem(insert, 'd', insert, 4)]
     expected_diff = Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs[1:])]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 5
0
 def test_context_limit_is_adjustable(self):
     map1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
     map2 = {'a': 2, 'b': 2, 'c': 3, 'e': 4}
     diff_obj = diff_mapping(map1, map2, context_limit=1)
     diffs = [
         MappingDiffItem(remove, 'd', remove, 4),
         MappingDiffItem(unchanged, 'a', remove, 1),
         MappingDiffItem(unchanged, 'a', insert, 2),
         MappingDiffItem(unchanged, 'c', unchanged, 3),
         MappingDiffItem(unchanged, 'b', unchanged, 2),
         MappingDiffItem(insert, 'e', insert, 4)]
     expected_diff = Diff(dict, diffs, context_limit=1)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs[:3]),
         expected_diff.ContextBlock(dict, diffs[5:])]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 6
0
 def test_common_keys_recursive_diff(self):
     map1 = {'a': {'b': 1}}
     map2 = {'a': {'b': 2}}
     diff_obj = diff_mapping(map1, map2)
     nested_diffs = [
         MappingDiffItem(unchanged, 'b', remove, 1),
         MappingDiffItem(unchanged, 'b', insert, 2)]
     nested_diff = Diff(dict, nested_diffs, depth=1)
     nested_diff.context_blocks = [
         nested_diff.ContextBlock(dict, nested_diffs, depth=1)]
     diffs = [
         MappingDiffItem(
             unchanged, 'a', changed, nested_diff)]
     expected_diff = Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 7
0
 def test_single_char_edge_case_in_dict(self):
     map1 = {1: 'a'}
     map2 = {1: 'b'}
     diff_obj = diff_mapping(map1, map2)
     nested_diffs = [
         DiffItem(remove, 'a', (0, 1, 0, 0)),
         DiffItem(insert, 'b', (1, 1, 0, 1))
     ]
     nested_diff = Diff(str, nested_diffs, depth=1)
     nested_diff.context_blocks = [
         nested_diff.ContextBlock(str, nested_diffs, depth=1)
     ]
     diffs = [
         MappingDiffItem(unchanged, 1, changed, nested_diff)
     ]
     expected_diff = Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)
     ]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map2)
Exemplo n.º 8
0
 def test_depth_is_adjustable(self):
     diff_obj = diff_mapping({'a': 1}, {'b': 2}, _depth=2)
     self.assertEqual(diff_obj.depth, 2)
Exemplo n.º 9
0
 def test_empty_diff(self):
     map1 = {}
     diff_obj = diff_mapping(map1, map1)
     expected_diff = Diff(dict, [])
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(map1, diff_obj), map1)