No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

63 líneas
1.2KB

  1. <?php
  2. /**
  3. * A binary safe string comparison.
  4. *
  5. * @author Chris Corbyn
  6. */
  7. class IdenticalBinaryConstraint extends \PHPUnit_Framework_Constraint
  8. {
  9. protected $value;
  10. public function __construct($value)
  11. {
  12. $this->value = $value;
  13. }
  14. /**
  15. * Evaluates the constraint for parameter $other. Returns TRUE if the
  16. * constraint is met, FALSE otherwise.
  17. *
  18. * @param mixed $other Value or object to evaluate.
  19. *
  20. * @return bool
  21. */
  22. public function matches($other)
  23. {
  24. $aHex = $this->asHexString($this->value);
  25. $bHex = $this->asHexString($other);
  26. return $aHex === $bHex;
  27. }
  28. /**
  29. * Returns a string representation of the constraint.
  30. *
  31. * @return string
  32. */
  33. public function toString()
  34. {
  35. return 'indentical binary';
  36. }
  37. /**
  38. * Get the given string of bytes as a stirng of Hexadecimal sequences.
  39. *
  40. * @param string $binary
  41. *
  42. * @return string
  43. */
  44. private function asHexString($binary)
  45. {
  46. $hex = '';
  47. $bytes = unpack('H*', $binary);
  48. foreach ($bytes as &$byte) {
  49. $byte = strtoupper($byte);
  50. }
  51. return implode('', $bytes);
  52. }
  53. }