Files
predis/tests/PHPUnit/RedisCommandConstraint.php
T
Daniele Alessandri 3ae3414a0d [tests] Normalize casing of command identifiers in constraint.
We do not care much about the casing of command IDs in our constraint,
so it makes no difference for use if it is "SET" or "set".
2013-12-01 14:00:57 +01:00

97 lines
2.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.
*/
use Predis\Command\CommandInterface;
/**
* Constraint that verifies a redis command.
*/
class RedisCommandConstraint extends PHPUnit_Framework_Constraint
{
protected $commandID;
protected $arguments;
/**
* @param array $array
*/
public function __construct($command = null, array $arguments = null)
{
if ($command instanceof CommandInterface) {
$this->commandID = strtoupper($command->getId());
$this->arguments = $arguments ?: $commant->getArguments();
} else {
$this->commandID = strtoupper($command);
$this->arguments = $arguments;
}
}
/**
* {@inheritdoc}
*/
public function matches($other)
{
if (!$other instanceof CommandInterface) {
return false;
}
if ($this->commandID && strtoupper($other->getId()) !== $this->commandID) {
return false;
}
if ($this->arguments !== null) {
$otherArguments = $other->getArguments();
if (count($this->arguments) !== count($otherArguments)) {
return false;
}
for ($i = 0; $i < count($this->arguments); $i++) {
if (((string) $this->arguments[$i]) !== ((string) $otherArguments[$i])) {
return false;
}
}
}
return true;
}
/**
* {@inheritdoc}
*
* @todo Improve output using diff when expected and actual arguments of a
* command do not match.
*/
public function toString()
{
$string = 'is a Redis command';
if ($this->commandID) {
$string .= " with ID '{$this->commandID}'";
}
if ($this->arguments) {
$string .= " and the following arguments:\n\n";
$string .= PHPUnit_Util_Type::export($this->arguments);
}
return $string;
}
/**
* {@inheritdoc}
*/
protected function failureDescription($other)
{
$string = is_object($other) ? get_class($other) : $other;
return "$string {$this->toString()}";
}
}