Browse Source

Differs - add tests

Andreas Möller 7 years ago
parent
commit
ef19ea2f39

+ 0 - 3
tests/AutoReview/ProjectCodeTest.php

@@ -38,9 +38,6 @@ final class ProjectCodeTest extends TestCase
         'PhpCsFixer\Console\Command\SelfUpdateCommand',
         'PhpCsFixer\Console\Output\NullOutput',
         'PhpCsFixer\Differ\DiffConsoleFormatter',
-        'PhpCsFixer\Differ\NullDiffer',
-        'PhpCsFixer\Differ\SebastianBergmannDiffer',
-        'PhpCsFixer\Differ\SebastianBergmannShortDiffer',
         'PhpCsFixer\Doctrine\Annotation\Tokens',
         'PhpCsFixer\FileRemoval',
         'PhpCsFixer\FixerConfiguration\FixerOptionValidatorGenerator',

+ 67 - 0
tests/Differ/AbstractDifferTestCase.php

@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of PHP CS Fixer.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Differ;
+
+use PHPUnit\Framework\TestCase;
+
+/**
+ * @author Andreas Möller <am@localheinz.com>
+ *
+ * @internal
+ */
+abstract class AbstractDifferTestCase extends TestCase
+{
+    final public function testIsDiffer()
+    {
+        $className = preg_replace(
+            '/Test$/',
+            '',
+            str_replace(
+                'PhpCsFixer\\Tests\\Differ\\',
+                'PhpCsFixer\\Differ\\',
+                get_called_class()
+            )
+        );
+
+        $differ = new $className();
+
+        $this->assertInstanceOf('PhpCsFixer\Differ\DifferInterface', $differ);
+    }
+
+    final protected function oldCode()
+    {
+        return <<<'PHP'
+<?php
+class Foo extends Bar {
+    function __construct($foo, $bar) {
+        $this->foo = $foo;
+        $this->bar = $bar;
+    }
+}
+PHP;
+    }
+
+    final protected function newCode()
+    {
+        return <<<'PHP'
+<?php
+class Foo extends Bar {
+    public function __construct($foo, $bar)
+    {
+        $this->foo = $foo;
+        $this->bar = $bar;
+    }
+}
+PHP;
+    }
+}

+ 34 - 0
tests/Differ/NullDifferTest.php

@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of PHP CS Fixer.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Differ;
+
+use PhpCsFixer\Differ\NullDiffer;
+
+/**
+ * @author Andreas Möller <am@localheinz.com>
+ *
+ * @internal
+ *
+ * @covers \PhpCsFixer\Differ\NullDiffer
+ */
+final class NullDifferTest extends AbstractDifferTestCase
+{
+    public function testDiffReturnsEmptyString()
+    {
+        $diff = '';
+
+        $differ = new NullDiffer();
+
+        $this->assertSame($diff, $differ->diff($this->oldCode(), $this->newCode()));
+    }
+}

+ 48 - 0
tests/Differ/SebastianBergmannDifferTest.php

@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of PHP CS Fixer.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Differ;
+
+use PhpCsFixer\Differ\SebastianBergmannDiffer;
+
+/**
+ * @author Andreas Möller <am@localheinz.com>
+ *
+ * @internal
+ *
+ * @covers \PhpCsFixer\Differ\SebastianBergmannDiffer
+ */
+final class SebastianBergmannDifferTest extends AbstractDifferTestCase
+{
+    public function testDiffReturnsDiff()
+    {
+        $diff = <<<'TXT'
+--- Original
++++ New
+@@ @@
+ <?php
+ class Foo extends Bar {
+-    function __construct($foo, $bar) {
++    public function __construct($foo, $bar)
++    {
+         $this->foo = $foo;
+         $this->bar = $bar;
+     }
+ }
+
+TXT;
+
+        $differ = new SebastianBergmannDiffer();
+
+        $this->assertSame($diff, $differ->diff($this->oldCode(), $this->newCode()));
+    }
+}

+ 41 - 0
tests/Differ/SebastianBergmannShortDifferTest.php

@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of PHP CS Fixer.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *     Dariusz Rumiński <dariusz.ruminski@gmail.com>
+ *
+ * This source file is subject to the MIT license that is bundled
+ * with this source code in the file LICENSE.
+ */
+
+namespace PhpCsFixer\Tests\Differ;
+
+use PhpCsFixer\Differ\SebastianBergmannShortDiffer;
+
+/**
+ * @author Andreas Möller <am@localheinz.com>
+ *
+ * @internal
+ *
+ * @covers \PhpCsFixer\Differ\SebastianBergmannShortDiffer
+ */
+final class SebastianBergmannShortDifferTest extends AbstractDifferTestCase
+{
+    public function testDiffReturnsDiff()
+    {
+        $diff = <<<'TXT'
+--- Original
++++ New
+-    function __construct($foo, $bar) {
++    public function __construct($foo, $bar)
++    {
+
+TXT;
+
+        $differ = new SebastianBergmannShortDiffer();
+
+        $this->assertSame($diff, $differ->diff($this->oldCode(), $this->newCode()));
+    }
+}