/lib/vendor/PHPUnit-3.5.3/PHPUnit/Framework/Constraint/StringMatches.php

https://github.com/agallou/BehatCH · PHP · 140 lines · 62 code · 5 blank · 73 comment · 2 complexity · c5d4534a50181a86d52f3aa1068756fb MD5 · raw file

  1. <?php
  2. /**
  3. * PHPUnit
  4. *
  5. * Copyright (c) 2002-2010, Sebastian Bergmann <sebastian@phpunit.de>.
  6. * All rights reserved.
  7. *
  8. * Redistribution and use in source and binary forms, with or without
  9. * modification, are permitted provided that the following conditions
  10. * are met:
  11. *
  12. * * Redistributions of source code must retain the above copyright
  13. * notice, this list of conditions and the following disclaimer.
  14. *
  15. * * Redistributions in binary form must reproduce the above copyright
  16. * notice, this list of conditions and the following disclaimer in
  17. * the documentation and/or other materials provided with the
  18. * distribution.
  19. *
  20. * * Neither the name of Sebastian Bergmann nor the names of his
  21. * contributors may be used to endorse or promote products derived
  22. * from this software without specific prior written permission.
  23. *
  24. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  25. * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  26. * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  27. * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  28. * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  29. * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  30. * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  31. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  32. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
  34. * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  35. * POSSIBILITY OF SUCH DAMAGE.
  36. *
  37. * @package PHPUnit
  38. * @subpackage Framework_Constraint
  39. * @author Sebastian Bergmann <sebastian@phpunit.de>
  40. * @copyright 2002-2010 Sebastian Bergmann <sebastian@phpunit.de>
  41. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  42. * @link http://www.phpunit.de/
  43. * @since File available since Release 3.5.0
  44. */
  45. /**
  46. * ...
  47. *
  48. * @package PHPUnit
  49. * @subpackage Framework_Constraint
  50. * @author Sebastian Bergmann <sebastian@phpunit.de>
  51. * @copyright 2002-2010 Sebastian Bergmann <sebastian@phpunit.de>
  52. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  53. * @version Release: 3.5.3
  54. * @link http://www.phpunit.de/
  55. * @since Class available since Release 3.5.0
  56. */
  57. class PHPUnit_Framework_Constraint_StringMatches extends PHPUnit_Framework_Constraint_PCREMatch
  58. {
  59. /**
  60. * @var string
  61. */
  62. protected $string;
  63. /**
  64. * @param string $string
  65. */
  66. public function __construct($string)
  67. {
  68. $this->pattern = preg_quote(preg_replace('/\r\n/', "\n", $string), '/');
  69. $this->pattern = str_replace(
  70. array(
  71. '%e',
  72. '%s',
  73. '%S',
  74. '%a',
  75. '%A',
  76. '%w',
  77. '%i',
  78. '%d',
  79. '%x',
  80. '%f',
  81. '%c'
  82. ),
  83. array(
  84. '\\' . DIRECTORY_SEPARATOR,
  85. '[^\r\n]+',
  86. '[^\r\n]*',
  87. '.+',
  88. '.*',
  89. '\s*',
  90. '[+-]?\d+',
  91. '\d+',
  92. '[0-9a-fA-F]+',
  93. '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?',
  94. '.'
  95. ),
  96. $this->pattern
  97. );
  98. $this->pattern = '/^' . $this->pattern . '$/s';
  99. $this->string = $string;
  100. }
  101. /**
  102. * Creates the appropriate exception for the constraint which can be caught
  103. * by the unit test system. This can be called if a call to evaluate()
  104. * fails.
  105. *
  106. * @param mixed $other The value passed to evaluate() which failed the
  107. * constraint check.
  108. * @param string $description A string with extra description of what was
  109. * going on while the evaluation failed.
  110. * @param boolean $not Flag to indicate negation.
  111. * @throws PHPUnit_Framework_ExpectationFailedException
  112. */
  113. public function fail($other, $description, $not = FALSE)
  114. {
  115. $failureDescription = $this->failureDescription(
  116. $other,
  117. $description,
  118. $not
  119. );
  120. if (!$not) {
  121. throw new PHPUnit_Framework_ExpectationFailedException(
  122. $failureDescription,
  123. PHPUnit_Framework_ComparisonFailure::diffEqual(
  124. $this->string, $other
  125. ),
  126. $description
  127. );
  128. } else {
  129. throw new PHPUnit_Framework_ExpectationFailedException(
  130. $failureDescription,
  131. NULL
  132. );
  133. }
  134. }
  135. }