<?php
namespace Doctrine\Tests\Common\Cache;
use Doctrine\Common\Cache\Cache;
abstract class CacheTest extends \Doctrine\Tests\DoctrineTestCase {
public function testBasics() {
$cache = $this
->_getCacheDriver();
// Test save
$cache
->save('test_key', 'testing this out');
// Test contains to test that save() worked
$this
->assertTrue($cache
->contains('test_key'));
// Test fetch
$this
->assertEquals('testing this out', $cache
->fetch('test_key'));
// Test delete
$cache
->save('test_key2', 'test2');
$cache
->delete('test_key2');
$this
->assertFalse($cache
->contains('test_key2'));
}
public function testObjects() {
$cache = $this
->_getCacheDriver();
// Fetch/save test with objects (Is cache driver serializes/unserializes objects correctly ?)
$cache
->save('test_object_key', new \ArrayObject());
$this
->assertTrue($cache
->fetch('test_object_key') instanceof \ArrayObject);
}
public function testDeleteAll() {
$cache = $this
->_getCacheDriver();
$cache
->save('test_key1', '1');
$cache
->save('test_key2', '2');
$cache
->deleteAll();
$this
->assertFalse($cache
->contains('test_key1'));
$this
->assertFalse($cache
->contains('test_key2'));
}
public function testFlushAll() {
$cache = $this
->_getCacheDriver();
$cache
->save('test_key1', '1');
$cache
->save('test_key2', '2');
$cache
->flushAll();
$this
->assertFalse($cache
->contains('test_key1'));
$this
->assertFalse($cache
->contains('test_key2'));
}
public function testNamespace() {
$cache = $this
->_getCacheDriver();
$cache
->setNamespace('test_');
$cache
->save('key1', 'test');
$this
->assertTrue($cache
->contains('key1'));
$cache
->setNamespace('test2_');
$this
->assertFalse($cache
->contains('key1'));
}
/**
* @group DCOM-43
*/
public function testGetStats() {
$cache = $this
->_getCacheDriver();
$stats = $cache
->getStats();
$this
->assertArrayHasKey(Cache::STATS_HITS, $stats);
$this
->assertArrayHasKey(Cache::STATS_MISSES, $stats);
$this
->assertArrayHasKey(Cache::STATS_UPTIME, $stats);
$this
->assertArrayHasKey(Cache::STATS_MEMORY_USAGE, $stats);
$this
->assertArrayHasKey(Cache::STATS_MEMORY_AVAILIABLE, $stats);
}
/**
* @return \Doctrine\Common\Cache\CacheProvider
*/
protected abstract function _getCacheDriver();
}