From 3cde7a3e4b8f43d3bcb1abf8d6dbe2978027da75 Mon Sep 17 00:00:00 2001 From: Philipp Holzer Date: Sat, 7 Jul 2018 20:35:42 +0200 Subject: [PATCH] Fixed & added unittests --- tests/src/Core/Cache/ArrayCacheDriverTest.php | 4 +- .../Core/Cache/DatabaseCacheDriverTest.php | 2 +- .../Core/Cache/MemcacheCacheDriverTest.php | 4 +- .../Core/Cache/MemcachedCacheDriverTest.php | 4 +- tests/src/Core/Cache/MemoryCacheTest.php | 92 +++++++++++++++++++ tests/src/Core/Cache/RedisCacheDriverTest.php | 4 +- 6 files changed, 101 insertions(+), 9 deletions(-) create mode 100644 tests/src/Core/Cache/MemoryCacheTest.php diff --git a/tests/src/Core/Cache/ArrayCacheDriverTest.php b/tests/src/Core/Cache/ArrayCacheDriverTest.php index 860e566d88..0cad6e9c7f 100644 --- a/tests/src/Core/Cache/ArrayCacheDriverTest.php +++ b/tests/src/Core/Cache/ArrayCacheDriverTest.php @@ -5,7 +5,7 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\ArrayCache; -class ArrayCacheDriverTest extends CacheTest +class ArrayCacheDriverTest extends MemoryCacheTest { /** * @var \Friendica\Core\Cache\IMemoryCacheDriver @@ -20,7 +20,7 @@ class ArrayCacheDriverTest extends CacheTest public function tearDown() { - $this->cache->clear(); + $this->cache->clear(false); parent::tearDown(); } diff --git a/tests/src/Core/Cache/DatabaseCacheDriverTest.php b/tests/src/Core/Cache/DatabaseCacheDriverTest.php index ed2e47fb47..5df00fc913 100644 --- a/tests/src/Core/Cache/DatabaseCacheDriverTest.php +++ b/tests/src/Core/Cache/DatabaseCacheDriverTest.php @@ -19,7 +19,7 @@ class DatabaseCacheDriverTest extends CacheTest public function tearDown() { - $this->cache->clear(); + $this->cache->clear(false); parent::tearDown(); } } diff --git a/tests/src/Core/Cache/MemcacheCacheDriverTest.php b/tests/src/Core/Cache/MemcacheCacheDriverTest.php index 4dbd10289e..d2078236e2 100644 --- a/tests/src/Core/Cache/MemcacheCacheDriverTest.php +++ b/tests/src/Core/Cache/MemcacheCacheDriverTest.php @@ -6,7 +6,7 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; -class MemcachedCacheDriverTest extends CacheTest +class MemcacheCacheDriverTest extends MemoryCacheTest { /** * @var \Friendica\Core\Cache\IMemoryCacheDriver @@ -32,7 +32,7 @@ class MemcachedCacheDriverTest extends CacheTest public function tearDown() { if (class_exists('Memcache')) { - $this->cache->clear(); + $this->cache->clear(false); } parent::tearDown(); } diff --git a/tests/src/Core/Cache/MemcachedCacheDriverTest.php b/tests/src/Core/Cache/MemcachedCacheDriverTest.php index ff76ddefc4..2484517424 100644 --- a/tests/src/Core/Cache/MemcachedCacheDriverTest.php +++ b/tests/src/Core/Cache/MemcachedCacheDriverTest.php @@ -6,7 +6,7 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; -class MemcachedCacheDriverTest extends CacheTest +class MemcachedCacheDriverTest extends MemoryCacheTest { /** * @var \Friendica\Core\Cache\IMemoryCacheDriver @@ -32,7 +32,7 @@ class MemcachedCacheDriverTest extends CacheTest public function tearDown() { if (class_exists('Memcached')) { - $this->cache->clear(); + $this->cache->clear(false); } parent::tearDown(); } diff --git a/tests/src/Core/Cache/MemoryCacheTest.php b/tests/src/Core/Cache/MemoryCacheTest.php new file mode 100644 index 0000000000..3f7af71f6d --- /dev/null +++ b/tests/src/Core/Cache/MemoryCacheTest.php @@ -0,0 +1,92 @@ +instance instanceof IMemoryCacheDriver)) { + throw new \Exception('MemoryCacheTest unsupported'); + } + } + + function testCompareSet() { + $this->assertNull($this->instance->get('value1')); + + $value='foobar'; + $this->instance->add('value1', $value); + $received=$this->instance->get('value1'); + $this->assertEquals($value, $received, 'Value received from cache not equal to the original'); + $newValue='ipsum lorum'; + $this->instance->compareSet('value1', $value, $newValue); + $received=$this->instance->get('value1'); + $this->assertEquals($newValue, $received, 'Value not overwritten by compareSet'); + } + + function testNegativeCompareSet() { + $this->assertNull($this->instance->get('value1')); + + $value='foobar'; + $this->instance->add('value1', $value); + $received=$this->instance->get('value1'); + $this->assertEquals($value, $received, 'Value received from cache not equal to the original'); + $newValue='ipsum lorum'; + $this->instance->compareSet('value1', 'wrong', $newValue); + $received=$this->instance->get('value1'); + $this->assertNotEquals($newValue, $received, 'Value was wrongly overwritten by compareSet'); + $this->assertEquals($value, $received, 'Value was wrongly overwritten by any other value'); + } + + function testCompareDelete() { + $this->assertNull($this->instance->get('value1')); + + $value='foobar'; + $this->instance->add('value1', $value); + $received=$this->instance->get('value1'); + $this->assertEquals($value, $received, 'Value received from cache not equal to the original'); + $this->instance->compareDelete('value1', $value); + $this->assertNull($this->instance->get('value1'), 'Value was not deleted by compareDelete'); + } + + function testNegativeCompareDelete() { + $this->assertNull($this->instance->get('value1')); + + $value='foobar'; + $this->instance->add('value1', $value); + $received=$this->instance->get('value1'); + $this->assertEquals($value, $received, 'Value received from cache not equal to the original'); + $this->instance->compareDelete('value1', 'wrong'); + $this->assertNotNull($this->instance->get('value1'), 'Value was wrongly compareDeleted'); + + $this->instance->compareDelete('value1', $value); + $this->assertNull($this->instance->get('value1'), 'Value was wrongly NOT deleted by compareDelete'); + } + + function testAdd() { + $this->assertNull($this->instance->get('value1')); + + $value='foobar'; + $this->instance->add('value1', $value); + + $newValue='ipsum lorum'; + $this->instance->add('value1', $newValue); + $received=$this->instance->get('value1'); + $this->assertNotEquals($newValue, $received, 'Value was wrongly overwritten by add'); + $this->assertEquals($value, $received, 'Value was wrongly overwritten by any other value'); + + $this->instance->delete('value1'); + $this->instance->add('value1', $newValue); + $received=$this->instance->get('value1'); + $this->assertEquals($newValue, $received, 'Value was not overwritten by add'); + $this->assertNotEquals($value, $received, 'Value was not overwritten by any other value'); + } +} \ No newline at end of file diff --git a/tests/src/Core/Cache/RedisCacheDriverTest.php b/tests/src/Core/Cache/RedisCacheDriverTest.php index 44ff0d42b1..e13d95df4d 100644 --- a/tests/src/Core/Cache/RedisCacheDriverTest.php +++ b/tests/src/Core/Cache/RedisCacheDriverTest.php @@ -6,7 +6,7 @@ namespace Friendica\Test\src\Core\Cache; use Friendica\Core\Cache\CacheDriverFactory; -class RedisCacheDriverTest extends CacheTest +class RedisCacheDriverTest extends MemoryCacheTest { /** * @var \Friendica\Core\Cache\IMemoryCacheDriver @@ -32,7 +32,7 @@ class RedisCacheDriverTest extends CacheTest public function tearDown() { if (class_exists('Redis')) { - $this->cache->clear(); + $this->cache->clear(false); } parent::tearDown(); }