public function testClear()
 {
     $key = 'foo';
     $this->cache->register($key, 'bar');
     $this->ormCache->save($key, 'bar');
     $this->assertNotEmpty($this->cache->getRegisteredKeys($key));
     $this->assertTrue($this->cache->has($key));
     $this->cache->clear();
     $this->assertEmpty($this->cache->getRegisteredKeys($key));
     $this->assertFalse($this->cache->has($key));
 }
 /**
  * @param Query       $query
  * @param int|null    $ttl
  * @param string|null $key
  *
  * @return array
  */
 public function query(Query $query, $ttl = null, $key = null)
 {
     if (is_null($key)) {
         $key = $this->getQueryCacheKey($query);
     }
     if ($ttl !== false) {
         $query->useResultCache(true, $ttl, $key);
     }
     $hasKey = $this->cache->has($key);
     // load via entitymanager
     $res = $query->getResult();
     // remember which queries contain these entities
     if (!empty($res) && $hasKey === false && $ttl !== false) {
         $this->cache->registerQueryForEntity($res[0], $key);
         foreach ($res as $entity) {
             $this->cache->registerQueryResult($entity, $key);
         }
     }
     return $res;
 }