X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=tests%2Fsrc%2FCore%2FCache%2FCacheTest.php;h=86bf5e7f01fa2a1e115db8aaee1aa9a15dba6dc4;hb=a97b540ebb3f1d5bb5c18b4c0fb631443d03b5a7;hp=4f3e4d351c844970137cb34ee2efcf3a9cde221b;hpb=ff5ee74ecfbd39b630433c6e1d7cfcd9611d4660;p=friendica.git diff --git a/tests/src/Core/Cache/CacheTest.php b/tests/src/Core/Cache/CacheTest.php index 4f3e4d351c..86bf5e7f01 100644 --- a/tests/src/Core/Cache/CacheTest.php +++ b/tests/src/Core/Cache/CacheTest.php @@ -2,9 +2,10 @@ namespace Friendica\Test\src\Core\Cache; -use Friendica\App; +use Friendica\Core\Cache\MemcachedCacheDriver; use Friendica\Core\Config; use Friendica\Test\DatabaseTest; +use Friendica\Util\DateTimeFormat; abstract class CacheTest extends DatabaseTest { @@ -13,17 +14,21 @@ abstract class CacheTest extends DatabaseTest */ protected $instance; + /** + * @var \Friendica\Core\Cache\IMemoryCacheDriver + */ + protected $cache; + + abstract protected function getInstance(); protected function setUp() { - global $a; parent::setUp(); $this->instance = $this->getInstance(); // Reusable App object - $this->app = new App(__DIR__.'/../'); - $a = $this->app; + $this->app = \Friendica\BaseObject::getApp(); // Default config Config::set('config', 'hostname', 'localhost'); @@ -31,8 +36,13 @@ abstract class CacheTest extends DatabaseTest Config::set('system', 'throttle_limit_week', 100); Config::set('system', 'throttle_limit_month', 100); Config::set('system', 'theme', 'system_theme'); + + $this->instance->clear(false); } + /** + * @small + */ function testSimple() { $this->assertNull($this->instance->get('value1')); @@ -58,6 +68,9 @@ abstract class CacheTest extends DatabaseTest $this->assertNull($this->instance->get('value1')); } + /** + * @small + */ function testClear() { $value = 'ipsum lorum'; $this->instance->set('1_value1', $value . '1'); @@ -77,21 +90,38 @@ abstract class CacheTest extends DatabaseTest '3_value1' => $this->instance->get('3_value1'), ]); + $this->assertTrue($this->instance->clear()); + + $this->assertEquals([ + '1_value1' => 'ipsum lorum1', + '1_value2' => 'ipsum lorum2', + '2_value1' => 'ipsum lorum3', + '3_value1' => 'ipsum lorum4', + ], [ + '1_value1' => $this->instance->get('1_value1'), + '1_value2' => $this->instance->get('1_value2'), + '2_value1' => $this->instance->get('2_value1'), + '3_value1' => $this->instance->get('3_value1'), + ]); + $this->assertTrue($this->instance->clear(false)); $this->assertEquals([ '1_value1' => null, '1_value2' => null, - '2_value1' => null, - '3_value1' => null, + '2_value3' => null, + '3_value4' => null, ], [ '1_value1' => $this->instance->get('1_value1'), '1_value2' => $this->instance->get('1_value2'), - '2_value1' => $this->instance->get('2_value1'), - '3_value1' => $this->instance->get('3_value1'), + '2_value3' => $this->instance->get('2_value3'), + '3_value4' => $this->instance->get('3_value4'), ]); } + /** + * @medium + */ function testTTL() { $this->assertNull($this->instance->get('value1')); @@ -104,4 +134,79 @@ abstract class CacheTest extends DatabaseTest $this->assertNull($this->instance->get('value1')); } + + /** + * @small + */ + function testDifferentTypesInCache() { + // String test + $value = "foobar"; + $this->instance->set('stringVal', $value); + $received = $this->instance->get('stringVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // Integer test + $value = 1; + $this->instance->set('intVal', $value); + $received = $this->instance->get('intVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // Boolean test + $value = true; + $this->instance->set('boolValTrue', $value); + $received = $this->instance->get('boolValTrue'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + $value = false; + $this->instance->set('boolValFalse', $value); + $received = $this->instance->get('boolValFalse'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // float + $value = 4.6634234; + $this->instance->set('decVal', $value); + $received = $this->instance->get('decVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // array + $value = array('1', '2', '3', '4', '5'); + $this->instance->set('arrayVal', $value); + $received = $this->instance->get('arrayVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // object + $value = new DateTimeFormat(); + $this->instance->set('objVal', $value); + $received = $this->instance->get('objVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + + // null + $value = null; + $this->instance->set('objVal', $value); + $received = $this->instance->get('objVal'); + $this->assertEquals($value, $received, 'Value type changed from ' . gettype($value) . ' to ' . gettype($received)); + } + + /** + * @small + */ + public function testGetAllKeys() { + if ($this->cache instanceof MemcachedCacheDriver) { + $this->markTestSkipped('Memcached doesn\'t support getAllKeys anymore'); + } + + $this->assertTrue($this->instance->set('value1', 'test')); + $this->assertTrue($this->instance->set('value2', 'test')); + $this->assertTrue($this->instance->set('test_value3', 'test')); + + $list = $this->instance->getAllKeys(); + + $this->assertContains('value1', $list); + $this->assertContains('value2', $list); + $this->assertContains('test_value3', $list); + + $list = $this->instance->getAllKeys('test'); + + $this->assertContains('test_value3', $list); + } }