PageRenderTime 52ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/script/lib/PHPUnit/Framework/Constraint/IsType.php

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