diff options
Diffstat (limited to 'vendor/phpunit/php-code-coverage/tests/TestCase.php')
-rw-r--r-- | vendor/phpunit/php-code-coverage/tests/TestCase.php | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/vendor/phpunit/php-code-coverage/tests/TestCase.php b/vendor/phpunit/php-code-coverage/tests/TestCase.php new file mode 100644 index 0000000..cd18a82 --- /dev/null +++ b/vendor/phpunit/php-code-coverage/tests/TestCase.php @@ -0,0 +1,343 @@ +<?php +/* + * This file is part of the php-code-coverage package. + * + * (c) Sebastian Bergmann <sebastian@phpunit.de> + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace SebastianBergmann\CodeCoverage; + +use SebastianBergmann\CodeCoverage\Driver\Xdebug; + +/** + * Abstract base class for test case classes. + * + * @since Class available since Release 1.0.0 + */ +abstract class TestCase extends \PHPUnit_Framework_TestCase +{ + protected static $TEST_TMP_PATH; + + public static function setUpBeforeClass() + { + self::$TEST_TMP_PATH = TEST_FILES_PATH . 'tmp'; + } + + protected function getXdebugDataForBankAccount() + { + return [ + [ + TEST_FILES_PATH . 'BankAccount.php' => [ + 8 => 1, + 9 => -2, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 18 => -1, + 22 => -1, + 24 => -1, + 25 => -2, + 29 => -1, + 31 => -1, + 32 => -2 + ] + ], + [ + TEST_FILES_PATH . 'BankAccount.php' => [ + 8 => 1, + 13 => 1, + 16 => 1, + 29 => 1, + ] + ], + [ + TEST_FILES_PATH . 'BankAccount.php' => [ + 8 => 1, + 13 => 1, + 16 => 1, + 22 => 1, + ] + ], + [ + TEST_FILES_PATH . 'BankAccount.php' => [ + 8 => 1, + 13 => 1, + 14 => 1, + 15 => 1, + 18 => 1, + 22 => 1, + 24 => 1, + 29 => 1, + 31 => 1, + ] + ] + ]; + } + + protected function getCoverageForBankAccount() + { + $data = $this->getXdebugDataForBankAccount(); + require_once TEST_FILES_PATH . '/BankAccountTest.php'; + + $stub = $this->createMock(Xdebug::class); + + $stub->expects($this->any()) + ->method('stop') + ->will($this->onConsecutiveCalls( + $data[0], + $data[1], + $data[2], + $data[3] + )); + + $filter = new Filter; + $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); + + $coverage = new CodeCoverage($stub, $filter); + + $coverage->start( + new \BankAccountTest('testBalanceIsInitiallyZero'), + true + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(6, 9)] + ); + + $coverage->start( + new \BankAccountTest('testBalanceCannotBecomeNegative') + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(27, 32)] + ); + + $coverage->start( + new \BankAccountTest('testBalanceCannotBecomeNegative2') + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(20, 25)] + ); + + $coverage->start( + new \BankAccountTest('testDepositWithdrawMoney') + ); + + $coverage->stop( + true, + [ + TEST_FILES_PATH . 'BankAccount.php' => array_merge( + range(6, 9), + range(20, 25), + range(27, 32) + ) + ] + ); + + return $coverage; + } + + protected function getCoverageForBankAccountForFirstTwoTests() + { + $data = $this->getXdebugDataForBankAccount(); + + $stub = $this->createMock(Xdebug::class); + + $stub->expects($this->any()) + ->method('stop') + ->will($this->onConsecutiveCalls( + $data[0], + $data[1] + )); + + $filter = new Filter; + $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); + + $coverage = new CodeCoverage($stub, $filter); + + $coverage->start( + new \BankAccountTest('testBalanceIsInitiallyZero'), + true + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(6, 9)] + ); + + $coverage->start( + new \BankAccountTest('testBalanceCannotBecomeNegative') + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(27, 32)] + ); + + return $coverage; + } + + protected function getCoverageForBankAccountForLastTwoTests() + { + $data = $this->getXdebugDataForBankAccount(); + + $stub = $this->createMock(Xdebug::class); + + $stub->expects($this->any()) + ->method('stop') + ->will($this->onConsecutiveCalls( + $data[2], + $data[3] + )); + + $filter = new Filter; + $filter->addFileToWhitelist(TEST_FILES_PATH . 'BankAccount.php'); + + $coverage = new CodeCoverage($stub, $filter); + + $coverage->start( + new \BankAccountTest('testBalanceCannotBecomeNegative2') + ); + + $coverage->stop( + true, + [TEST_FILES_PATH . 'BankAccount.php' => range(20, 25)] + ); + + $coverage->start( + new \BankAccountTest('testDepositWithdrawMoney') + ); + + $coverage->stop( + true, + [ + TEST_FILES_PATH . 'BankAccount.php' => array_merge( + range(6, 9), + range(20, 25), + range(27, 32) + ) + ] + ); + + return $coverage; + } + + protected function getExpectedDataArrayForBankAccount() + { + return [ + TEST_FILES_PATH . 'BankAccount.php' => [ + 8 => [ + 0 => 'BankAccountTest::testBalanceIsInitiallyZero', + 1 => 'BankAccountTest::testDepositWithdrawMoney' + ], + 9 => null, + 13 => [], + 14 => [], + 15 => [], + 16 => [], + 18 => [], + 22 => [ + 0 => 'BankAccountTest::testBalanceCannotBecomeNegative2', + 1 => 'BankAccountTest::testDepositWithdrawMoney' + ], + 24 => [ + 0 => 'BankAccountTest::testDepositWithdrawMoney', + ], + 25 => null, + 29 => [ + 0 => 'BankAccountTest::testBalanceCannotBecomeNegative', + 1 => 'BankAccountTest::testDepositWithdrawMoney' + ], + 31 => [ + 0 => 'BankAccountTest::testDepositWithdrawMoney' + ], + 32 => null + ] + ]; + } + + protected function getCoverageForFileWithIgnoredLines() + { + $filter = new Filter; + $filter->addFileToWhitelist(TEST_FILES_PATH . 'source_with_ignore.php'); + + $coverage = new CodeCoverage( + $this->setUpXdebugStubForFileWithIgnoredLines(), + $filter + ); + + $coverage->start('FileWithIgnoredLines', true); + $coverage->stop(); + + return $coverage; + } + + protected function setUpXdebugStubForFileWithIgnoredLines() + { + $stub = $this->createMock(Xdebug::class); + + $stub->expects($this->any()) + ->method('stop') + ->will($this->returnValue( + [ + TEST_FILES_PATH . 'source_with_ignore.php' => [ + 2 => 1, + 4 => -1, + 6 => -1, + 7 => 1 + ] + ] + )); + + return $stub; + } + + protected function getCoverageForClassWithAnonymousFunction() + { + $filter = new Filter; + $filter->addFileToWhitelist(TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php'); + + $coverage = new CodeCoverage( + $this->setUpXdebugStubForClassWithAnonymousFunction(), + $filter + ); + + $coverage->start('ClassWithAnonymousFunction', true); + $coverage->stop(); + + return $coverage; + } + + protected function setUpXdebugStubForClassWithAnonymousFunction() + { + $stub = $this->createMock(Xdebug::class); + + $stub->expects($this->any()) + ->method('stop') + ->will($this->returnValue( + [ + TEST_FILES_PATH . 'source_with_class_and_anonymous_function.php' => [ + 7 => 1, + 9 => 1, + 10 => -1, + 11 => 1, + 12 => 1, + 13 => 1, + 14 => 1, + 17 => 1, + 18 => 1 + ] + ] + )); + + return $stub; + } +} |