mirror of
https://github.com/predis/predis.git
synced 2026-08-29 11:41:29 +00:00
dc14c29676
Now we follow a Symfony2-like naming convention for namespaces, interfaces and classes sticking with one clear rule. - Renamed namespaces: - Predis\Network - Predis\Profiles - Predis\Iterators - Predis\Options - Predis\Commands - Predis\Commands\Processors - Renamed interfaces: - Predis\IReplyObject - Predis\IRedisServerError - Predis\IConnectionFactory - Predis\IConnectionParameters - Predis\Options\IOption - Predis\Options\IClientOptions - Predis\Profile\IServerProfile - Predis\Pipeline\IPipelineExecutor - Predis\Distribution\INodeKeyGenerator - Predis\Distribution\IDistributionStrategy - Predis\Protocol\IProtocolProcessor - Predis\Protocol\IResponseReader - Predis\Protocol\IResponseHandler - Predis\Protocol\ICommandSerializer - Predis\Protocol\IComposableProtocolProcessor - Predis\Network\IConnection - Predis\Network\IConnectionSingle - Predis\Network\IConnectionComposable - Predis\Network\IConnectionCluster - Predis\Network\IConnectionReplication - Predis\Commands\ICommand - Predis\Commands\IPrefixable - Predis\Command\Processor\ICommandProcessor - Predis\Command\Processor\ICommandProcessorChain - Predis\Command\Processor\IProcessingSupport - Renamed Classes: - Predis\Commands\Command - Predis\Network\ConnectionBase - Classes moved to different namespaces: - Predis\MonitorContext Meh
124 lines
3.3 KiB
PHP
124 lines
3.3 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Predis package.
|
|
*
|
|
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Predis\Iterator;
|
|
|
|
use \PHPUnit_Framework_TestCase as StandardTestCase;
|
|
|
|
use Predis\Client;
|
|
|
|
/**
|
|
* @group realm-iterators
|
|
*/
|
|
class MultiBulkResponseSimpleTest extends StandardTestCase
|
|
{
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testIterableMultibulk()
|
|
{
|
|
$client = $this->getClient();
|
|
$client->rpush('metavars', 'foo', 'hoge', 'lol');
|
|
|
|
$this->assertInstanceOf('Iterator', $iterator = $client->lrange('metavars', 0, -1));
|
|
$this->assertInstanceOf('Predis\Iterator\MultiBulkResponseSimple', $iterator);
|
|
$this->assertTrue($iterator->valid());
|
|
$this->assertSame(3, $iterator->count());
|
|
|
|
$this->assertSame('foo', $iterator->current());
|
|
$this->assertSame(1, $iterator->next());
|
|
$this->assertTrue($iterator->valid());
|
|
|
|
$this->assertSame('hoge', $iterator->current());
|
|
$this->assertSame(2, $iterator->next());
|
|
$this->assertTrue($iterator->valid());
|
|
|
|
$this->assertSame('lol', $iterator->current());
|
|
$this->assertSame(3, $iterator->next());
|
|
$this->assertFalse($iterator->valid());
|
|
|
|
$this->assertTrue($client->ping());
|
|
}
|
|
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testSyncWithFalseConsumesReplyFromUnderlyingConnection()
|
|
{
|
|
$client = $this->getClient();
|
|
$client->rpush('metavars', 'foo', 'hoge', 'lol');
|
|
|
|
$iterator = $client->lrange('metavars', 0, -1);
|
|
$iterator->sync(false);
|
|
|
|
$this->assertTrue($client->isConnected());
|
|
$this->assertTrue($client->ping());
|
|
}
|
|
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testSyncWithTrueDropsUnderlyingConnection()
|
|
{
|
|
$client = $this->getClient();
|
|
$client->rpush('metavars', 'foo', 'hoge', 'lol');
|
|
|
|
$iterator = $client->lrange('metavars', 0, -1);
|
|
$iterator->sync(true);
|
|
|
|
$this->assertFalse($client->isConnected());
|
|
$this->assertTrue($client->ping());
|
|
}
|
|
|
|
/**
|
|
* @group connected
|
|
*/
|
|
public function testGarbageCollectorDropsUnderlyingConnection()
|
|
{
|
|
$client = $this->getClient();
|
|
$client->rpush('metavars', 'foo', 'hoge', 'lol');
|
|
|
|
$iterator = $client->lrange('metavars', 0, -1);
|
|
|
|
unset($iterator);
|
|
|
|
$this->assertFalse($client->isConnected());
|
|
$this->assertTrue($client->ping());
|
|
}
|
|
|
|
// ******************************************************************** //
|
|
// ---- HELPER METHODS ------------------------------------------------ //
|
|
// ******************************************************************** //
|
|
|
|
/**
|
|
* Returns a new client instance.
|
|
*
|
|
* @return Client
|
|
*/
|
|
protected function getClient()
|
|
{
|
|
$parameters = array(
|
|
'host' => REDIS_SERVER_HOST,
|
|
'port' => REDIS_SERVER_PORT,
|
|
'iterable_multibulk' => true,
|
|
'read_write_timeout' => 2,
|
|
);
|
|
|
|
$client = new Client($parameters, REDIS_SERVER_VERSION);
|
|
$client->connect();
|
|
$client->select(REDIS_SERVER_DBNUM);
|
|
$client->flushdb();
|
|
|
|
return $client;
|
|
}
|
|
|
|
}
|