/library/PHPUnit/Framework/Constraint/IsType.php

https://github.com/grjones/qframe · PHP · 169 lines · 77 code · 18 blank · 74 comment · 2 complexity · 1b6ec40a085cff71b9c25a68ef59df0a MD5 · raw file

  1. <?php
  2. /**
  3. * PHPUnit
  4. *
  5. * Copyright (c) 2002-2007, 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-2007 Sebastian Bergmann <sb@sebastian-bergmann.de>
  42. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  43. * @version SVN: $Id: IsType.php 1362 2007-09-29 10:56:13Z 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-2007 Sebastian Bergmann <sb@sebastian-bergmann.de>
  61. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  62. * @version Release: 3.2.5
  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. protected $type;
  69. public function __construct($type)
  70. {
  71. switch ($type) {
  72. case 'numeric':
  73. case 'integer':
  74. case 'int':
  75. case 'float':
  76. case 'string':
  77. case 'boolean':
  78. case 'bool':
  79. case 'null':
  80. case 'array':
  81. case 'object':
  82. case 'resource': {
  83. break;
  84. }
  85. default: {
  86. throw new InvalidArgumentException(
  87. sprintf(
  88. 'Type specified for PHPUnit_Framework_Constraint_IsType <%s> is not a valid type.',
  89. $type
  90. )
  91. );
  92. }
  93. }
  94. $this->type = $type;
  95. }
  96. /**
  97. * Evaluates the constraint for parameter $other. Returns TRUE if the
  98. * constraint is met, FALSE otherwise.
  99. *
  100. * @param mixed $other Value or object to evaluate.
  101. * @return bool
  102. */
  103. public function evaluate($other)
  104. {
  105. switch ($this->type) {
  106. case 'numeric': {
  107. return is_numeric($other);
  108. }
  109. case 'integer':
  110. case 'int': {
  111. return is_integer($other);
  112. }
  113. case 'float': {
  114. return is_float($other);
  115. }
  116. case 'string': {
  117. return is_string($other);
  118. }
  119. case 'boolean':
  120. case 'bool': {
  121. return is_bool($other);
  122. }
  123. case 'null': {
  124. return is_null($other);
  125. }
  126. case 'array': {
  127. return is_array($other);
  128. }
  129. case 'object': {
  130. return is_object($other);
  131. }
  132. case 'resource': {
  133. return is_resource($other);
  134. }
  135. }
  136. }
  137. /**
  138. * Returns a string representation of the constraint.
  139. *
  140. * @return string
  141. * @access public
  142. */
  143. public function toString()
  144. {
  145. return sprintf(
  146. 'is of type "%s"',
  147. $this->type
  148. );
  149. }
  150. }
  151. ?>