/modules/phpunit-1.0/vendor/PHPUnit/Framework/Constraint/IsType.php

https://github.com/robertleeplummerjr/bluebox · PHP · 178 lines · 86 code · 19 blank · 73 comment · 2 complexity · 5301b32cc161e9601fb6548736a4f52d MD5 · raw file

  1. <?php
  2. /**
  3. * PHPUnit
  4. *
  5. * Copyright (c) 2002-2009, Sebastian Bergmann <sb@sebastian-bergmann.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. * @category Testing
  38. * @package PHPUnit
  39. * @author Jan Borsodi <jb@ez.no>
  40. * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
  41. * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
  42. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  43. * @version SVN: $Id: IsType.php 4404 2008-12-31 09:27:18Z sb $
  44. * @link http://www.phpunit.de/
  45. * @since File available since Release 3.0.0
  46. */
  47. require_once 'PHPUnit/Framework.php';
  48. require_once 'PHPUnit/Util/Filter.php';
  49. PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');
  50. /**
  51. * Constraint that asserts that the value it is evaluated for is of a
  52. * specified type.
  53. *
  54. * The expected value is passed in the constructor.
  55. *
  56. * @category Testing
  57. * @package PHPUnit
  58. * @author Jan Borsodi <jb@ez.no>
  59. * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
  60. * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
  61. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  62. * @version Release: @package_version@
  63. * @link http://www.phpunit.de/
  64. * @since Class available since Release 3.0.0
  65. */
  66. class PHPUnit_Framework_Constraint_IsType extends PHPUnit_Framework_Constraint
  67. {
  68. const TYPE_ARRAY = 'array';
  69. const TYPE_BOOL = 'bool';
  70. const TYPE_FLOAT = 'float';
  71. const TYPE_INT = 'int';
  72. const TYPE_NULL = 'null';
  73. const TYPE_NUMERIC = 'numeric';
  74. const TYPE_OBJECT = 'object';
  75. const TYPE_RESOURCE = 'resource';
  76. const TYPE_STRING = 'string';
  77. protected $type;
  78. public function __construct($type)
  79. {
  80. switch ($type) {
  81. case 'array':
  82. case 'boolean':
  83. case 'bool':
  84. case 'float':
  85. case 'integer':
  86. case 'int':
  87. case 'null':
  88. case 'numeric':
  89. case 'object':
  90. case 'resource':
  91. case 'string': {
  92. break;
  93. }
  94. default: {
  95. throw new InvalidArgumentException(
  96. sprintf(
  97. 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> is not a valid type.',
  98. $type
  99. )
  100. );
  101. }
  102. }
  103. $this->type = $type;
  104. }
  105. /**
  106. * Evaluates the constraint for parameter $other. Returns TRUE if the
  107. * constraint is met, FALSE otherwise.
  108. *
  109. * @param mixed $other Value or object to evaluate.
  110. * @return bool
  111. */
  112. public function evaluate($other)
  113. {
  114. switch ($this->type) {
  115. case 'numeric': {
  116. return is_numeric($other);
  117. }
  118. case 'integer':
  119. case 'int': {
  120. return is_integer($other);
  121. }
  122. case 'float': {
  123. return is_float($other);
  124. }
  125. case 'string': {
  126. return is_string($other);
  127. }
  128. case 'boolean':
  129. case 'bool': {
  130. return is_bool($other);
  131. }
  132. case 'null': {
  133. return is_null($other);
  134. }
  135. case 'array': {
  136. return is_array($other);
  137. }
  138. case 'object': {
  139. return is_object($other);
  140. }
  141. case 'resource': {
  142. return is_resource($other);
  143. }
  144. }
  145. }
  146. /**
  147. * Returns a string representation of the constraint.
  148. *
  149. * @return string
  150. */
  151. public function toString()
  152. {
  153. return sprintf(
  154. 'is of type "%s"',
  155. $this->type
  156. );
  157. }
  158. }
  159. ?>