示例#1
0
 def test_no_differences(self):
     test_set = {1, 2, 3, 4, 5}
     diff_obj = diff.diff_set(test_set, test_set)
     diffs = [
         diff.DiffItem(diff.unchanged, i) for i in test_set]
     expected_diff = diff.Diff(set, diffs)
     self.assertEqual(diff_obj, expected_diff)
示例#2
0
 def test_mostly_insertions(self):
     set1 = {4}
     set2 = {1, 2, 3, 4}
     diff_obj = diff.diff_set(set1, set2)
     diffs = [
         diff.DiffItem(diff.unchanged, 4),
         diff.DiffItem(diff.insert, 1),
         diff.DiffItem(diff.insert, 2),
         diff.DiffItem(diff.insert, 3)]
     expected_diff = diff.Diff(set, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(set, diffs[1:])]
     self.assertEqual(diff_obj, expected_diff)
示例#3
0
 def test_mostly_removals(self):
     set1 = {1, 2, 3, 4}
     set2 = {4}
     diff_obj = diff.diff_set(set1, set2)
     diffs = [
         diff.DiffItem(diff.remove, 1),
         diff.DiffItem(diff.remove, 2),
         diff.DiffItem(diff.remove, 3),
         diff.DiffItem(diff.unchanged, 4)]
     expected_diff = diff.Diff(set, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(set, diffs[:3])]
     self.assertEqual(diff_obj, expected_diff)
示例#4
0
 def test_context_limit_is_adjustable(self):
     set1 = {1, 2, 3, 4}
     set2 = {0, 2, 3, 6}
     diff_obj = diff.diff_set(set1, set2, context_limit=1)
     # This diff doesn't quite look like you would expect a sequence diff to
     # i,e the first 2 DiffItems might look the wrong way round in sequences
     # diffs removals come before inserts. Sets aren't ordered like
     # sequences (although python displays them sorted), therefore it would
     # be wrong to use the sequence diffing algorithms to diff them. In the
     # case of sets the Diff.diffs list is constructed in the sort order of
     # the union of the two sets being diffed.
     diffs = [
         diff.DiffItem(diff.remove, 1),
         diff.DiffItem(diff.remove, 4),
         diff.DiffItem(diff.unchanged, 2),
         diff.DiffItem(diff.unchanged, 3),
         diff.DiffItem(diff.insert, 0),
         diff.DiffItem(diff.insert, 6)]
     expected_diff = diff.Diff(set, diffs, context_limit=1)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(set, diffs[:2]),
         expected_diff.ContextBlock(set, diffs[4:])]
     self.assertEqual(diff_obj, expected_diff)
示例#5
0
 def test_depth_is_adjustable(self):
     diff_obj = diff.diff_set({'a', 'b', 'c'}, {'e'}, _depth=6)
     self.assertEqual(diff_obj.depth, 6)
示例#6
0
 def test_empty_diff(self):
     diff_obj = diff.diff_set(set(), set())
     expected_diff = diff.Diff(set, [])
     self.assertEqual(diff_obj, expected_diff)