]> git.mxchange.org Git - friendica.git/blobdiff - tests/src/Core/Cache/CacheTest.php
Merge branch 'develop' of https://github.com/friendica/friendica into develop
[friendica.git] / tests / src / Core / Cache / CacheTest.php
index 4f3e4d351c844970137cb34ee2efcf3a9cde221b..86bf5e7f01fa2a1e115db8aaee1aa9a15dba6dc4 100644 (file)
@@ -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);
+       }
 }