5 * Copyright (c) 2009-2013, Sebastian Bergmann <sebastian@phpunit.de>.
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
12 * * Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
15 * * Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in
17 * the documentation and/or other materials provided with the
20 * * Neither the name of Sebastian Bergmann nor the names of his
21 * contributors may be used to endorse or promote products derived
22 * from this software without specific prior written permission.
24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
25 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
26 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
27 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
28 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
29 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
34 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35 * POSSIBILITY OF SUCH DAMAGE.
38 * @package CodeCoverage
40 * @author Sebastian Bergmann <sebastian@phpunit.de>
41 * @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
42 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
43 * @link http://github.com/sebastianbergmann/php-code-coverage
44 * @since File available since Release 1.0.0
48 * Abstract base class for test case classes.
51 * @package CodeCoverage
53 * @author Sebastian Bergmann <sebastian@phpunit.de>
54 * @copyright 2009-2013 Sebastian Bergmann <sebastian@phpunit.de>
55 * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
56 * @link http://github.com/sebastianbergmann/php-code-coverage
57 * @since Class available since Release 1.0.0
59 abstract class PHP_CodeCoverage_TestCase
extends PHPUnit_Framework_TestCase
61 protected function getXdebugDataForBankAccount()
65 TEST_FILES_PATH
. 'BankAccount.php' => array(
82 TEST_FILES_PATH
. 'BankAccount.php' => array(
90 TEST_FILES_PATH
. 'BankAccount.php' => array(
98 TEST_FILES_PATH
. 'BankAccount.php' => array(
113 protected function getCoverageForBankAccount()
115 $data = $this->getXdebugDataForBankAccount();
117 $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug');
118 $stub->expects($this->any())
120 ->will($this->onConsecutiveCalls(
121 $data[0], $data[1], $data[2], $data[3]
124 $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter
);
127 new BankAccountTest('testBalanceIsInitiallyZero'), TRUE
132 new BankAccountTest('testBalanceCannotBecomeNegative')
137 new BankAccountTest('testBalanceCannotBecomeNegative2')
142 new BankAccountTest('testDepositWithdrawMoney')
149 protected function getCoverageForBankAccountForFirstTwoTests()
151 $data = $this->getXdebugDataForBankAccount();
153 $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug');
154 $stub->expects($this->any())
156 ->will($this->onConsecutiveCalls(
160 $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter
);
163 new BankAccountTest('testBalanceIsInitiallyZero'), TRUE
168 new BankAccountTest('testBalanceCannotBecomeNegative')
175 protected function getCoverageForBankAccountForLastTwoTests()
177 $data = $this->getXdebugDataForBankAccount();
179 $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug');
180 $stub->expects($this->any())
182 ->will($this->onConsecutiveCalls(
186 $coverage = new PHP_CodeCoverage($stub, new PHP_CodeCoverage_Filter
);
189 new BankAccountTest('testBalanceCannotBecomeNegative2'), TRUE
194 new BankAccountTest('testDepositWithdrawMoney')
201 protected function getExpectedDataArrayForBankAccount()
204 TEST_FILES_PATH
. 'BankAccount.php' => array(
206 0 => 'BankAccountTest::testBalanceIsInitiallyZero',
207 1 => 'BankAccountTest::testDepositWithdrawMoney'
216 0 => 'BankAccountTest::testBalanceCannotBecomeNegative2',
217 1 => 'BankAccountTest::testDepositWithdrawMoney'
220 0 => 'BankAccountTest::testDepositWithdrawMoney',
224 0 => 'BankAccountTest::testBalanceCannotBecomeNegative',
225 1 => 'BankAccountTest::testDepositWithdrawMoney'
228 0 => 'BankAccountTest::testDepositWithdrawMoney'
235 protected function getCoverageForFileWithIgnoredLines()
237 $coverage = new PHP_CodeCoverage(
238 $this->setUpXdebugStubForFileWithIgnoredLines(),
239 new PHP_CodeCoverage_Filter
242 $coverage->start('FileWithIgnoredLines', TRUE);
248 protected function setUpXdebugStubForFileWithIgnoredLines()
250 $stub = $this->getMock('PHP_CodeCoverage_Driver_Xdebug');
251 $stub->expects($this->any())
253 ->will($this->returnValue(
255 TEST_FILES_PATH
. 'source_with_ignore.php' => array(