--- /dev/null
+<?php
+
+namespace Doctrine\Tests\Common\Cache;
+
+use Doctrine\Common\Cache\Cache;
+use Doctrine\Common\Cache\PredisCache;
+use Predis\Client;
+use Predis\Connection\ConnectionException;
+
+class PredisCacheTest extends CacheTest
+{
+ private $client;
+
+ protected function setUp()
+ {
+ if (!class_exists('Predis\Client')) {
+ $this->markTestSkipped('Predis\Client is missing. Make sure to "composer install" to have all dev dependencies.');
+ }
+
+ $this->client = new Client();
+
+ try {
+ $this->client->connect();
+ } catch (ConnectionException $e) {
+ $this->markTestSkipped('Cannot connect to Redis because of: ' . $e);
+ }
+ }
+
+ public function testHitMissesStatsAreProvided()
+ {
+ $cache = $this->_getCacheDriver();
+ $stats = $cache->getStats();
+
+ $this->assertNotNull($stats[Cache::STATS_HITS]);
+ $this->assertNotNull($stats[Cache::STATS_MISSES]);
+ }
+
+ /**
+ * @return PredisCache
+ */
+ protected function _getCacheDriver()
+ {
+ return new PredisCache($this->client);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @dataProvider provideDataToCache
+ */
+ public function testSetContainsFetchDelete($value)
+ {
+ if (array() === $value) {
+ $this->markTestIncomplete(
+ 'Predis currently doesn\'t support saving empty array values. '
+ . 'See https://github.com/nrk/predis/issues/241'
+ );
+ }
+
+ parent::testSetContainsFetchDelete($value);
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @dataProvider provideDataToCache
+ */
+ public function testUpdateExistingEntry($value)
+ {
+ if (array() === $value) {
+ $this->markTestIncomplete(
+ 'Predis currently doesn\'t support saving empty array values. '
+ . 'See https://github.com/nrk/predis/issues/241'
+ );
+ }
+
+ parent::testUpdateExistingEntry($value);
+ }
+
+ public function testAllowsGenericPredisClient()
+ {
+ /* @var $predisClient \Predis\ClientInterface */
+ $predisClient = $this->getMock('Predis\\ClientInterface');
+
+ $this->assertInstanceOf('Doctrine\\Common\\Cache\\PredisCache', new PredisCache($predisClient));
+ }
+}