310
310
m3 = Merge3(base_text, other_text, this_text)
311
311
m_lines = m3.merge_lines('OTHER', 'THIS', reprocess=True)
312
312
merged_text = "".join(list(m_lines))
313
optimal_text = "a\n" * 10 + "<<<<<<< OTHER\nc\n=======\n>>>>>>> THIS"\
314
+ "\n" + 8* "b\n" + "<<<<<<< OTHER\nc\n=======\nb\nb\n>>>>>>>"\
316
self.assertEqualDiff(merged_text, optimal_text)
313
optimal_text = ("a\n" * 10 + "<<<<<<< OTHER\nc\n"
314
+ 8* "b\n" + "c\n=======\n"
315
+ 10*"b\n" + ">>>>>>> THIS\n")
316
self.assertEqualDiff(optimal_text, merged_text)
318
def test_minimal_conflicts_unique(self):
320
"""Add a newline to each entry in the string"""
321
return [(x+'\n') for x in s]
323
base_text = add_newline("abcdefghijklm")
324
this_text = add_newline("abcdefghijklmNOPQRSTUVWXYZ")
325
other_text = add_newline("abcdefghijklm1OPQRSTUVWXY2")
326
m3 = Merge3(base_text, other_text, this_text)
327
m_lines = m3.merge_lines('OTHER', 'THIS', reprocess=True)
328
merged_text = "".join(list(m_lines))
329
optimal_text = ''.join(add_newline("abcdefghijklm")
330
+ ["<<<<<<< OTHER\n1\n=======\nN\n>>>>>>> THIS\n"]
331
+ add_newline('OPQRSTUVWXY')
332
+ ["<<<<<<< OTHER\n2\n=======\nZ\n>>>>>>> THIS\n"]
334
self.assertEqualDiff(optimal_text, merged_text)
336
def test_minimal_conflicts_nonunique(self):
338
"""Add a newline to each entry in the string"""
339
return [(x+'\n') for x in s]
341
base_text = add_newline("abacddefgghij")
342
this_text = add_newline("abacddefgghijkalmontfprz")
343
other_text = add_newline("abacddefgghijknlmontfprd")
344
m3 = Merge3(base_text, other_text, this_text)
345
m_lines = m3.merge_lines('OTHER', 'THIS', reprocess=True)
346
merged_text = "".join(list(m_lines))
347
optimal_text = ''.join(add_newline("abacddefgghijk")
348
+ ["<<<<<<< OTHER\nn\n=======\na\n>>>>>>> THIS\n"]
349
+ add_newline('lmontfpr')
350
+ ["<<<<<<< OTHER\nd\n=======\nz\n>>>>>>> THIS\n"]
352
self.assertEqualDiff(optimal_text, merged_text)
318
354
def test_reprocess_and_base(self):
319
355
"""Reprocessing and showing base breaks correctly"""