4 * This file is part of the Symfony package.
6 * (c) Fabien Potencier <fabien@symfony.com>
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
12 namespace Symfony\Component\Config\Tests\Resource;
14 use PHPUnit\Framework\TestCase;
15 use Symfony\Component\Config\Resource\ClassExistenceResource;
16 use Symfony\Component\Config\Tests\Fixtures\BadParent;
17 use Symfony\Component\Config\Tests\Fixtures\Resource\ConditionalClass;
19 class ClassExistenceResourceTest extends TestCase
21 public function testToString()
23 $res = new ClassExistenceResource('BarClass');
24 $this->assertSame('BarClass', (string) $res);
27 public function testGetResource()
29 $res = new ClassExistenceResource('BarClass');
30 $this->assertSame('BarClass', $res->getResource());
33 public function testIsFreshWhenClassDoesNotExist()
35 $res = new ClassExistenceResource('Symfony\Component\Config\Tests\Fixtures\BarClass');
37 $this->assertTrue($res->isFresh(time()));
40 namespace Symfony\Component\Config\Tests\Fixtures;
48 $this->assertFalse($res->isFresh(time()));
51 public function testIsFreshWhenClassExists()
53 $res = new ClassExistenceResource('Symfony\Component\Config\Tests\Resource\ClassExistenceResourceTest');
55 $this->assertTrue($res->isFresh(time()));
58 public function testExistsKo()
60 spl_autoload_register($autoloader = function ($class) use (&$loadedClass) { $loadedClass = $class; });
63 $res = new ClassExistenceResource('MissingFooClass');
64 $this->assertTrue($res->isFresh(0));
66 $this->assertSame('MissingFooClass', $loadedClass);
70 $res = new ClassExistenceResource('MissingFooClass', false);
72 $this->assertSame(123, $loadedClass);
74 spl_autoload_unregister($autoloader);
78 public function testBadParentWithTimestamp()
80 $res = new ClassExistenceResource(BadParent::class, false);
81 $this->assertTrue($res->isFresh(time()));
85 * @expectedException \ReflectionException
86 * @expectedExceptionMessage Class Symfony\Component\Config\Tests\Fixtures\MissingParent not found
88 public function testBadParentWithNoTimestamp()
90 $res = new ClassExistenceResource(BadParent::class, false);
94 public function testConditionalClass()
96 $res = new ClassExistenceResource(ConditionalClass::class, false);
98 $this->assertFalse($res->isFresh(0));