private function doExpires(CachePeer $cache)
 {
     if ($cache instanceof RuntimeMemory) {
         return $this->markTestSkipped('RuntimeMemory cache expire not implemented');
     }
     $cache->clean();
     $value = 'a';
     // do not set if exist and not expired (RubberFileSystem logic)
     $cache->set('a', $value, Cache::EXPIRES_MAXIMUM);
     $this->assertTrue($cache->set('a', '!!!', 1));
     $this->assertEquals($cache->get('a'), $value);
     $this->assertTrue($cache->replace('a', '!!!', Cache::EXPIRES_MINIMUM));
     $this->assertEquals($cache->get('a'), '!!!');
     $cache->replace('a', $value, 1);
     sleep(2);
     $this->assertFalse($cache->get('a'));
     $cache->clean();
 }
 /**
  * Sets the value
  * @return CachePeer
  */
 function set($key, $value, $ttl = CacheTtl::HOUR)
 {
     return $this->peer->set($this->mangleKey($key), $value, $ttl);
 }