/vendor/doctrine/cache/tests/Doctrine/Tests/Common/Cache/ChainCacheTest.php |
@@ -0,0 +1,99 @@ |
<?php |
|
namespace Doctrine\Tests\Common\Cache; |
|
use Doctrine\Common\Cache\ApcCache; |
use Doctrine\Common\Cache\ArrayCache; |
use Doctrine\Common\Cache\ChainCache; |
|
class ChainCacheTest extends CacheTest |
{ |
protected function _getCacheDriver() |
{ |
return new ChainCache(array(new ArrayCache())); |
} |
|
public function testLifetime() |
{ |
$this->markTestSkipped('The ChainCache test uses ArrayCache which does not implement TTL currently.'); |
} |
|
public function testGetStats() |
{ |
$cache = $this->_getCacheDriver(); |
$stats = $cache->getStats(); |
|
$this->assertInternalType('array', $stats); |
} |
|
public function testOnlyFetchFirstOne() |
{ |
$cache1 = new ArrayCache(); |
$cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider'); |
|
$cache2->expects($this->never())->method('doFetch'); |
|
$chainCache = new ChainCache(array($cache1, $cache2)); |
$chainCache->save('id', 'bar'); |
|
$this->assertEquals('bar', $chainCache->fetch('id')); |
} |
|
public function testFetchPropagateToFastestCache() |
{ |
$cache1 = new ArrayCache(); |
$cache2 = new ArrayCache(); |
|
$cache2->save('bar', 'value'); |
|
$chainCache = new ChainCache(array($cache1, $cache2)); |
|
$this->assertFalse($cache1->contains('bar')); |
|
$result = $chainCache->fetch('bar'); |
|
$this->assertEquals('value', $result); |
$this->assertTrue($cache2->contains('bar')); |
} |
|
public function testNamespaceIsPropagatedToAllProviders() |
{ |
$cache1 = new ArrayCache(); |
$cache2 = new ArrayCache(); |
|
$chainCache = new ChainCache(array($cache1, $cache2)); |
$chainCache->setNamespace('bar'); |
|
$this->assertEquals('bar', $cache1->getNamespace()); |
$this->assertEquals('bar', $cache2->getNamespace()); |
} |
|
public function testDeleteToAllProviders() |
{ |
$cache1 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider'); |
$cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider'); |
|
$cache1->expects($this->once())->method('doDelete'); |
$cache2->expects($this->once())->method('doDelete'); |
|
$chainCache = new ChainCache(array($cache1, $cache2)); |
$chainCache->delete('bar'); |
} |
|
public function testFlushToAllProviders() |
{ |
$cache1 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider'); |
$cache2 = $this->getMockForAbstractClass('Doctrine\Common\Cache\CacheProvider'); |
|
$cache1->expects($this->once())->method('doFlush'); |
$cache2->expects($this->once())->method('doFlush'); |
|
$chainCache = new ChainCache(array($cache1, $cache2)); |
$chainCache->flushAll(); |
} |
|
protected function isSharedStorage() |
{ |
return false; |
} |
} |