* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Cache\Tests\Adapter; use Symfony\Component\Cache\Adapter\AdapterInterface; use Symfony\Component\Cache\Adapter\FilesystemAdapter; use Symfony\Component\Cache\Adapter\ArrayAdapter; use Symfony\Component\Cache\Adapter\ChainAdapter; use Symfony\Component\Cache\PruneableInterface; use Symfony\Component\Cache\Tests\Fixtures\ExternalAdapter; /** * @author Kévin Dunglas * @group time-sensitive */ class ChainAdapterTest extends AdapterTestCase { public function createCachePool($defaultLifetime = 0) { return new ChainAdapter(array(new ArrayAdapter($defaultLifetime), new ExternalAdapter(), new FilesystemAdapter('', $defaultLifetime)), $defaultLifetime); } /** * @expectedException \Symfony\Component\Cache\Exception\InvalidArgumentException * @expectedExceptionMessage At least one adapter must be specified. */ public function testEmptyAdaptersException() { new ChainAdapter(array()); } /** * @expectedException \Symfony\Component\Cache\Exception\InvalidArgumentException * @expectedExceptionMessage The class "stdClass" does not implement */ public function testInvalidAdapterException() { new ChainAdapter(array(new \stdClass())); } public function testPrune() { if (isset($this->skippedTests[__FUNCTION__])) { $this->markTestSkipped($this->skippedTests[__FUNCTION__]); } $cache = new ChainAdapter(array( $this->getPruneableMock(), $this->getNonPruneableMock(), $this->getPruneableMock(), )); $this->assertTrue($cache->prune()); $cache = new ChainAdapter(array( $this->getPruneableMock(), $this->getFailingPruneableMock(), $this->getPruneableMock(), )); $this->assertFalse($cache->prune()); } /** * @return \PHPUnit_Framework_MockObject_MockObject|PruneableCacheInterface */ private function getPruneableMock() { $pruneable = $this ->getMockBuilder(PruneableCacheInterface::class) ->getMock(); $pruneable ->expects($this->atLeastOnce()) ->method('prune') ->will($this->returnValue(true)); return $pruneable; } /** * @return \PHPUnit_Framework_MockObject_MockObject|PruneableCacheInterface */ private function getFailingPruneableMock() { $pruneable = $this ->getMockBuilder(PruneableCacheInterface::class) ->getMock(); $pruneable ->expects($this->atLeastOnce()) ->method('prune') ->will($this->returnValue(false)); return $pruneable; } /** * @return \PHPUnit_Framework_MockObject_MockObject|AdapterInterface */ private function getNonPruneableMock() { return $this ->getMockBuilder(AdapterInterface::class) ->getMock(); } } interface PruneableCacheInterface extends PruneableInterface, AdapterInterface { } __halt_compiler();----SIGNATURE:----fZTc9wsA6Ru09tm1eiCaaZljUKCuhKOaNV5hq46tV0IpuA/dNM/YtAHXQuOIDrjS97Lg/OAil2iCk4qouxnVXiJqtsN9JdnGzpLIM9+Rv+bgqdpQcNXgtLnLHD/ZPoHXq0M8smXPzZU66IDObeDe6q1Sdi3FfzJmJ5iDzWCa9SPTCgo3KMkqKBWQKNJuEFENalrIxS51PZvrs8fLuj6M8TAezElSA8E3RN6x0pU5lyF7syYpTGhA0tcqCP54hU7OIAEmosMOzzfcQCQE4WVfcaH/XMi/y8Jb3OneFNquzBetElGNu6PM/t26DfYSNCNTGQ6EEcZi8NFexbStEyXyRo2jZsttJQe8IKudWKhQMjn1PdsBB7uIU/ibGMPpR2ffp5Wg/TVngZfDDv8yGi9cdyslRmtdkCekjVtz1RGRA339S4jcKEaZPREUaC7rbunDbvSuIlZOjuoC//6Jm9RCC5U45UBp4+zBEdB+uHgcrCVcOHyp5WgRGjmUszBVbs5+BG99IAqqpt/8LZm/QDL3t2gfr1g9Q9E3m/4poG1wFlK9vHx56wbSG2xuFURlayVEzYx7adtQ7/Q82tvtKKZGbMyYUnTNOAaWVyM+t+sdZGGbDeagsUsjiS5OJHygLBTiAYuc3cWEloKdof7h8xRQJi+fIFJomfxbHJ0ek1KHWdI=----ATTACHMENT:----MjI2MDc3MzQ2OTQyMjI3NyA3MDg4NTUwNzM2NjM4NTM1IDg1NDE3MjkxNzIzNjQw