示例#1
0
 def test_no_differences(self):
     map1 = {'a': 1}
     diff_obj = diff.diff_mapping(map1, map1)
     diffs = [
         diff.MappingDiffItem(diff.unchanged, 'a', diff.unchanged, 1)]
     expected_diff = diff.Diff(dict, diffs)
     self.assertEqual(diff_obj, expected_diff)
示例#2
0
 def test_common_keys_values_different_types(self):
     map1 = {'a': (1, 2)}
     map2 = {'a': '1, 2'}
     diff_obj = diff.diff_mapping(map1, map2)
     diffs = [
         diff.MappingDiffItem(diff.unchanged, 'a', diff.remove, (1, 2)),
         diff.MappingDiffItem(diff.unchanged, 'a', diff.insert, '1, 2')]
     expected_diff = diff.Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
示例#3
0
 def test_common_keys_values_not_diffable(self):
     map1 = {'a': 1}
     map2 = {'a': 2}
     diff_obj = diff.diff_mapping(map1, map2)
     diffs = [
         diff.MappingDiffItem(diff.unchanged, 'a', diff.remove, 1),
         diff.MappingDiffItem(diff.unchanged, 'a', diff.insert, 2)]
     expected_diff = diff.Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
示例#4
0
 def test_mostly_inserts(self):
     map1 = {'c': 3}
     map2 = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
     diff_obj = diff.diff_mapping(map1, map2)
     diffs = [
         diff.MappingDiffItem(diff.unchanged, 'c', diff.unchanged, 3),
         diff.MappingDiffItem(diff.insert, 'a', diff.insert, 1),
         diff.MappingDiffItem(diff.insert, 'b', diff.insert, 2),
         diff.MappingDiffItem(diff.insert, 'd', diff.insert, 4)]
     expected_diff = diff.Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs[1:])]
     self.assertEqual(diff_obj, expected_diff)
示例#5
0
 def test_single_char_edge_case_in_dict(self):
     # handle edge cases 2, pass the TypeError back to the caller
     # make sure that we don't endlessly recurse on the strings.
     map1 = {1: 'a'}
     map2 = {1: 'b'}
     diff_obj = diff.diff_mapping(map1, map2)
     diffs = [
         diff.MappingDiffItem(diff.unchanged, 1, diff.remove, 'a'),
         diff.MappingDiffItem(diff.unchanged, 1, diff.insert, 'b')
     ]
     expected_diff = diff.Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)
     ]
     self.assertEqual(diff_obj, expected_diff)
示例#6
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.diff_mapping(map1, map2, context_limit=1)
     diffs = [
         diff.MappingDiffItem(diff.remove, 'd', diff.remove, 4),
         diff.MappingDiffItem(diff.unchanged, 'a', diff.remove, 1),
         diff.MappingDiffItem(diff.unchanged, 'a', diff.insert, 2),
         diff.MappingDiffItem(diff.unchanged, 'c', diff.unchanged, 3),
         diff.MappingDiffItem(diff.unchanged, 'b', diff.unchanged, 2),
         diff.MappingDiffItem(diff.insert, 'e', diff.insert, 4)]
     expected_diff = 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)
示例#7
0
 def test_common_keys_recursive_diff(self):
     map1 = {'a': {'b': 1}}
     map2 = {'a': {'b': 2}}
     diff_obj = diff.diff_mapping(map1, map2)
     nested_diffs = [
         diff.MappingDiffItem(diff.unchanged, 'b', diff.remove, 1),
         diff.MappingDiffItem(diff.unchanged, 'b', diff.insert, 2)]
     nested_diff = diff.Diff(dict, nested_diffs, depth=1)
     nested_diff.context_blocks = [
         nested_diff.ContextBlock(dict, nested_diff.diffs, depth=1)]
     diffs = [
         diff.MappingDiffItem(
             diff.unchanged, 'a', diff.changed, nested_diff)]
     expected_diff = diff.Diff(dict, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(dict, diffs)]
     self.assertEqual(diff_obj, expected_diff)
示例#8
0
 def test_depth_is_adjustable(self):
     diff_obj = diff.diff_mapping({'a': 1}, {'b': 2}, _depth=2)
     self.assertEqual(diff_obj.depth, 2)
示例#9
0
 def test_empty_diff(self):
     diff_obj = diff.diff_mapping({}, {})
     expected_diff = diff.Diff(dict, [])
     self.assertEqual(diff_obj, expected_diff)