Changeset View
Changeset View
Standalone View
Standalone View
src/difference/__tests__/ArcanistDiffUtilsTestCase.php
| Show First 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | foreach ($tests as $test) { | ||||
| ArcanistDiffUtils::generateEditString( | ArcanistDiffUtils::generateEditString( | ||||
| str_split($test[0]), | str_split($test[0]), | ||||
| str_split($test[1])), | str_split($test[1])), | ||||
| "'{$test[0]}' vs '{$test[1]}'"); | "'{$test[0]}' vs '{$test[1]}'"); | ||||
| } | } | ||||
| $utf8_tests = array( | $utf8_tests = array( | ||||
| array( | array( | ||||
| "GrumpyCat", | 'GrumpyCat', | ||||
| "Grumpy\xE2\x98\x83at", | "Grumpy\xE2\x98\x83at", | ||||
| 'ssssssxss', | 'ssssssxss', | ||||
| ), | ), | ||||
| ); | ); | ||||
| foreach ($tests as $test) { | foreach ($tests as $test) { | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $test[2], | $test[2], | ||||
| ArcanistDiffUtils::generateEditString( | ArcanistDiffUtils::generateEditString( | ||||
| phutil_utf8v_combined($test[0]), | phutil_utf8v_combined($test[0]), | ||||
| phutil_utf8v_combined($test[1])), | phutil_utf8v_combined($test[1])), | ||||
| "'{$test[0]}' vs '{$test[1]}' (utf8)"); | "'{$test[0]}' vs '{$test[1]}' (utf8)"); | ||||
| } | } | ||||
| } | } | ||||
| public function testGenerateUTF8IntralineDiff() { | public function testGenerateUTF8IntralineDiff() { | ||||
| // Both Strings Empty. | // Both Strings Empty. | ||||
| $left = ""; | $left = ''; | ||||
| $right = ""; | $right = ''; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 0)), | array(array(0, 0)), | ||||
| array(array(0, 0)) | array(array(0, 0)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // Left String Empty. | // Left String Empty. | ||||
| $left = ""; | $left = ''; | ||||
| $right = "Grumpy\xE2\x98\x83at"; | $right = "Grumpy\xE2\x98\x83at"; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 0)), | array(array(0, 0)), | ||||
| array(array(0, 11)) | array(array(0, 11)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // Right String Empty. | // Right String Empty. | ||||
| $left = "Grumpy\xE2\x98\x83at"; | $left = "Grumpy\xE2\x98\x83at"; | ||||
| $right = ""; | $right = ''; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 11)), | array(array(0, 11)), | ||||
| array(array(0, 0)) | array(array(0, 0)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // Both Strings Same | // Both Strings Same | ||||
| $left = "Grumpy\xE2\x98\x83at"; | $left = "Grumpy\xE2\x98\x83at"; | ||||
| $right = "Grumpy\xE2\x98\x83at"; | $right = "Grumpy\xE2\x98\x83at"; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 11)), | array(array(0, 11)), | ||||
| array(array(0, 11)) | array(array(0, 11)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // Both Strings are different. | // Both Strings are different. | ||||
| $left = "Grumpy\xE2\x98\x83at"; | $left = "Grumpy\xE2\x98\x83at"; | ||||
| $right = "Smiling Dog"; | $right = 'Smiling Dog'; | ||||
| $result = array( | $result = array( | ||||
| array(array(1, 11)), | array(array(1, 11)), | ||||
| array(array(1, 11)) | array(array(1, 11)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // String with one difference in the middle. | // String with one difference in the middle. | ||||
| $left = "GrumpyCat"; | $left = 'GrumpyCat'; | ||||
| $right = "Grumpy\xE2\x98\x83at"; | $right = "Grumpy\xE2\x98\x83at"; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 6), array(1, 1), array(0, 2)), | array(array(0, 6), array(1, 1), array(0, 2)), | ||||
| array(array(0, 6), array(1, 3), array(0, 2)) | array(array(0, 6), array(1, 3), array(0, 2)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // Differences in middle, not connected to each other. | // Differences in middle, not connected to each other. | ||||
| $left = "GrumpyCat"; | $left = 'GrumpyCat'; | ||||
| $right = "Grumpy\xE2\x98\x83a\xE2\x98\x83t"; | $right = "Grumpy\xE2\x98\x83a\xE2\x98\x83t"; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 6), array(1, 2), array(0, 1)), | array(array(0, 6), array(1, 2), array(0, 1)), | ||||
| array(array(0, 6), array(1, 7), array(0, 1)) | array(array(0, 6), array(1, 7), array(0, 1)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| Show All 28 Lines | $result = array( | ||||
| array(array(1, 1), array(0, 9), array(1, 1)) | array(array(1, 1), array(0, 9), array(1, 1)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| // This is a unicode combining character, "COMBINING DOUBLE TILDE". | // This is a unicode combining character, "COMBINING DOUBLE TILDE". | ||||
| $cc = "\xCD\xA0"; | $cc = "\xCD\xA0"; | ||||
| $left = "Senor"; | $left = 'Senor'; | ||||
| $right = "Sen{$cc}or"; | $right = "Sen{$cc}or"; | ||||
| $result = array( | $result = array( | ||||
| array(array(0, 2), array(1, 1), array(0, 2)), | array(array(0, 2), array(1, 1), array(0, 2)), | ||||
| array(array(0, 2), array(1, 3), array(0, 2)) | array(array(0, 2), array(1, 3), array(0, 2)) | ||||
| ); | ); | ||||
| $this->assertEqual( | $this->assertEqual( | ||||
| $result, | $result, | ||||
| ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ArcanistDiffUtils::generateIntralineDiff($left, $right)); | ||||
| } | } | ||||
| } | } | ||||