Files
predis/tests/Predis/Command/CommandTest.php
T
Daniele Alessandri 5c5dd40527 Remove implementation of Predis\Command\Command::__toString().
Issue #151 pointed to a flaw in how command instances were converted
to strings: we were simply truncating their arguments when exceeding
a certain size as this was mostly intended for logging or debugging,
but this approach breaks strings containing multibyte characters so
we decided to drop this feature altogether for the sake of simplicity.

It is still possible to replicate the same (and eventually improved)
behavior externally by fetching ID and arguments of a command out of
a command instance using the public methods made available by the
Predis\Command\CommandInterface.
2014-03-25 15:32:20 +01:00

151 lines
4.1 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\Command;
use PredisTestCase;
/**
*
*/
class CommandTest extends PredisTestCase
{
/**
* @group disconnected
*/
public function testImplementsCorrectInterface()
{
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$this->assertInstanceOf('Predis\Command\CommandInterface', $command);
}
/**
* @group disconnected
*/
public function testGetEmptyArguments()
{
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$this->assertEmpty($command->getArguments());
}
/**
* @group disconnected
*/
public function testSetRawArguments()
{
$arguments = array('1st', '2nd', '3rd');
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$command->setRawArguments($arguments);
$this->assertEquals($arguments, $command->getArguments());
}
/**
* @group disconnected
*
* @todo We cannot set an expectation for Command::filterArguments when we
* invoke Command::setArguments() because it is protected. I wonder
* how we can do that.
*/
public function testSetArguments()
{
$arguments = array('1st', '2nd', '3rd');
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$command->setArguments($arguments);
$this->assertEquals($arguments, $command->getArguments());
}
/**
* @group disconnected
*/
public function testGetArgumentAtIndex()
{
$arguments = array('1st', '2nd', '3rd');
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$command->setArguments($arguments);
$this->assertEquals($arguments[0], $command->getArgument(0));
$this->assertEquals($arguments[2], $command->getArgument(2));
$this->assertNull($command->getArgument(10));
}
/**
* @group disconnected
*/
public function testParseResponse()
{
$response = 'response-buffer';
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$this->assertEquals($response, $command->parseResponse($response));
}
/**
* @group disconnected
*/
public function testSetAndGetHash()
{
$hash = "key-hash";
$command = $this->getMockForAbstractClass('Predis\Command\Command');
$command->setRawArguments(array('key'));
$this->assertNull($command->getHash());
$command->setHash($hash);
$this->assertSame($hash, $command->getHash());
$command->setArguments(array('key'));
$this->assertNull($command->getHash());
$command->setHash($hash);
$command->setRawArguments(array('key'));
$this->assertNull($command->getHash());
}
/**
* @group disconnected
*/
public function testNormalizeArguments()
{
$arguments = array('arg1', 'arg2', 'arg3', 'arg4');
$this->assertSame($arguments, Command::normalizeArguments($arguments));
$this->assertSame($arguments, Command::normalizeArguments(array($arguments)));
$arguments = array(array(), array());
$this->assertSame($arguments, Command::normalizeArguments($arguments));
$arguments = array(new \stdClass());
$this->assertSame($arguments, Command::normalizeArguments($arguments));
}
/**
* @group disconnected
*/
public function testNormalizeVariadic()
{
$arguments = array('key', 'value1', 'value2', 'value3');
$this->assertSame($arguments, Command::normalizeVariadic($arguments));
$this->assertSame($arguments, Command::normalizeVariadic(array('key', array('value1', 'value2', 'value3'))));
$arguments = array(new \stdClass());
$this->assertSame($arguments, Command::normalizeVariadic($arguments));
}
}