comparison vendor/webmozart/assert/src/Assert.php @ 12:7a779792577d

Update Drupal core to v8.4.5 (via Composer)
author Chris Cannam
date Fri, 23 Feb 2018 15:52:07 +0000
parents 4c8ae668cc8c
children 129ea1e6d783
comparison
equal deleted inserted replaced
11:bfffd8d7479a 12:7a779792577d
9 * file that was distributed with this source code. 9 * file that was distributed with this source code.
10 */ 10 */
11 11
12 namespace Webmozart\Assert; 12 namespace Webmozart\Assert;
13 13
14 use ArrayAccess;
14 use BadMethodCallException; 15 use BadMethodCallException;
16 use Closure;
17 use Countable;
18 use Exception;
15 use InvalidArgumentException; 19 use InvalidArgumentException;
20 use Throwable;
16 use Traversable; 21 use Traversable;
17 use Exception;
18 use Throwable;
19 use Closure;
20 22
21 /** 23 /**
22 * Efficient assertions to validate the input/output of your methods. 24 * Efficient assertions to validate the input/output of your methods.
23 * 25 *
24 * @method static void nullOrString($value, $message = '') 26 * @method static void nullOrString($value, $message = '')
32 * @method static void nullOrObject($value, $message = '') 34 * @method static void nullOrObject($value, $message = '')
33 * @method static void nullOrResource($value, $type = null, $message = '') 35 * @method static void nullOrResource($value, $type = null, $message = '')
34 * @method static void nullOrIsCallable($value, $message = '') 36 * @method static void nullOrIsCallable($value, $message = '')
35 * @method static void nullOrIsArray($value, $message = '') 37 * @method static void nullOrIsArray($value, $message = '')
36 * @method static void nullOrIsTraversable($value, $message = '') 38 * @method static void nullOrIsTraversable($value, $message = '')
39 * @method static void nullOrIsArrayAccessible($value, $message = '')
40 * @method static void nullOrIsCountable($value, $message = '')
37 * @method static void nullOrIsInstanceOf($value, $class, $message = '') 41 * @method static void nullOrIsInstanceOf($value, $class, $message = '')
38 * @method static void nullOrNotInstanceOf($value, $class, $message = '') 42 * @method static void nullOrNotInstanceOf($value, $class, $message = '')
43 * @method static void nullOrIsInstanceOfAny($value, $classes, $message = '')
39 * @method static void nullOrIsEmpty($value, $message = '') 44 * @method static void nullOrIsEmpty($value, $message = '')
40 * @method static void nullOrNotEmpty($value, $message = '') 45 * @method static void nullOrNotEmpty($value, $message = '')
41 * @method static void nullOrTrue($value, $message = '') 46 * @method static void nullOrTrue($value, $message = '')
42 * @method static void nullOrFalse($value, $message = '') 47 * @method static void nullOrFalse($value, $message = '')
43 * @method static void nullOrEq($value, $value2, $message = '') 48 * @method static void nullOrEq($value, $value2, $message = '')
49 * @method static void nullOrLessThan($value, $value2, $message = '') 54 * @method static void nullOrLessThan($value, $value2, $message = '')
50 * @method static void nullOrLessThanEq($value, $value2, $message = '') 55 * @method static void nullOrLessThanEq($value, $value2, $message = '')
51 * @method static void nullOrRange($value, $min, $max, $message = '') 56 * @method static void nullOrRange($value, $min, $max, $message = '')
52 * @method static void nullOrOneOf($value, $values, $message = '') 57 * @method static void nullOrOneOf($value, $values, $message = '')
53 * @method static void nullOrContains($value, $subString, $message = '') 58 * @method static void nullOrContains($value, $subString, $message = '')
59 * @method static void nullOrNotContains($value, $subString, $message = '')
60 * @method static void nullOrNotWhitespaceOnly($value, $message = '')
54 * @method static void nullOrStartsWith($value, $prefix, $message = '') 61 * @method static void nullOrStartsWith($value, $prefix, $message = '')
55 * @method static void nullOrStartsWithLetter($value, $message = '') 62 * @method static void nullOrStartsWithLetter($value, $message = '')
56 * @method static void nullOrEndsWith($value, $suffix, $message = '') 63 * @method static void nullOrEndsWith($value, $suffix, $message = '')
57 * @method static void nullOrRegex($value, $pattern, $message = '') 64 * @method static void nullOrRegex($value, $pattern, $message = '')
58 * @method static void nullOrAlpha($value, $message = '') 65 * @method static void nullOrAlpha($value, $message = '')
77 * @method static void nullOrMethodExists($value, $method, $message = '') 84 * @method static void nullOrMethodExists($value, $method, $message = '')
78 * @method static void nullOrMethodNotExists($value, $method, $message = '') 85 * @method static void nullOrMethodNotExists($value, $method, $message = '')
79 * @method static void nullOrKeyExists($value, $key, $message = '') 86 * @method static void nullOrKeyExists($value, $key, $message = '')
80 * @method static void nullOrKeyNotExists($value, $key, $message = '') 87 * @method static void nullOrKeyNotExists($value, $key, $message = '')
81 * @method static void nullOrCount($value, $key, $message = '') 88 * @method static void nullOrCount($value, $key, $message = '')
89 * @method static void nullOrMinCount($value, $min, $message = '')
90 * @method static void nullOrMaxCount($value, $max, $message = '')
91 * @method static void nullCountBetween($value, $min, $max, $message = '')
82 * @method static void nullOrUuid($values, $message = '') 92 * @method static void nullOrUuid($values, $message = '')
83 * @method static void allString($values, $message = '') 93 * @method static void allString($values, $message = '')
84 * @method static void allStringNotEmpty($values, $message = '') 94 * @method static void allStringNotEmpty($values, $message = '')
85 * @method static void allInteger($values, $message = '') 95 * @method static void allInteger($values, $message = '')
86 * @method static void allIntegerish($values, $message = '') 96 * @method static void allIntegerish($values, $message = '')
91 * @method static void allObject($values, $message = '') 101 * @method static void allObject($values, $message = '')
92 * @method static void allResource($values, $type = null, $message = '') 102 * @method static void allResource($values, $type = null, $message = '')
93 * @method static void allIsCallable($values, $message = '') 103 * @method static void allIsCallable($values, $message = '')
94 * @method static void allIsArray($values, $message = '') 104 * @method static void allIsArray($values, $message = '')
95 * @method static void allIsTraversable($values, $message = '') 105 * @method static void allIsTraversable($values, $message = '')
106 * @method static void allIsArrayAccessible($values, $message = '')
107 * @method static void allIsCountable($values, $message = '')
96 * @method static void allIsInstanceOf($values, $class, $message = '') 108 * @method static void allIsInstanceOf($values, $class, $message = '')
97 * @method static void allNotInstanceOf($values, $class, $message = '') 109 * @method static void allNotInstanceOf($values, $class, $message = '')
110 * @method static void allIsInstanceOfAny($values, $classes, $message = '')
98 * @method static void allNull($values, $message = '') 111 * @method static void allNull($values, $message = '')
99 * @method static void allNotNull($values, $message = '') 112 * @method static void allNotNull($values, $message = '')
100 * @method static void allIsEmpty($values, $message = '') 113 * @method static void allIsEmpty($values, $message = '')
101 * @method static void allNotEmpty($values, $message = '') 114 * @method static void allNotEmpty($values, $message = '')
102 * @method static void allTrue($values, $message = '') 115 * @method static void allTrue($values, $message = '')
110 * @method static void allLessThan($values, $value2, $message = '') 123 * @method static void allLessThan($values, $value2, $message = '')
111 * @method static void allLessThanEq($values, $value2, $message = '') 124 * @method static void allLessThanEq($values, $value2, $message = '')
112 * @method static void allRange($values, $min, $max, $message = '') 125 * @method static void allRange($values, $min, $max, $message = '')
113 * @method static void allOneOf($values, $values, $message = '') 126 * @method static void allOneOf($values, $values, $message = '')
114 * @method static void allContains($values, $subString, $message = '') 127 * @method static void allContains($values, $subString, $message = '')
128 * @method static void allNotContains($values, $subString, $message = '')
129 * @method static void allNotWhitespaceOnly($values, $message = '')
115 * @method static void allStartsWith($values, $prefix, $message = '') 130 * @method static void allStartsWith($values, $prefix, $message = '')
116 * @method static void allStartsWithLetter($values, $message = '') 131 * @method static void allStartsWithLetter($values, $message = '')
117 * @method static void allEndsWith($values, $suffix, $message = '') 132 * @method static void allEndsWith($values, $suffix, $message = '')
118 * @method static void allRegex($values, $pattern, $message = '') 133 * @method static void allRegex($values, $pattern, $message = '')
119 * @method static void allAlpha($values, $message = '') 134 * @method static void allAlpha($values, $message = '')
138 * @method static void allMethodExists($values, $method, $message = '') 153 * @method static void allMethodExists($values, $method, $message = '')
139 * @method static void allMethodNotExists($values, $method, $message = '') 154 * @method static void allMethodNotExists($values, $method, $message = '')
140 * @method static void allKeyExists($values, $key, $message = '') 155 * @method static void allKeyExists($values, $key, $message = '')
141 * @method static void allKeyNotExists($values, $key, $message = '') 156 * @method static void allKeyNotExists($values, $key, $message = '')
142 * @method static void allCount($values, $key, $message = '') 157 * @method static void allCount($values, $key, $message = '')
158 * @method static void allMinCount($values, $min, $message = '')
159 * @method static void allMaxCount($values, $max, $message = '')
160 * @method static void allCountBetween($values, $min, $max, $message = '')
143 * @method static void allUuid($values, $message = '') 161 * @method static void allUuid($values, $message = '')
144 * 162 *
145 * @since 1.0 163 * @since 1.0
146 * 164 *
147 * @author Bernhard Schussek <bschussek@gmail.com> 165 * @author Bernhard Schussek <bschussek@gmail.com>
159 } 177 }
160 178
161 public static function stringNotEmpty($value, $message = '') 179 public static function stringNotEmpty($value, $message = '')
162 { 180 {
163 static::string($value, $message); 181 static::string($value, $message);
164 static::notEmpty($value, $message); 182 static::notEq($value, '', $message);
165 } 183 }
166 184
167 public static function integer($value, $message = '') 185 public static function integer($value, $message = '')
168 { 186 {
169 if (!is_int($value)) { 187 if (!is_int($value)) {
198 { 216 {
199 if (!is_numeric($value)) { 217 if (!is_numeric($value)) {
200 static::reportInvalidArgument(sprintf( 218 static::reportInvalidArgument(sprintf(
201 $message ?: 'Expected a numeric. Got: %s', 219 $message ?: 'Expected a numeric. Got: %s',
202 static::typeToString($value) 220 static::typeToString($value)
221 ));
222 }
223 }
224
225 public static function natural($value, $message = '')
226 {
227 if (!is_int($value) || $value < 0) {
228 static::reportInvalidArgument(sprintf(
229 $message ?: 'Expected a non-negative integer. Got %s',
230 static::valueToString($value)
203 )); 231 ));
204 } 232 }
205 } 233 }
206 234
207 public static function boolean($value, $message = '') 235 public static function boolean($value, $message = '')
272 } 300 }
273 } 301 }
274 302
275 public static function isTraversable($value, $message = '') 303 public static function isTraversable($value, $message = '')
276 { 304 {
305 @trigger_error(
306 sprintf(
307 'The "%s" assertion is deprecated. You should stop using it, as it will soon be removed in 2.0 version. Use "isIterable" or "isInstanceOf" instead.',
308 __METHOD__
309 ),
310 E_USER_DEPRECATED
311 );
312
277 if (!is_array($value) && !($value instanceof Traversable)) { 313 if (!is_array($value) && !($value instanceof Traversable)) {
278 static::reportInvalidArgument(sprintf( 314 static::reportInvalidArgument(sprintf(
279 $message ?: 'Expected a traversable. Got: %s', 315 $message ?: 'Expected a traversable. Got: %s',
316 static::typeToString($value)
317 ));
318 }
319 }
320
321 public static function isArrayAccessible($value, $message = '')
322 {
323 if (!is_array($value) && !($value instanceof ArrayAccess)) {
324 static::reportInvalidArgument(sprintf(
325 $message ?: 'Expected an array accessible. Got: %s',
326 static::typeToString($value)
327 ));
328 }
329 }
330
331 public static function isCountable($value, $message = '')
332 {
333 if (!is_array($value) && !($value instanceof Countable)) {
334 static::reportInvalidArgument(sprintf(
335 $message ?: 'Expected a countable. Got: %s',
336 static::typeToString($value)
337 ));
338 }
339 }
340
341 public static function isIterable($value, $message = '')
342 {
343 if (!is_array($value) && !($value instanceof Traversable)) {
344 static::reportInvalidArgument(sprintf(
345 $message ?: 'Expected an iterable. Got: %s',
280 static::typeToString($value) 346 static::typeToString($value)
281 )); 347 ));
282 } 348 }
283 } 349 }
284 350
300 $message ?: 'Expected an instance other than %2$s. Got: %s', 366 $message ?: 'Expected an instance other than %2$s. Got: %s',
301 static::typeToString($value), 367 static::typeToString($value),
302 $class 368 $class
303 )); 369 ));
304 } 370 }
371 }
372
373 public static function isInstanceOfAny($value, array $classes, $message = '')
374 {
375 foreach ($classes as $class) {
376 if ($value instanceof $class) {
377 return;
378 }
379 }
380
381 static::reportInvalidArgument(sprintf(
382 $message ?: 'Expected an instance of any of %2$s. Got: %s',
383 static::typeToString($value),
384 implode(', ', array_map(array('static', 'valueToString'), $classes))
385 ));
305 } 386 }
306 387
307 public static function isEmpty($value, $message = '') 388 public static function isEmpty($value, $message = '')
308 { 389 {
309 if (!empty($value)) { 390 if (!empty($value)) {
477 if (false === strpos($value, $subString)) { 558 if (false === strpos($value, $subString)) {
478 static::reportInvalidArgument(sprintf( 559 static::reportInvalidArgument(sprintf(
479 $message ?: 'Expected a value to contain %2$s. Got: %s', 560 $message ?: 'Expected a value to contain %2$s. Got: %s',
480 static::valueToString($value), 561 static::valueToString($value),
481 static::valueToString($subString) 562 static::valueToString($subString)
563 ));
564 }
565 }
566
567 public static function notContains($value, $subString, $message = '')
568 {
569 if (false !== strpos($value, $subString)) {
570 static::reportInvalidArgument(sprintf(
571 $message ?: '%2$s was not expected to be contained in a value. Got: %s',
572 static::valueToString($value),
573 static::valueToString($subString)
574 ));
575 }
576 }
577
578 public static function notWhitespaceOnly($value, $message = '')
579 {
580 if (preg_match('/^\s*$/', $value)) {
581 static::reportInvalidArgument(sprintf(
582 $message ?: 'Expected a non-whitespace string. Got: %s',
583 static::valueToString($value)
482 )); 584 ));
483 } 585 }
484 } 586 }
485 587
486 public static function startsWith($value, $prefix, $message = '') 588 public static function startsWith($value, $prefix, $message = '')
811 $number, 913 $number,
812 $message ?: sprintf('Expected an array to contain %d elements. Got: %d.', $number, count($array)) 914 $message ?: sprintf('Expected an array to contain %d elements. Got: %d.', $number, count($array))
813 ); 915 );
814 } 916 }
815 917
918 public static function minCount($array, $min, $message = '')
919 {
920 if (count($array) < $min) {
921 static::reportInvalidArgument(sprintf(
922 $message ?: 'Expected an array to contain at least %2$d elements. Got: %d',
923 count($array),
924 $min
925 ));
926 }
927 }
928
929 public static function maxCount($array, $max, $message = '')
930 {
931 if (count($array) > $max) {
932 static::reportInvalidArgument(sprintf(
933 $message ?: 'Expected an array to contain at most %2$d elements. Got: %d',
934 count($array),
935 $max
936 ));
937 }
938 }
939
940 public static function countBetween($array, $min, $max, $message = '')
941 {
942 $count = count($array);
943
944 if ($count < $min || $count > $max) {
945 static::reportInvalidArgument(sprintf(
946 $message ?: 'Expected an array to contain between %2$d and %3$d elements. Got: %d',
947 $count,
948 $min,
949 $max
950 ));
951 }
952 }
953
816 public static function uuid($value, $message = '') 954 public static function uuid($value, $message = '')
817 { 955 {
818 $value = str_replace(array('urn:', 'uuid:', '{', '}'), '', $value); 956 $value = str_replace(array('urn:', 'uuid:', '{', '}'), '', $value);
819 957
820 // The nil UUID is special form of UUID that is specified to have all 958 // The nil UUID is special form of UUID that is specified to have all
834 public static function throws(Closure $expression, $class = 'Exception', $message = '') 972 public static function throws(Closure $expression, $class = 'Exception', $message = '')
835 { 973 {
836 static::string($class); 974 static::string($class);
837 975
838 $actual = 'none'; 976 $actual = 'none';
977
839 try { 978 try {
840 $expression(); 979 $expression();
841 } catch (Exception $e) { 980 } catch (Exception $e) {
842 $actual = get_class($e); 981 $actual = get_class($e);
843 if ($e instanceof $class) { 982 if ($e instanceof $class) {
867 1006
868 return; 1007 return;
869 } 1008 }
870 1009
871 if ('all' === substr($name, 0, 3)) { 1010 if ('all' === substr($name, 0, 3)) {
872 static::isTraversable($arguments[0]); 1011 static::isIterable($arguments[0]);
873 1012
874 $method = lcfirst(substr($name, 3)); 1013 $method = lcfirst(substr($name, 3));
875 $args = $arguments; 1014 $args = $arguments;
876 1015
877 foreach ($arguments[0] as $entry) { 1016 foreach ($arguments[0] as $entry) {