PageRenderTime 25ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsType.php

https://gitlab.com/oytunistrator/92five
PHP | 190 lines | 91 code | 18 blank | 81 comment | 2 complexity | 972ec6051aafa736af85be4fdffa955a MD5 | raw file
  1. <?php
  2. /**
  3. * PHPUnit
  4. *
  5. * Copyright (c) 2001-2014, 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. * @author Bernhard Schussek <bschussek@2bepublished.at>
  41. * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
  42. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  43. * @link http://www.phpunit.de/
  44. * @since File available since Release 3.0.0
  45. */
  46. /**
  47. * Constraint that asserts that the value it is evaluated for is of a
  48. * specified type.
  49. *
  50. * The expected value is passed in the constructor.
  51. *
  52. * @package PHPUnit
  53. * @subpackage Framework_Constraint
  54. * @author Sebastian Bergmann <sebastian@phpunit.de>
  55. * @author Bernhard Schussek <bschussek@2bepublished.at>
  56. * @copyright 2001-2014 Sebastian Bergmann <sebastian@phpunit.de>
  57. * @license http://www.opensource.org/licenses/BSD-3-Clause The BSD 3-Clause License
  58. * @link http://www.phpunit.de/
  59. * @since Class available since Release 3.0.0
  60. */
  61. class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint
  62. {
  63. const TYPE_ARRAY = 'array';
  64. const TYPE_BOOL = 'bool';
  65. const TYPE_FLOAT = 'float';
  66. const TYPE_INT = 'int';
  67. const TYPE_NULL = 'null';
  68. const TYPE_NUMERIC = 'numeric';
  69. const TYPE_OBJECT = 'object';
  70. const TYPE_RESOURCE = 'resource';
  71. const TYPE_STRING = 'string';
  72. const TYPE_SCALAR = 'scalar';
  73. const TYPE_CALLABLE = 'callable';
  74. /**
  75. * @var array
  76. */
  77. protected $types = array(
  78. 'array' => TRUE,
  79. 'boolean' => TRUE,
  80. 'bool' => TRUE,
  81. 'float' => TRUE,
  82. 'integer' => TRUE,
  83. 'int' => TRUE,
  84. 'null' => TRUE,
  85. 'numeric' => TRUE,
  86. 'object' => TRUE,
  87. 'resource' => TRUE,
  88. 'string' => TRUE,
  89. 'scalar' => TRUE,
  90. 'callable' => TRUE
  91. );
  92. /**
  93. * @var string
  94. */
  95. protected $type;
  96. /**
  97. * @param string $type
  98. * @throws PHPUnit_Framework_Exception
  99. */
  100. public function __construct($type)
  101. {
  102. if (!isset($this->types[$type])) {
  103. throw new PHPUnit_Framework_Exception(
  104. sprintf(
  105. 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> ' .
  106. 'is not a valid type.',
  107. $type
  108. )
  109. );
  110. }
  111. $this->type = $type;
  112. }
  113. /**
  114. * Evaluates the constraint for parameter $other. Returns TRUE if the
  115. * constraint is met, FALSE otherwise.
  116. *
  117. * @param mixed $other Value or object to evaluate.
  118. * @return bool
  119. */
  120. protected function matches($other)
  121. {
  122. switch ($this->type) {
  123. case 'numeric': {
  124. return is_numeric($other);
  125. }
  126. case 'integer':
  127. case 'int': {
  128. return is_integer($other);
  129. }
  130. case 'float': {
  131. return is_float($other);
  132. }
  133. case 'string': {
  134. return is_string($other);
  135. }
  136. case 'boolean':
  137. case 'bool': {
  138. return is_bool($other);
  139. }
  140. case 'null': {
  141. return is_null($other);
  142. }
  143. case 'array': {
  144. return is_array($other);
  145. }
  146. case 'object': {
  147. return is_object($other);
  148. }
  149. case 'resource': {
  150. return is_resource($other);
  151. }
  152. case 'scalar': {
  153. return is_scalar($other);
  154. }
  155. case 'callable': {
  156. return is_callable($other);
  157. }
  158. }
  159. }
  160. /**
  161. * Returns a string representation of the constraint.
  162. *
  163. * @return string
  164. */
  165. public function toString()
  166. {
  167. return sprintf(
  168. 'is of type "%s"',
  169. $this->type
  170. );
  171. }
  172. }