expectException(LoaderError::class); $loader->getSourceContext('foo'); } public function testGetCacheKey(): void { $loader = new ArrayLoader(['foo' => 'bar']); $this->assertEquals('foo:bar', $loader->getCacheKey('foo')); } public function testGetCacheKeyWhenTemplateHasDuplicateContent(): void { $loader = new ArrayLoader([ 'foo' => 'bar', 'baz' => 'bar', ]); $this->assertEquals('foo:bar', $loader->getCacheKey('foo')); $this->assertEquals('baz:bar', $loader->getCacheKey('baz')); } public function testGetCacheKeyIsProtectedFromEdgeCollisions(): void { $loader = new ArrayLoader([ 'foo__' => 'bar', 'foo' => '__bar', ]); $this->assertEquals('foo__:bar', $loader->getCacheKey('foo__')); $this->assertEquals('foo:__bar', $loader->getCacheKey('foo')); } public function testGetCacheKeyWhenTemplateDoesNotExist(): void { $loader = new ArrayLoader(); $this->expectException(LoaderError::class); $loader->getCacheKey('foo'); } public function testSetTemplate(): void { $loader = new ArrayLoader(); $loader->setTemplate('foo', 'bar'); $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode()); } public function testIsFresh(): void { $loader = new ArrayLoader(['foo' => 'bar']); $this->assertTrue($loader->isFresh('foo', time())); } public function testIsFreshWhenTemplateDoesNotExist(): void { $loader = new ArrayLoader(); $this->expectException(LoaderError::class); $loader->isFresh('foo', time()); } }