1
0
mirror of https://github.com/danog/PHP-Parser.git synced 2024-11-27 04:14:44 +01:00
PHP-Parser/test/PhpParser/Internal/DifferTest.php
Lars Moelleken b7e6361536 updates via "rectorphp/rector" (#573)
- "global" -> remove unused "use" statements
- "phpunit" -> fix "@covers" comments
- "phpunit" -> replace "->will($this->returnValue()" with "->willReturn()"
- "UseTest.php" -> add missing namespace
- "composer.json" -> use "autoload-dev"
- remove -> "require_once" usage in the tests (use autoload-dev via composer.json)

-> most of the changes are done automatically by "https://github.com/rectorphp/rector"
2019-01-19 11:18:00 +01:00

66 lines
2.3 KiB
PHP

<?php declare(strict_types=1);
namespace PhpParser\Internal;
class DifferTest extends \PHPUnit\Framework\TestCase
{
private function formatDiffString(array $diff) {
$diffStr = '';
foreach ($diff as $diffElem) {
switch ($diffElem->type) {
case DiffElem::TYPE_KEEP:
$diffStr .= $diffElem->old;
break;
case DiffElem::TYPE_REMOVE:
$diffStr .= '-' . $diffElem->old;
break;
case DiffElem::TYPE_ADD:
$diffStr .= '+' . $diffElem->new;
break;
case DiffElem::TYPE_REPLACE:
$diffStr .= '/' . $diffElem->old . $diffElem->new;
break;
default:
assert(false);
break;
}
}
return $diffStr;
}
/** @dataProvider provideTestDiff */
public function testDiff($oldStr, $newStr, $expectedDiffStr) {
$differ = new Differ(function($a, $b) { return $a === $b; });
$diff = $differ->diff(str_split($oldStr), str_split($newStr));
$this->assertSame($expectedDiffStr, $this->formatDiffString($diff));
}
public function provideTestDiff() {
return [
['abc', 'abc', 'abc'],
['abc', 'abcdef', 'abc+d+e+f'],
['abcdef', 'abc', 'abc-d-e-f'],
['abcdef', 'abcxyzdef', 'abc+x+y+zdef'],
['axyzb', 'ab', 'a-x-y-zb'],
['abcdef', 'abxyef', 'ab-c-d+x+yef'],
['abcdef', 'cdefab', '-a-bcdef+a+b'],
];
}
/** @dataProvider provideTestDiffWithReplacements */
public function testDiffWithReplacements($oldStr, $newStr, $expectedDiffStr) {
$differ = new Differ(function($a, $b) { return $a === $b; });
$diff = $differ->diffWithReplacements(str_split($oldStr), str_split($newStr));
$this->assertSame($expectedDiffStr, $this->formatDiffString($diff));
}
public function provideTestDiffWithReplacements() {
return [
['abcde', 'axyze', 'a/bx/cy/dze'],
['abcde', 'xbcdy', '/axbcd/ey'],
['abcde', 'axye', 'a-b-c-d+x+ye'],
['abcde', 'axyzue', 'a-b-c-d+x+y+z+ue'],
];
}
}