public function testFlush()
 {
     $this->cache->set('test', 'data');
     $this->assertEquals('data', $this->cache->get('test'));
     $this->assertTrue($this->cache->flush());
     $this->assertFalse($this->cache->get('data'));
 }
 /**
  * @param string $method
  * @param array $arguments
  * @return mixed
  * @throws \RuntimeException
  */
 public function __call($method, $arguments)
 {
     $reflection = new \ReflectionClass($this->decoratedObject);
     /*
      if (!$reflection->hasMethod($method)) {
          throw new \InvalidArgumentException('"' . $method . '" is not method of class ' . $reflection->name);
      }
     */
     $key = CacheProvider::generateCacheKey($reflection->name, $method, md5(var_export($arguments, true)));
     $result = $this->cache->get($key);
     if ($result === false) {
         $result = call_user_func_array([$this->decoratedObject, $method], $arguments);
         $this->cache->add($key, $result, $this->ttl);
     }
     return $result;
 }
 /**
  * {@inheritdoc}
  */
 public function add($key, $data, $ttl = 0)
 {
     $result = $this->cache->add($key, $data, $ttl);
     if ($result) {
         $this->hot[$key] = $data;
     }
     return $result;
 }