def test_context_not_finished_by_end_of_diffs_list(self): diffs = [ DiffItem(insert, 1), DiffItem(unchanged, 0)] diff_obj = Diff(list, diffs, context_limit=2) self.assertEqual( diff_obj._create_context_markers(), [(0, 1)])
def test_contexts_start_and_end_with_modified_items(self): # this constraint could change; people may want more context... diffs = [ DiffItem(unchanged, 1), DiffItem(insert, 2), DiffItem(insert, 2), DiffItem(unchanged, 1)] diff_obj = Diff(list, diffs) self.assertEqual( diff_obj._create_context_markers(), [(1, 3)])
def test_context_limit_is_adjustable(self): '''The default context limit is 3, if we adjust it to 1 we expect a new new context to be started if there is a gap of 2''' diffs = [ DiffItem(insert, 1), DiffItem(unchanged, 0), DiffItem(unchanged, 0), DiffItem(remove, 1)] diff_obj = Diff(list, diffs, context_limit=1) self.assertEqual( diff_obj._create_context_markers(), [(0, 1), (3, 4)])
def test_context_limit_max(self): '''Once a context is started,so long as the number of contiguous unchanged items doesn't exceed the context limit, they remain part of the context''' diffs = [ DiffItem(insert, 1), DiffItem(unchanged, 0), DiffItem(unchanged, 0), DiffItem(remove, 1)] diff_obj = Diff(list, diffs, context_limit=2) self.assertEqual( diff_obj._create_context_markers(), [(0, 4)])
def test_context_limit_max_plus_one(self): '''Once a context is started if the number of contiguous unchanged items exceeds the context limit the context is cut off at the last modified item and a new context is started''' diffs = [ DiffItem(insert, 1), DiffItem(unchanged, 0), DiffItem(unchanged, 0), DiffItem(unchanged, 0), DiffItem(remove, 1)] diff_obj = Diff(list, diffs, context_limit=2) self.assertEqual( diff_obj._create_context_markers(), [(0, 1), (4, 5)])