Example #1
0
 def test_no_differences(self):
     test_set = {1, 2, 3, 4, 5}
     diff_obj = diff_set(test_set, test_set)
     diffs = [
         DiffItem(unchanged, i) for i in test_set]
     expected_diff = Diff(set, diffs)
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(test_set, diff_obj), test_set)
Example #2
0
 def test_mostly_insertions(self):
     set1 = {4}
     set2 = {1, 2, 3, 4}
     diff_obj = diff_set(set1, set2)
     diffs = [
         DiffItem(unchanged, 4),
         DiffItem(insert, 1),
         DiffItem(insert, 2),
         DiffItem(insert, 3)]
     expected_diff = Diff(set, diffs)
     expected_diff.context_blocks = [
         expected_diff.ContextBlock(set, diffs[1:])]
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(set1, diff_obj), set2)
Example #3
0
 def test_context_limit_is_adjustable(self):
     set1 = {1, 2, 3, 4}
     set2 = {0, 2, 3, 6}
     diff_obj = 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 = [
         DiffItem(remove, 1),
         DiffItem(remove, 4),
         DiffItem(unchanged, 2),
         DiffItem(unchanged, 3),
         DiffItem(insert, 0),
         DiffItem(insert, 6)]
     expected_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)
     self.assertEqual(patch(set1, diff_obj), set2)
Example #4
0
 def test_depth_is_adjustable(self):
     diff_obj = diff_set({'a', 'b', 'c'}, {'e'}, _depth=6)
     self.assertEqual(diff_obj.depth, 6)
Example #5
0
 def test_empty_diff(self):
     set1 = set()
     diff_obj = diff_set(set1, set1)
     expected_diff = Diff(set, [])
     self.assertEqual(diff_obj, expected_diff)
     self.assertEqual(patch(set1, diff_obj), set1)