kekrozsak/vendor/swiftmailer/swiftmailer/tests/helpers/Swift/Tests/IdenticalBinaryExpectation.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)
);
}
}
}