sonarrradarrplexorganizrnginxdashboardhtpcserverhomepagesabnzbdheimdallembycouchpotatonzbgetbookmarkapplication-dashboardmuximuxlandingpagestartpagelanding
		
		
		
		
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							343 lines
						
					
					
						
							9.0 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							343 lines
						
					
					
						
							9.0 KiB
						
					
					
				
								<?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;
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |