/flow3-1.0.0alpha7/Packages/Framework/PHPUnit/Resources/PHP/PHPUnit/Util/Type.php

https://github.com/ochoto/framework-benchs · PHP · 198 lines · 117 code · 25 blank · 56 comment · 26 complexity · c601e150b5b26428d7b3ceb846cdeef2 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 Sebastian Bergmann <sb@sebastian-bergmann.de>
  40. * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
  41. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  42. * @version SVN: $Id: Type.php 5454 2009-12-17 15:40:48Z sb $
  43. * @link http://www.phpunit.de/
  44. * @since File available since Release 3.0.0
  45. */
  46. require_once 'PHPUnit/Util/Filter.php';
  47. PHPUnit_Util_Filter::addFileToFilter(__FILE__, 'PHPUNIT');
  48. /**
  49. * Utility class for textual type (and value) representation.
  50. *
  51. * @category Testing
  52. * @package PHPUnit
  53. * @author Sebastian Bergmann <sb@sebastian-bergmann.de>
  54. * @copyright 2002-2009 Sebastian Bergmann <sb@sebastian-bergmann.de>
  55. * @license http://www.opensource.org/licenses/bsd-license.php BSD License
  56. * @version Release: @package_version@
  57. * @link http://www.phpunit.de/
  58. * @since Class available since Release 3.0.0
  59. */
  60. class PHPUnit_Util_Type
  61. {
  62. public static function isType($type)
  63. {
  64. return in_array(
  65. $type,
  66. array(
  67. 'numeric',
  68. 'integer',
  69. 'int',
  70. 'float',
  71. 'string',
  72. 'boolean',
  73. 'bool',
  74. 'null',
  75. 'array',
  76. 'object',
  77. 'resource',
  78. 'scalar'
  79. )
  80. );
  81. }
  82. public static function shortenedExport($value)
  83. {
  84. if (is_string($value)) {
  85. return self::shortenedString($value);
  86. }
  87. elseif (is_array($value)) {
  88. if (count($value) == 0) {
  89. return 'array()';
  90. }
  91. $a1 = array_slice($value, 0, 1, TRUE);
  92. $k1 = key($a1);
  93. $v1 = $a1[$k1];
  94. if (is_string($v1)) {
  95. $v1 = self::shortenedString($v1);
  96. }
  97. elseif (is_array($v1)) {
  98. $v1 = 'array(...)';
  99. } else {
  100. $v1 = self::toString($v1);
  101. }
  102. $a2 = FALSE;
  103. if (count($value) > 1) {
  104. $a2 = array_slice($value, -1, 1, TRUE);
  105. $k2 = key($a2);
  106. $v2 = $a2[$k2];
  107. if (is_string($v2)) {
  108. $v2 = self::shortenedString($v2);
  109. }
  110. elseif (is_array($v2)) {
  111. $v2 = 'array(...)';
  112. } else {
  113. $v2 = self::toString($v2);
  114. }
  115. }
  116. $text = 'array( ' . self::toString($k1) . ' => ' . $v1;
  117. if ($a2 !== FALSE) {
  118. $text .= ', ..., ' . self::toString($k2) . ' => ' . $v2 . ' )';
  119. } else {
  120. $text .= ' )';
  121. }
  122. return $text;
  123. }
  124. elseif (is_object($value)) {
  125. return get_class($value) . '(...)';
  126. }
  127. return self::toString($value);
  128. }
  129. public static function shortenedString($string)
  130. {
  131. $string = preg_replace('#\n|\r\n|\r#', ' ', $string);
  132. if (strlen($string) > 14) {
  133. return PHPUnit_Util_Type::toString(
  134. substr($string, 0, 7) . '...' . substr($string, -7)
  135. );
  136. } else {
  137. return PHPUnit_Util_Type::toString($string);
  138. }
  139. }
  140. public static function toString($value, $short = FALSE)
  141. {
  142. if (is_array($value) || is_object($value)) {
  143. if (!$short) {
  144. return "\n" . print_r($value, TRUE);
  145. } else {
  146. if (is_array($value)) {
  147. return '<array>';
  148. } else {
  149. return '<' . get_class($value) . '>';
  150. }
  151. }
  152. }
  153. if (is_string($value) && strpos($value, "\n") !== FALSE) {
  154. return '<text>';
  155. }
  156. if (!is_null($value)) {
  157. $type = gettype($value) . ':';
  158. } else {
  159. $type = '';
  160. $value = 'null';
  161. }
  162. if (is_bool($value)) {
  163. if ($value === TRUE) {
  164. $value = 'true';
  165. }
  166. else if ($value === FALSE) {
  167. $value = 'false';
  168. }
  169. }
  170. return '<' . $type . $value . '>';
  171. }
  172. }
  173. ?>