diff --git a/Symfony/CS/Fixer/Contrib/PhpUnitConstructFixer.php b/Symfony/CS/Fixer/Contrib/PhpUnitConstructFixer.php index da7b7e2d841..66d57a6e5e5 100644 --- a/Symfony/CS/Fixer/Contrib/PhpUnitConstructFixer.php +++ b/Symfony/CS/Fixer/Contrib/PhpUnitConstructFixer.php @@ -94,27 +94,13 @@ public function getPriority() private function fixAssertNegative(Tokens $tokens, $index, $method) { - $sequence = $tokens->findSequence( - array( - array(T_VARIABLE, '$this'), - array(T_OBJECT_OPERATOR, '->'), - array(T_STRING, $method), - '(', - array(T_STRING, 'null'), - ',', - ), - $index + static $map = array( + 'false' => 'assertNotFalse', + 'null' => 'assertNotNull', + 'true' => 'assertNotTrue', ); - if (null === $sequence) { - return; - } - - $sequenceIndexes = array_keys($sequence); - $tokens[$sequenceIndexes[2]]->setContent('assertNotNull'); - $tokens->clearRange($sequenceIndexes[4], $tokens->getNextNonWhitespace($sequenceIndexes[5]) - 1); - - return $sequenceIndexes[5]; + return $this->fixAssert($map, $tokens, $index, $method); } private function fixAssertPositive(Tokens $tokens, $index, $method) @@ -125,6 +111,11 @@ private function fixAssertPositive(Tokens $tokens, $index, $method) 'true' => 'assertTrue', ); + return $this->fixAssert($map, $tokens, $index, $method); + } + + private function fixAssert(array $map, Tokens $tokens, $index, $method) + { $sequence = $tokens->findSequence( array( array(T_VARIABLE, '$this'), diff --git a/Symfony/CS/Tests/Fixer/Contrib/PhpUnitConstructFixerTest.php b/Symfony/CS/Tests/Fixer/Contrib/PhpUnitConstructFixerTest.php index 46ceda39f8e..ecca7a6a222 100644 --- a/Symfony/CS/Tests/Fixer/Contrib/PhpUnitConstructFixerTest.php +++ b/Symfony/CS/Tests/Fixer/Contrib/PhpUnitConstructFixerTest.php @@ -62,36 +62,8 @@ public function testFix($expected, $input = null) public function provideTestFixCases() { - return array( + $cases = array( array('assertSame(true, $foo);'), - array( - 'assertTrue($a);', - 'assertSame(true, $a);', - ), - array( - 'assertTrue($a , "true" . $bar);', - 'assertSame(true , $a , "true" . $bar);', - ), - array( - 'assertFalse( $a, "false" . $bar);', - 'assertSame( false, $a, "false" . $bar);', - ), - array( - 'assertNull( $a , "null" . $bar);', - 'assertSame( null, $a , "null" . $bar);', - ), - array( - 'assertNotNull( $a , "notNull" . $bar);', - 'assertNotSame( null, $a , "notNull" . $bar);', - ), - array( - 'assertFalse( $a, "false" . $bar);', - 'assertEquals( false, $a, "false" . $bar);', - ), - array( - 'assertNotNull( $a , "notNull" . $bar);', - 'assertNotEquals( null, $a , "notNull" . $bar);', - ), array( 'assertTrue( @@ -106,5 +78,27 @@ public function provideTestFixCases() );', ), ); + + return array_merge( + $cases, + $this->generateCases('assert%s%s($a); //%s %s', 'assert%s(%s, $a); //%s %s'), + $this->generateCases('assert%s%s($a, "%s", "%s");', 'assert%s(%s, $a, "%s", "%s");') + ); + } + + private function generateCases($expectedTemplate, $inputTemplate) + { + $cases = array(); + $functionTypes = array('Same' => true, 'NotSame' => false, 'Equals' => true, 'NotEquals' => false); + foreach (array('true', 'false', 'null') as $type) { + foreach ($functionTypes as $method => $positive) { + $cases[] = array( + sprintf($expectedTemplate, $positive ? '' : 'Not', ucfirst($type), $method, $type), + sprintf($inputTemplate, $method, $type, $method, $type), + ); + } + } + + return $cases; } }