| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | <?php declare(strict_types=1);/* * This file is part of sebastian/global-state. * * (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\GlobalState;use PHPUnit\Framework\TestCase;use SebastianBergmann\GlobalState\TestFixture\BlacklistedInterface;use SebastianBergmann\GlobalState\TestFixture\SnapshotClass;use SebastianBergmann\GlobalState\TestFixture\SnapshotTrait;/** * @covers \SebastianBergmann\GlobalState\Snapshot * * @uses \SebastianBergmann\GlobalState\Blacklist */final class SnapshotTest extends TestCase{    /**     * @var Blacklist     */    private $blacklist;    protected function setUp(): void    {        $this->blacklist = new Blacklist;    }    public function testStaticAttributes(): void    {        SnapshotClass::init();        $this->blacklistAllLoadedClassesExceptSnapshotClass();        $snapshot = new Snapshot($this->blacklist, false, true, false, false, false, false, false, false, false);        $expected = [            SnapshotClass::class => [                'string'  => 'string',                'objects' => [new \stdClass],            ],        ];        $this->assertEquals($expected, $snapshot->staticAttributes());    }    public function testConstants(): void    {        $snapshot = new Snapshot($this->blacklist, false, false, true, false, false, false, false, false, false);        $this->assertArrayHasKey('GLOBALSTATE_TESTSUITE', $snapshot->constants());    }    public function testFunctions(): void    {        $snapshot  = new Snapshot($this->blacklist, false, false, false, true, false, false, false, false, false);        $functions = $snapshot->functions();        $this->assertContains('sebastianbergmann\globalstate\testfixture\snapshotfunction', $functions);        $this->assertNotContains('assert', $functions);    }    public function testClasses(): void    {        $snapshot = new Snapshot($this->blacklist, false, false, false, false, true, false, false, false, false);        $classes  = $snapshot->classes();        $this->assertContains(TestCase::class, $classes);        $this->assertNotContains(Exception::class, $classes);    }    public function testInterfaces(): void    {        $snapshot   = new Snapshot($this->blacklist, false, false, false, false, false, true, false, false, false);        $interfaces = $snapshot->interfaces();        $this->assertContains(BlacklistedInterface::class, $interfaces);        $this->assertNotContains(\Countable::class, $interfaces);    }    public function testTraits(): void    {        \spl_autoload_call('SebastianBergmann\GlobalState\TestFixture\SnapshotTrait');        $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, false, true, false, false);        $this->assertContains(SnapshotTrait::class, $snapshot->traits());    }    public function testIniSettings(): void    {        $snapshot    = new Snapshot($this->blacklist, false, false, false, false, false, false, false, true, false);        $iniSettings = $snapshot->iniSettings();        $this->assertArrayHasKey('date.timezone', $iniSettings);        $this->assertEquals('Etc/UTC', $iniSettings['date.timezone']);    }    public function testIncludedFiles(): void    {        $snapshot = new Snapshot($this->blacklist, false, false, false, false, false, false, false, false, true);        $this->assertContains(__FILE__, $snapshot->includedFiles());    }    private function blacklistAllLoadedClassesExceptSnapshotClass(): void    {        foreach (\get_declared_classes() as $class) {            if ($class === SnapshotClass::class) {                continue;            }            $this->blacklist->addClass($class);        }    }}
 |