def test_start_0(self): self.assertEqual(diff_dmp('yes 123abc', 'no 123abc'), ('yes', 'no'))
def test_start_1(self): a = 'X\nB\nC' b = 'A\nB\nC' self.assertEqual(diff_dmp(a, b), ('X', 'A'))
def test_middle_0(self): self.assertEqual(diff_dmp('123456', '123a56'), ('4', 'a'))
def test_middle_1(self): a = 'A\nB\nC' b = 'A\nX\nC' self.assertEqual(diff_dmp(a, b), ('B', 'X'))
def test_special_chars(self): a = 'X\tB\nC' b = 'A<B\nC' self.assertEqual(diff_dmp(a, b), ('X\t', 'A<'))
def test_equal(self): self.assertEqual(diff_dmp('123456', '123456'), ('', ''))
def test_empty(self): self.assertEqual(diff_dmp('', ''), ('', ''))
def test_middle_not_aligned(self): a = 'A\nB\nC' b = 'A\nXY\nC' self.assertEqual(diff_dmp(a, b), ('B', 'XY'))
def test_all_no_sep(self): a = 'ABC' b = 'AXC' self.assertEqual(diff_dmp(a, b), ('B', 'X'))
def test_nono(self): self.assertEqual(diff_dmp('123abc yes', 'no 123abc no'), ('yes', 'no \nno'))
def test_end(self): self.assertEqual(diff_dmp('123abc yes', '123abc no'), ('yes', 'no'))