79 lines
1.9 KiB
PHP
79 lines
1.9 KiB
PHP
<?php
|
|
|
|
/**
|
|
* A binary safe string comparison.
|
|
* @package Swift
|
|
* @subpackage Tests
|
|
* @author Chris Corbyn
|
|
*/
|
|
class Swift_Tests_IdenticalBinaryExpectation extends SimpleExpectation
|
|
{
|
|
/**
|
|
* The subject to compare with.
|
|
* @var string
|
|
* @access private
|
|
*/
|
|
private $_left;
|
|
|
|
/**
|
|
* Creates a new IdenticalBinaryExpectation comparing with $left.
|
|
* @param string $left hand side of comparison
|
|
* @param string $message for expecation
|
|
*/
|
|
public function __construct($left, $message = '%s')
|
|
{
|
|
parent::__construct($message);
|
|
$this->_left = $left;
|
|
}
|
|
|
|
/**
|
|
* Get the given string of bytes as a stirng of Hexadecimal sequences.
|
|
* @param string $binary
|
|
* @return string
|
|
*/
|
|
public function asHexString($binary)
|
|
{
|
|
$hex = '';
|
|
|
|
$bytes = unpack('H*', $binary);
|
|
|
|
foreach ($bytes as &$byte) {
|
|
$byte = strtoupper($byte);
|
|
}
|
|
|
|
return implode('', $bytes);
|
|
}
|
|
|
|
/**
|
|
* Test that the passed subject ($right) is identical to $left.
|
|
* @param string $right, subject
|
|
* @return boolean
|
|
*/
|
|
public function test($right)
|
|
{
|
|
$aHex = $this->asHexString($this->_left);
|
|
$bHex = $this->asHexString($right);
|
|
|
|
return $aHex === $bHex;
|
|
}
|
|
|
|
/**
|
|
* Get the message depending upon whether this expectation is satisfied.
|
|
* @param $right subject to compare against
|
|
* @return string
|
|
*/
|
|
public function testMessage($right)
|
|
{
|
|
if ($this->test($right)) {
|
|
return 'Identical binary expectation [' . $this->asHexString($right) . ']';
|
|
} else {
|
|
$this->_dumper=new SimpleDumper();
|
|
return 'Identical binary expectation fails ' .
|
|
$this->_dumper->describeDifference(
|
|
$this->asHexString($this->_left),
|
|
$this->asHexString($right)
|
|
);
|
|
}
|
|
}
|
|
}
|