/libs/vendor/PHPUnit/PHPUnit/Util/Type.php

https://github.com/cheungyang/Utopia2 · PHP · 197 lines · 116 code · 25 blank · 56 comment · 26 complexity · dc1a88413f1cdb22380a9a19bea04401 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 4404 2008-12-31 09:27:18Z sb $
  43. * @link http://www.phpunit.de/
  44. * @since File available since Release 3.0.0
  45. */
  46. require_once DIR_LIB_ROOT. 'vendor/PHPUnit/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: 3.3.16
  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. )
  79. );
  80. }
  81. public static function shortenedExport($value)
  82. {
  83. if (is_string($value)) {
  84. return self::shortenedString($value);
  85. }
  86. elseif (is_array($value)) {
  87. if (count($value) == 0) {
  88. return 'array()';
  89. }
  90. $a1 = array_slice($value, 0, 1, TRUE);
  91. $k1 = key($a1);
  92. $v1 = $a1[$k1];
  93. if (is_string($v1)) {
  94. $v1 = self::shortenedString($v1);
  95. }
  96. elseif (is_array($v1)) {
  97. $v1 = 'array(...)';
  98. } else {
  99. $v1 = self::toString($v1);
  100. }
  101. $a2 = FALSE;
  102. if (count($value) > 1) {
  103. $a2 = array_slice($value, -1, 1, TRUE);
  104. $k2 = key($a2);
  105. $v2 = $a2[$k2];
  106. if (is_string($v2)) {
  107. $v2 = self::shortenedString($v2);
  108. }
  109. elseif (is_array($v2)) {
  110. $v2 = 'array(...)';
  111. } else {
  112. $v2 = self::toString($v2);
  113. }
  114. }
  115. $text = 'array( ' . self::toString($k1) . ' => ' . $v1;
  116. if ($a2 !== FALSE) {
  117. $text .= ', ..., ' . self::toString($k2) . ' => ' . $v2 . ' )';
  118. } else {
  119. $text .= ' )';
  120. }
  121. return $text;
  122. }
  123. elseif (is_object($value)) {
  124. return get_class($value) . '(...)';
  125. }
  126. return self::toString($value);
  127. }
  128. public static function shortenedString($string)
  129. {
  130. $string = preg_replace('#\n|\r\n|\r#', ' ', $string);
  131. if (strlen($string) > 14) {
  132. return PHPUnit_Util_Type::toString(
  133. substr($string, 0, 7) . '...' . substr($string, -7)
  134. );
  135. } else {
  136. return PHPUnit_Util_Type::toString($string);
  137. }
  138. }
  139. public static function toString($value, $short = FALSE)
  140. {
  141. if (is_array($value) || is_object($value)) {
  142. if (!$short) {
  143. return "\n" . print_r($value, TRUE);
  144. } else {
  145. if (is_array($value)) {
  146. return '<array>';
  147. } else {
  148. return '<' . get_class($value) . '>';
  149. }
  150. }
  151. }
  152. if (is_string($value) && strpos($value, "\n") !== FALSE) {
  153. return '<text>';
  154. }
  155. if (!is_null($value)) {
  156. $type = gettype($value) . ':';
  157. } else {
  158. $type = '';
  159. $value = 'null';
  160. }
  161. if (is_bool($value)) {
  162. if ($value === TRUE) {
  163. $value = 'true';
  164. }
  165. else if ($value === FALSE) {
  166. $value = 'false';
  167. }
  168. }
  169. return '<' . $type . $value . '>';
  170. }
  171. }
  172. ?>