@@ -441,6 +441,86 @@ def testDiffDelta(self):
|
441 | 441 | # Convert delta string into a diff.
|
442 | 442 | self.assertEquals(diffs, self.dmp.diff_fromDelta(text1, delta))
|
443 | 443 |
|
| 444 | +diffs = [(self.dmp.DIFF_EQUAL, u"\ud83d\ude4b\ud83d"), (self.dmp.DIFF_INSERT, u"\ude4c\ud83d"), (self.dmp.DIFF_EQUAL, u"\ude4b")] |
| 445 | +delta = self.dmp.diff_toDelta(diffs) |
| 446 | +self.assertEquals("=2\t+%F0%9F%99%8C\t=2", delta) |
| 447 | + |
| 448 | +# Unicode: split surrogates |
| 449 | +# Inserting similar surrogate pair at beginning |
| 450 | +self.assertEquals( |
| 451 | +self.dmp.diff_toDelta([ |
| 452 | +(self.dmp.DIFF_INSERT, u'\U0001F171'), |
| 453 | +(self.dmp.DIFF_EQUAL, u'\U0001F170\U0001F171') |
| 454 | +]), |
| 455 | +self.dmp.diff_toDelta(self.dmp.diff_main( |
| 456 | +u'\U0001F170\U0001F171', |
| 457 | +u'\U0001F171\U0001F170\U0001F171' |
| 458 | +)) |
| 459 | +) |
| 460 | + |
| 461 | +# Inserting similar surrogate pair in the middle |
| 462 | +self.assertEquals( |
| 463 | +self.dmp.diff_toDelta([ |
| 464 | +(self.dmp.DIFF_EQUAL, u'\U0001F170'), |
| 465 | +(self.dmp.DIFF_INSERT, u'\U0001F172'), |
| 466 | +(self.dmp.DIFF_EQUAL, u'\U0001F171') |
| 467 | +]), |
| 468 | +self.dmp.diff_toDelta(self.dmp.diff_main( |
| 469 | +u'\U0001F170\U0001F171', |
| 470 | +u'\U0001F170\U0001F172\U0001F171' |
| 471 | +)) |
| 472 | +) |
| 473 | + |
| 474 | +# Deleting similar surogate pair at the beginning |
| 475 | +self.assertEquals( |
| 476 | +self.dmp.diff_toDelta([ |
| 477 | +(self.dmp.DIFF_DELETE, u'\U0001F171'), |
| 478 | +(self.dmp.DIFF_EQUAL, u'\U0001F170\U0001F171') |
| 479 | +]), |
| 480 | +self.dmp.diff_toDelta(self.dmp.diff_main( |
| 481 | +u'\U0001F171\U0001F170\U0001F171', |
| 482 | +u'\U0001F170\U0001F171' |
| 483 | +)) |
| 484 | +) |
| 485 | + |
| 486 | +# Deleting similar surogate pair in the middle |
| 487 | +self.assertEquals( |
| 488 | +self.dmp.diff_toDelta([ |
| 489 | +(self.dmp.DIFF_EQUAL, u'\U0001F170'), |
| 490 | +(self.dmp.DIFF_DELETE, u'\U0001F172'), |
| 491 | +(self.dmp.DIFF_EQUAL, u'\U0001F171') |
| 492 | +]), |
| 493 | +self.dmp.diff_toDelta(self.dmp.diff_main( |
| 494 | +u'\U0001F170\U0001F172\U0001F171', |
| 495 | +u'\U0001F170\U0001F171' |
| 496 | +)) |
| 497 | +) |
| 498 | + |
| 499 | +# Swap surrogate pair |
| 500 | +self.assertEquals( |
| 501 | +self.dmp.diff_toDelta([ |
| 502 | +(self.dmp.DIFF_DELETE, u'\U0001F170'), |
| 503 | +(self.dmp.DIFF_INSERT, u'\U0001F171') |
| 504 | +]), |
| 505 | +self.dmp.diff_toDelta(self.dmp.diff_main( |
| 506 | +u'\U0001F170', |
| 507 | +u'\U0001F171' |
| 508 | +)) |
| 509 | +) |
| 510 | + |
| 511 | +# Swap surrogate pair, force the invalid diff groups |
| 512 | +self.assertEquals( |
| 513 | +self.dmp.diff_toDelta([ |
| 514 | +(self.dmp.DIFF_INSERT, u'\U0001F170'), |
| 515 | +(self.dmp.DIFF_DELETE, u'\U0001F171') |
| 516 | +]), |
| 517 | +self.dmp.diff_toDelta([ |
| 518 | +(self.dmp.DIFF_EQUAL, u'\ud83c'), |
| 519 | +(self.dmp.DIFF_INSERT, u'\udd70'), |
| 520 | +(self.dmp.DIFF_DELETE, u'\udd71') |
| 521 | +]) |
| 522 | +) |
| 523 | + |
444 | 524 | # Verify pool of unchanged characters.
|
445 | 525 | diffs = [(self.dmp.DIFF_INSERT, "A-Z a-z 0-9 - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # ")]
|
446 | 526 | text2 = self.dmp.diff_text2(diffs)
|
|
0 commit comments