Upgrade framework
This commit is contained in:
7
vendor/webmozart/assert/.composer-auth.json
vendored
7
vendor/webmozart/assert/.composer-auth.json
vendored
@@ -1,7 +0,0 @@
|
||||
{
|
||||
"github-oauth": {
|
||||
"github.com": "PLEASE DO NOT USE THIS TOKEN IN YOUR OWN PROJECTS/FORKS",
|
||||
"github.com": "This token is reserved for testing the webmozart/* repositories",
|
||||
"github.com": "a9debbffdd953ee9b3b82dbc3b807cde2086bb86"
|
||||
}
|
||||
}
|
||||
2
vendor/webmozart/assert/.gitignore
vendored
2
vendor/webmozart/assert/.gitignore
vendored
@@ -1,2 +0,0 @@
|
||||
/vendor/
|
||||
composer.lock
|
||||
8
vendor/webmozart/assert/.styleci.yml
vendored
8
vendor/webmozart/assert/.styleci.yml
vendored
@@ -1,8 +0,0 @@
|
||||
preset: symfony
|
||||
|
||||
enabled:
|
||||
- ordered_use
|
||||
|
||||
disabled:
|
||||
- empty_return
|
||||
- phpdoc_annotation_without_dot # This is still buggy: https://github.com/symfony/symfony/pull/19198
|
||||
39
vendor/webmozart/assert/.travis.yml
vendored
39
vendor/webmozart/assert/.travis.yml
vendored
@@ -1,39 +0,0 @@
|
||||
language: php
|
||||
|
||||
sudo: false
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.composer/cache/files
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- php: 5.3
|
||||
- php: 5.4
|
||||
- php: 5.5
|
||||
- php: 5.6
|
||||
- php: hhvm
|
||||
- php: nightly
|
||||
- php: 7.0
|
||||
env: COVERAGE=yes
|
||||
- php: 7.0
|
||||
env: COMPOSER_FLAGS='--prefer-lowest --prefer-stable'
|
||||
allow_failures:
|
||||
- php: hhvm
|
||||
- php: nightly
|
||||
fast_finish: true
|
||||
|
||||
before_install:
|
||||
- if [[ $TRAVIS_PHP_VERSION != hhvm && $COVERAGE != yes ]]; then phpenv config-rm xdebug.ini; fi;
|
||||
- if [[ $TRAVIS_REPO_SLUG = webmozart/assert ]]; then cp .composer-auth.json ~/.composer/auth.json; fi;
|
||||
- composer self-update
|
||||
|
||||
install: composer update $COMPOSER_FLAGS --prefer-dist --no-interaction
|
||||
|
||||
script: if [[ $COVERAGE = yes ]]; then vendor/bin/phpunit --verbose --coverage-clover=coverage.clover; else vendor/bin/phpunit --verbose; fi
|
||||
|
||||
after_script: if [[ $COVERAGE = yes ]]; then wget https://scrutinizer-ci.com/ocular.phar && php ocular.phar code-coverage:upload --format=php-clover coverage.clover; fi
|
||||
185
vendor/webmozart/assert/CHANGELOG.md
vendored
185
vendor/webmozart/assert/CHANGELOG.md
vendored
@@ -1,13 +1,186 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
* 1.2.0 (2016-11-23)
|
||||
## UNRELEASED
|
||||
|
||||
## 1.11.0
|
||||
|
||||
### Added
|
||||
|
||||
* Added explicit (non magic) `allNullOr*` methods, with `@psalm-assert` annotations, for better Psalm support.
|
||||
|
||||
### Changed
|
||||
|
||||
* Trait methods will now check the assertion themselves, instead of using `__callStatic`
|
||||
* `isList` will now deal correctly with (modified) lists that contain `NaN`
|
||||
* `reportInvalidArgument` now has a return type of `never`.
|
||||
|
||||
### Removed
|
||||
|
||||
* Removed `symfony/polyfill-ctype` as a dependency, and require `ext-cytpe` instead.
|
||||
* You can still require the `symfony/polyfill-ctype` in your project if you need it, as it provides `ext-ctype`
|
||||
|
||||
## 1.10.0
|
||||
|
||||
### Added
|
||||
|
||||
* On invalid assertion, we throw a `Webmozart\Assert\InvalidArgumentException`
|
||||
* Added `Assert::positiveInteger()`
|
||||
|
||||
### Changed
|
||||
|
||||
* Using a trait with real implementations of `all*()` and `nullOr*()` methods to improve psalm compatibility.
|
||||
|
||||
### Removed
|
||||
|
||||
* Support for PHP <7.2
|
||||
|
||||
## 1.9.1
|
||||
|
||||
## Fixed
|
||||
|
||||
* provisional support for PHP 8.0
|
||||
|
||||
## 1.9.0
|
||||
|
||||
* added better Psalm support for `all*` & `nullOr*` methods
|
||||
* These methods are now understood by Psalm through a mixin. You may need a newer version of Psalm in order to use this
|
||||
* added `@psalm-pure` annotation to `Assert::notFalse()`
|
||||
* added more `@psalm-assert` annotations where appropriate
|
||||
|
||||
## Changed
|
||||
|
||||
* the `all*` & `nullOr*` methods are now declared on an interface, instead of `@method` annotations.
|
||||
This interface is linked to the `Assert` class with a `@mixin` annotation. Most IDE's have supported this
|
||||
for a long time, and you should not lose any autocompletion capabilities. PHPStan has supported this since
|
||||
version `0.12.20`. This package is marked incompatible (with a composer conflict) with phpstan version prior to that.
|
||||
If you do not use PHPStan than this does not matter.
|
||||
|
||||
## 1.8.0
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::notStartsWith()`
|
||||
* added `Assert::notEndsWith()`
|
||||
* added `Assert::inArray()`
|
||||
* added `@psalm-pure` annotations to pure assertions
|
||||
|
||||
### Fixed
|
||||
|
||||
* Exception messages of comparisons between `DateTime(Immutable)` objects now display their date & time.
|
||||
* Custom Exception messages for `Assert::count()` now use the values to render the exception message.
|
||||
|
||||
## 1.7.0 (2020-02-14)
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::notFalse()`
|
||||
* added `Assert::isAOf()`
|
||||
* added `Assert::isAnyOf()`
|
||||
* added `Assert::isNotA()`
|
||||
|
||||
## 1.6.0 (2019-11-24)
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::validArrayKey()`
|
||||
* added `Assert::isNonEmptyList()`
|
||||
* added `Assert::isNonEmptyMap()`
|
||||
* added `@throws InvalidArgumentException` annotations to all methods that throw.
|
||||
* added `@psalm-assert` for the list type to the `isList` assertion.
|
||||
|
||||
### Fixed
|
||||
|
||||
* `ResourceBundle` & `SimpleXMLElement` now pass the `isCountable` assertions.
|
||||
They are countable, without implementing the `Countable` interface.
|
||||
* The doc block of `range` now has the proper variables.
|
||||
* An empty array will now pass `isList` and `isMap`. As it is a valid form of both.
|
||||
If a non-empty variant is needed, use `isNonEmptyList` or `isNonEmptyMap`.
|
||||
|
||||
### Changed
|
||||
|
||||
* Removed some `@psalm-assert` annotations, that were 'side effect' assertions See:
|
||||
* [#144](https://github.com/webmozart/assert/pull/144)
|
||||
* [#145](https://github.com/webmozart/assert/issues/145)
|
||||
* [#146](https://github.com/webmozart/assert/pull/146)
|
||||
* [#150](https://github.com/webmozart/assert/pull/150)
|
||||
* If you use Psalm, the minimum version needed is `3.6.0`. Which is enforced through a composer conflict.
|
||||
If you don't use Psalm, then this has no impact.
|
||||
|
||||
## 1.5.0 (2019-08-24)
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::uniqueValues()`
|
||||
* added `Assert::unicodeLetters()`
|
||||
* added: `Assert::email()`
|
||||
* added support for [Psalm](https://github.com/vimeo/psalm), by adding `@psalm-assert` annotations where appropriate.
|
||||
|
||||
### Fixed
|
||||
|
||||
* `Assert::endsWith()` would not give the correct result when dealing with a multibyte suffix.
|
||||
* `Assert::length(), minLength, maxLength, lengthBetween` would not give the correct result when dealing with multibyte characters.
|
||||
|
||||
**NOTE**: These 2 changes may break your assertions if you relied on the fact that multibyte characters didn't behave correctly.
|
||||
|
||||
### Changed
|
||||
|
||||
* The names of some variables have been updated to better reflect what they are.
|
||||
* All function calls are now in their FQN form, slightly increasing performance.
|
||||
* Tests are now properly ran against HHVM-3.30 and PHP nightly.
|
||||
|
||||
### Deprecation
|
||||
|
||||
* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
|
||||
* This was already done in 1.3.0, but it was only done through a silenced `trigger_error`. It is now annotated as well.
|
||||
|
||||
## 1.4.0 (2018-12-25)
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::ip()`
|
||||
* added `Assert::ipv4()`
|
||||
* added `Assert::ipv6()`
|
||||
* added `Assert::notRegex()`
|
||||
* added `Assert::interfaceExists()`
|
||||
* added `Assert::isList()`
|
||||
* added `Assert::isMap()`
|
||||
* added polyfill for ctype
|
||||
|
||||
### Fixed
|
||||
|
||||
* Special case when comparing objects implementing `__toString()`
|
||||
|
||||
## 1.3.0 (2018-01-29)
|
||||
|
||||
### Added
|
||||
|
||||
* added `Assert::minCount()`
|
||||
* added `Assert::maxCount()`
|
||||
* added `Assert::countBetween()`
|
||||
* added `Assert::isCountable()`
|
||||
* added `Assert::notWhitespaceOnly()`
|
||||
* added `Assert::natural()`
|
||||
* added `Assert::notContains()`
|
||||
* added `Assert::isArrayAccessible()`
|
||||
* added `Assert::isInstanceOfAny()`
|
||||
* added `Assert::isIterable()`
|
||||
|
||||
### Fixed
|
||||
|
||||
* `stringNotEmpty` will no longer report "0" is an empty string
|
||||
|
||||
### Deprecation
|
||||
|
||||
* deprecated `Assert::isTraversable()` in favor of `Assert::isIterable()`
|
||||
|
||||
## 1.2.0 (2016-11-23)
|
||||
|
||||
* added `Assert::throws()`
|
||||
* added `Assert::count()`
|
||||
* added extension point `Assert::reportInvalidArgument()` for custom subclasses
|
||||
|
||||
* 1.1.0 (2016-08-09)
|
||||
## 1.1.0 (2016-08-09)
|
||||
|
||||
* added `Assert::object()`
|
||||
* added `Assert::propertyExists()`
|
||||
@@ -16,19 +189,19 @@ Changelog
|
||||
* added `Assert::methodNotExists()`
|
||||
* added `Assert::uuid()`
|
||||
|
||||
* 1.0.2 (2015-08-24)
|
||||
## 1.0.2 (2015-08-24)
|
||||
|
||||
* integrated Style CI
|
||||
* add tests for minimum package dependencies on Travis CI
|
||||
|
||||
* 1.0.1 (2015-05-12)
|
||||
## 1.0.1 (2015-05-12)
|
||||
|
||||
* added support for PHP 5.3.3
|
||||
|
||||
* 1.0.0 (2015-05-12)
|
||||
## 1.0.0 (2015-05-12)
|
||||
|
||||
* first stable release
|
||||
|
||||
* 1.0.0-beta (2015-03-19)
|
||||
## 1.0.0-beta (2015-03-19)
|
||||
|
||||
* first beta release
|
||||
|
||||
143
vendor/webmozart/assert/README.md
vendored
143
vendor/webmozart/assert/README.md
vendored
@@ -1,21 +1,14 @@
|
||||
Webmozart Assert
|
||||
================
|
||||
|
||||
[](https://travis-ci.org/webmozart/assert)
|
||||
[](https://ci.appveyor.com/project/webmozart/assert/branch/master)
|
||||
[](https://packagist.org/packages/webmozart/assert)
|
||||
[](https://packagist.org/packages/webmozart/assert)
|
||||
[](https://www.versioneye.com/php/webmozart:assert/1.2.0)
|
||||
|
||||
Latest release: [1.2.0](https://packagist.org/packages/webmozart/assert#1.2.0)
|
||||
|
||||
PHP >= 5.3.9
|
||||
|
||||
This library contains efficient assertions to test the input and output of
|
||||
your methods. With these assertions, you can greatly reduce the amount of coding
|
||||
needed to write a safe implementation.
|
||||
|
||||
All assertions in the [`Assert`] class throw an `\InvalidArgumentException` if
|
||||
All assertions in the [`Assert`] class throw an `Webmozart\Assert\InvalidArgumentException` if
|
||||
they fail.
|
||||
|
||||
FAQ
|
||||
@@ -27,21 +20,21 @@ This library is heavily inspired by Benjamin Eberlei's wonderful [assert package
|
||||
but fixes a usability issue with error messages that can't be fixed there without
|
||||
breaking backwards compatibility.
|
||||
|
||||
This package features usable error messages by default. However, you can also
|
||||
This package features usable error messages by default. However, you can also
|
||||
easily write custom error messages:
|
||||
|
||||
```
|
||||
Assert::string($path, 'The path is expected to be a string. Got: %s');
|
||||
```
|
||||
|
||||
In [beberlei/assert], the ordering of the `%s` placeholders is different for
|
||||
every assertion. This package, on the contrary, provides consistent placeholder
|
||||
In [beberlei/assert], the ordering of the `%s` placeholders is different for
|
||||
every assertion. This package, on the contrary, provides consistent placeholder
|
||||
ordering for all assertions:
|
||||
|
||||
* `%s`: The tested value as string, e.g. `"/foo/bar"`.
|
||||
* `%2$s`, `%3$s`, ...: Additional assertion-specific values, e.g. the
|
||||
minimum/maximum length, allowed values, etc.
|
||||
|
||||
|
||||
Check the source code of the assertions to find out details about the additional
|
||||
available placeholders.
|
||||
|
||||
@@ -50,8 +43,8 @@ Installation
|
||||
|
||||
Use [Composer] to install the package:
|
||||
|
||||
```
|
||||
$ composer require webmozart/assert
|
||||
```bash
|
||||
composer require webmozart/assert
|
||||
```
|
||||
|
||||
Example
|
||||
@@ -74,11 +67,11 @@ If you create an employee with an invalid ID, an exception is thrown:
|
||||
|
||||
```php
|
||||
new Employee('foobar');
|
||||
// => InvalidArgumentException:
|
||||
// => Webmozart\Assert\InvalidArgumentException:
|
||||
// The employee ID must be an integer. Got: string
|
||||
|
||||
new Employee(-10);
|
||||
// => InvalidArgumentException:
|
||||
// => Webmozart\Assert\InvalidArgumentException:
|
||||
// The employee ID must be a positive integer. Got: -10
|
||||
```
|
||||
|
||||
@@ -89,30 +82,41 @@ The [`Assert`] class provides the following assertions:
|
||||
|
||||
### Type Assertions
|
||||
|
||||
Method | Description
|
||||
----------------------------------------------- | --------------------------------------------------
|
||||
`string($value, $message = '')` | Check that a value is a string
|
||||
`stringNotEmpty($value, $message = '')` | Check that a value is a non-empty string
|
||||
`integer($value, $message = '')` | Check that a value is an integer
|
||||
`integerish($value, $message = '')` | Check that a value casts to an integer
|
||||
`float($value, $message = '')` | Check that a value is a float
|
||||
`numeric($value, $message = '')` | Check that a value is numeric
|
||||
`boolean($value, $message = '')` | Check that a value is a boolean
|
||||
`scalar($value, $message = '')` | Check that a value is a scalar
|
||||
`object($value, $message = '')` | Check that a value is an object
|
||||
`resource($value, $type = null, $message = '')` | Check that a value is a resource
|
||||
`isCallable($value, $message = '')` | Check that a value is a callable
|
||||
`isArray($value, $message = '')` | Check that a value is an array
|
||||
`isTraversable($value, $message = '')` | Check that a value is an array or a `\Traversable`
|
||||
`isInstanceOf($value, $class, $message = '')` | Check that a value is an `instanceof` a class
|
||||
`notInstanceOf($value, $class, $message = '')` | Check that a value is not an `instanceof` a class
|
||||
Method | Description
|
||||
-------------------------------------------------------- | --------------------------------------------------
|
||||
`string($value, $message = '')` | Check that a value is a string
|
||||
`stringNotEmpty($value, $message = '')` | Check that a value is a non-empty string
|
||||
`integer($value, $message = '')` | Check that a value is an integer
|
||||
`integerish($value, $message = '')` | Check that a value casts to an integer
|
||||
`positiveInteger($value, $message = '')` | Check that a value is a positive (non-zero) integer
|
||||
`float($value, $message = '')` | Check that a value is a float
|
||||
`numeric($value, $message = '')` | Check that a value is numeric
|
||||
`natural($value, $message= ''')` | Check that a value is a non-negative integer
|
||||
`boolean($value, $message = '')` | Check that a value is a boolean
|
||||
`scalar($value, $message = '')` | Check that a value is a scalar
|
||||
`object($value, $message = '')` | Check that a value is an object
|
||||
`resource($value, $type = null, $message = '')` | Check that a value is a resource
|
||||
`isCallable($value, $message = '')` | Check that a value is a callable
|
||||
`isArray($value, $message = '')` | Check that a value is an array
|
||||
`isTraversable($value, $message = '')` (deprecated) | Check that a value is an array or a `\Traversable`
|
||||
`isIterable($value, $message = '')` | Check that a value is an array or a `\Traversable`
|
||||
`isCountable($value, $message = '')` | Check that a value is an array or a `\Countable`
|
||||
`isInstanceOf($value, $class, $message = '')` | Check that a value is an `instanceof` a class
|
||||
`isInstanceOfAny($value, array $classes, $message = '')` | Check that a value is an `instanceof` at least one class on the array of classes
|
||||
`notInstanceOf($value, $class, $message = '')` | Check that a value is not an `instanceof` a class
|
||||
`isAOf($value, $class, $message = '')` | Check that a value is of the class or has one of its parents
|
||||
`isAnyOf($value, array $classes, $message = '')` | Check that a value is of at least one of the classes or has one of its parents
|
||||
`isNotA($value, $class, $message = '')` | Check that a value is not of the class or has not one of its parents
|
||||
`isArrayAccessible($value, $message = '')` | Check that a value can be accessed as an array
|
||||
`uniqueValues($values, $message = '')` | Check that the given array contains unique values
|
||||
|
||||
### Comparison Assertions
|
||||
|
||||
Method | Description
|
||||
----------------------------------------------- | --------------------------------------------------
|
||||
----------------------------------------------- | ------------------------------------------------------------------
|
||||
`true($value, $message = '')` | Check that a value is `true`
|
||||
`false($value, $message = '')` | Check that a value is `false`
|
||||
`notFalse($value, $message = '')` | Check that a value is not `false`
|
||||
`null($value, $message = '')` | Check that a value is `null`
|
||||
`notNull($value, $message = '')` | Check that a value is not `null`
|
||||
`isEmpty($value, $message = '')` | Check that a value is `empty()`
|
||||
@@ -126,7 +130,8 @@ Method | Description
|
||||
`lessThan($value, $value2, $message = '')` | Check that a value is less than another
|
||||
`lessThanEq($value, $value2, $message = '')` | Check that a value is less than or equal to another
|
||||
`range($value, $min, $max, $message = '')` | Check that a value is within a range
|
||||
`oneOf($value, array $values, $message = '')` | Check that a value is one of a list of values
|
||||
`inArray($value, array $values, $message = '')` | Check that a value is one of a list of values
|
||||
`oneOf($value, array $values, $message = '')` | Check that a value is one of a list of values (alias of `inArray`)
|
||||
|
||||
### String Assertions
|
||||
|
||||
@@ -134,12 +139,17 @@ You should check that a value is a string with `Assert::string()` before making
|
||||
any of the following assertions.
|
||||
|
||||
Method | Description
|
||||
--------------------------------------------------- | --------------------------------------------------
|
||||
--------------------------------------------------- | -----------------------------------------------------------------
|
||||
`contains($value, $subString, $message = '')` | Check that a string contains a substring
|
||||
`notContains($value, $subString, $message = '')` | Check that a string does not contain a substring
|
||||
`startsWith($value, $prefix, $message = '')` | Check that a string has a prefix
|
||||
`notStartsWith($value, $prefix, $message = '')` | Check that a string does not have a prefix
|
||||
`startsWithLetter($value, $message = '')` | Check that a string starts with a letter
|
||||
`endsWith($value, $suffix, $message = '')` | Check that a string has a suffix
|
||||
`notEndsWith($value, $suffix, $message = '')` | Check that a string does not have a suffix
|
||||
`regex($value, $pattern, $message = '')` | Check that a string matches a regular expression
|
||||
`notRegex($value, $pattern, $message = '')` | Check that a string does not match a regular expression
|
||||
`unicodeLetters($value, $message = '')` | Check that a string contains Unicode letters only
|
||||
`alpha($value, $message = '')` | Check that a string contains letters only
|
||||
`digits($value, $message = '')` | Check that a string contains digits only
|
||||
`alnum($value, $message = '')` | Check that a string contains letters and digits only
|
||||
@@ -150,6 +160,11 @@ Method | Description
|
||||
`maxLength($value, $max, $message = '')` | Check that a string has at most a certain number of characters
|
||||
`lengthBetween($value, $min, $max, $message = '')` | Check that a string has a length in the given range
|
||||
`uuid($value, $message = '')` | Check that a string is a valid UUID
|
||||
`ip($value, $message = '')` | Check that a string is a valid IP (either IPv4 or IPv6)
|
||||
`ipv4($value, $message = '')` | Check that a string is a valid IPv4
|
||||
`ipv6($value, $message = '')` | Check that a string is a valid IPv6
|
||||
`email($value, $message = '')` | Check that a string is a valid e-mail address
|
||||
`notWhitespaceOnly($value, $message = '')` | Check that a string contains at least one non-whitespace character
|
||||
|
||||
### File Assertions
|
||||
|
||||
@@ -167,6 +182,7 @@ Method | Description
|
||||
----------------------------------------------------- | --------------------------------------------------
|
||||
`classExists($value, $message = '')` | Check that a value is an existing class name
|
||||
`subclassOf($value, $class, $message = '')` | Check that a class is a subclass of another
|
||||
`interfaceExists($value, $message = '')` | Check that a value is an existing interface name
|
||||
`implementsInterface($value, $class, $message = '')` | Check that a class implements an interface
|
||||
`propertyExists($value, $property, $message = '')` | Check that a property exists in a class/object
|
||||
`propertyNotExists($value, $property, $message = '')` | Check that a property does not exist in a class/object
|
||||
@@ -175,11 +191,19 @@ Method | Description
|
||||
|
||||
### Array Assertions
|
||||
|
||||
Method | Description
|
||||
------------------------------------------- | --------------------------------------------------
|
||||
`keyExists($array, $key, $message = '')` | Check that a key exists in an array
|
||||
`keyNotExists($array, $key, $message = '')` | Check that a key does not exist in an array
|
||||
`count($array, $number, $message = '')` | Check that an array contains a specific number of elements
|
||||
Method | Description
|
||||
-------------------------------------------------- | ------------------------------------------------------------------
|
||||
`keyExists($array, $key, $message = '')` | Check that a key exists in an array
|
||||
`keyNotExists($array, $key, $message = '')` | Check that a key does not exist in an array
|
||||
`validArrayKey($key, $message = '')` | Check that a value is a valid array key (int or string)
|
||||
`count($array, $number, $message = '')` | Check that an array contains a specific number of elements
|
||||
`minCount($array, $min, $message = '')` | Check that an array contains at least a certain number of elements
|
||||
`maxCount($array, $max, $message = '')` | Check that an array contains at most a certain number of elements
|
||||
`countBetween($array, $min, $max, $message = '')` | Check that an array has a count in the given range
|
||||
`isList($array, $message = '')` | Check that an array is a non-associative list
|
||||
`isNonEmptyList($array, $message = '')` | Check that an array is a non-associative list, and not empty
|
||||
`isMap($array, $message = '')` | Check that an array is associative and has strings as keys
|
||||
`isNonEmptyMap($array, $message = '')` | Check that an array is associative and has strings as keys, and is not empty
|
||||
|
||||
### Function Assertions
|
||||
|
||||
@@ -205,6 +229,33 @@ assertion only if it the value is not `null`:
|
||||
Assert::nullOrString($middleName, 'The middle name must be a string or null. Got: %s');
|
||||
```
|
||||
|
||||
### Extending Assert
|
||||
|
||||
The `Assert` class comes with a few methods, which can be overridden to change the class behaviour. You can also extend it to
|
||||
add your own assertions.
|
||||
|
||||
#### Overriding methods
|
||||
|
||||
Overriding the following methods in your assertion class allows you to change the behaviour of the assertions:
|
||||
|
||||
* `public static function __callStatic($name, $arguments)`
|
||||
* This method is used to 'create' the `nullOr` and `all` versions of the assertions.
|
||||
* `protected static function valueToString($value)`
|
||||
* This method is used for error messages, to convert the value to a string value for displaying. You could use this for representing a value object with a `__toString` method for example.
|
||||
* `protected static function typeToString($value)`
|
||||
* This method is used for error messages, to convert the a value to a string representing its type.
|
||||
* `protected static function strlen($value)`
|
||||
* This method is used to calculate string length for relevant methods, using the `mb_strlen` if available and useful.
|
||||
* `protected static function reportInvalidArgument($message)`
|
||||
* This method is called when an assertion fails, with the specified error message. Here you can throw your own exception, or log something.
|
||||
|
||||
## Static analysis support
|
||||
|
||||
Where applicable, assertion functions are annotated to support Psalm's
|
||||
[Assertion syntax](https://psalm.dev/docs/annotating_code/assertion_syntax/).
|
||||
A dedicated [PHPStan Plugin](https://github.com/phpstan/phpstan-webmozart-assert) is
|
||||
required for proper type support.
|
||||
|
||||
Authors
|
||||
-------
|
||||
|
||||
@@ -219,12 +270,6 @@ Contributions to the package are always welcome!
|
||||
* Report any bugs or issues you find on the [issue tracker].
|
||||
* You can grab the source code at the package's [Git repository].
|
||||
|
||||
Support
|
||||
-------
|
||||
|
||||
If you are having problems, send a mail to bschussek@gmail.com or shout out to
|
||||
[@webmozart] on Twitter.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
@@ -233,9 +278,9 @@ All contents of this package are licensed under the [MIT license].
|
||||
[beberlei/assert]: https://github.com/beberlei/assert
|
||||
[assert package]: https://github.com/beberlei/assert
|
||||
[Composer]: https://getcomposer.org
|
||||
[Bernhard Schussek]: http://webmozarts.com
|
||||
[Bernhard Schussek]: https://webmozarts.com
|
||||
[The Community Contributors]: https://github.com/webmozart/assert/graphs/contributors
|
||||
[issue tracker]: https://github.com/webmozart/assert
|
||||
[issue tracker]: https://github.com/webmozart/assert/issues
|
||||
[Git repository]: https://github.com/webmozart/assert
|
||||
[@webmozart]: https://twitter.com/webmozart
|
||||
[MIT license]: LICENSE
|
||||
|
||||
40
vendor/webmozart/assert/appveyor.yml
vendored
40
vendor/webmozart/assert/appveyor.yml
vendored
@@ -1,40 +0,0 @@
|
||||
build: false
|
||||
platform: x86
|
||||
clone_folder: c:\projects\webmozart\assert
|
||||
|
||||
branches:
|
||||
only:
|
||||
- master
|
||||
|
||||
cache:
|
||||
- c:\php -> appveyor.yml
|
||||
|
||||
init:
|
||||
- SET PATH=c:\php;%PATH%
|
||||
- SET COMPOSER_NO_INTERACTION=1
|
||||
- SET PHP=1
|
||||
|
||||
install:
|
||||
- IF EXIST c:\php (SET PHP=0) ELSE (mkdir c:\php)
|
||||
- cd c:\php
|
||||
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/releases/archives/php-7.0.0-nts-Win32-VC14-x86.zip
|
||||
- IF %PHP%==1 7z x php-7.0.0-nts-Win32-VC14-x86.zip -y >nul
|
||||
- IF %PHP%==1 del /Q *.zip
|
||||
- IF %PHP%==1 echo @php %%~dp0composer.phar %%* > composer.bat
|
||||
- IF %PHP%==1 copy /Y php.ini-development php.ini
|
||||
- IF %PHP%==1 echo max_execution_time=1200 >> php.ini
|
||||
- IF %PHP%==1 echo date.timezone="UTC" >> php.ini
|
||||
- IF %PHP%==1 echo extension_dir=ext >> php.ini
|
||||
- IF %PHP%==1 echo extension=php_curl.dll >> php.ini
|
||||
- IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
|
||||
- IF %PHP%==1 echo extension=php_mbstring.dll >> php.ini
|
||||
- IF %PHP%==1 echo extension=php_fileinfo.dll >> php.ini
|
||||
- appveyor DownloadFile https://getcomposer.org/composer.phar
|
||||
- cd c:\projects\webmozart\assert
|
||||
- mkdir %APPDATA%\Composer
|
||||
- IF %APPVEYOR_REPO_NAME%==webmozart/assert copy /Y .composer-auth.json %APPDATA%\Composer\auth.json
|
||||
- composer update --prefer-dist --no-progress --ansi
|
||||
|
||||
test_script:
|
||||
- cd c:\projects\webmozart\assert
|
||||
- vendor\bin\phpunit.bat --verbose
|
||||
21
vendor/webmozart/assert/composer.json
vendored
21
vendor/webmozart/assert/composer.json
vendored
@@ -1,8 +1,12 @@
|
||||
{
|
||||
"name": "webmozart/assert",
|
||||
"description": "Assertions to validate method input/output with nice error messages.",
|
||||
"keywords": ["assert", "check", "validate"],
|
||||
"license": "MIT",
|
||||
"keywords": [
|
||||
"assert",
|
||||
"check",
|
||||
"validate"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Bernhard Schussek",
|
||||
@@ -10,11 +14,15 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": "^5.3.3 || ^7.0"
|
||||
"php": "^7.2 || ^8.0",
|
||||
"ext-ctype": "*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^4.6",
|
||||
"sebastian/version": "^1.0.1"
|
||||
"phpunit/phpunit": "^8.5.13"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<0.12.20",
|
||||
"vimeo/psalm": "<4.6.1 || 4.6.2"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
@@ -23,12 +31,13 @@
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
"Webmozart\\Assert\\Tests\\": "tests/"
|
||||
"Webmozart\\Assert\\Tests\\": "tests/",
|
||||
"Webmozart\\Assert\\Bin\\": "bin/src"
|
||||
}
|
||||
},
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.3-dev"
|
||||
"dev-master": "1.10-dev"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
vendor/webmozart/assert/phpunit.xml.dist
vendored
16
vendor/webmozart/assert/phpunit.xml.dist
vendored
@@ -1,16 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<phpunit bootstrap="vendor/autoload.php" colors="true">
|
||||
<testsuites>
|
||||
<testsuite name="Webmozart Assert Test Suite">
|
||||
<directory suffix="Test.php">./tests/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
|
||||
<!-- Whitelist for code coverage -->
|
||||
<filter>
|
||||
<whitelist>
|
||||
<directory suffix=".php">./src/</directory>
|
||||
</whitelist>
|
||||
</filter>
|
||||
</phpunit>
|
||||
1690
vendor/webmozart/assert/src/Assert.php
vendored
1690
vendor/webmozart/assert/src/Assert.php
vendored
File diff suppressed because it is too large
Load Diff
16
vendor/webmozart/assert/src/InvalidArgumentException.php
vendored
Normal file
16
vendor/webmozart/assert/src/InvalidArgumentException.php
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the webmozart/assert package.
|
||||
*
|
||||
* (c) Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Webmozart\Assert;
|
||||
|
||||
class InvalidArgumentException extends \InvalidArgumentException
|
||||
{
|
||||
}
|
||||
5089
vendor/webmozart/assert/src/Mixin.php
vendored
Normal file
5089
vendor/webmozart/assert/src/Mixin.php
vendored
Normal file
File diff suppressed because it is too large
Load Diff
451
vendor/webmozart/assert/tests/AssertTest.php
vendored
451
vendor/webmozart/assert/tests/AssertTest.php
vendored
@@ -1,451 +0,0 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of the webmozart/assert package.
|
||||
*
|
||||
* (c) Bernhard Schussek <bschussek@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace Webmozart\Assert\Tests;
|
||||
|
||||
use ArrayIterator;
|
||||
use Exception;
|
||||
use Error;
|
||||
use LogicException;
|
||||
use PHPUnit_Framework_TestCase;
|
||||
use RuntimeException;
|
||||
use stdClass;
|
||||
use Webmozart\Assert\Assert;
|
||||
|
||||
/**
|
||||
* @since 1.0
|
||||
*
|
||||
* @author Bernhard Schussek <bschussek@gmail.com>
|
||||
*/
|
||||
class AssertTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
private static $resource;
|
||||
|
||||
public static function getResource()
|
||||
{
|
||||
if (!static::$resource) {
|
||||
static::$resource = fopen(__FILE__, 'r');
|
||||
}
|
||||
|
||||
return static::$resource;
|
||||
}
|
||||
|
||||
public static function tearDownAfterClass()
|
||||
{
|
||||
@fclose(self::$resource);
|
||||
}
|
||||
|
||||
public function getTests()
|
||||
{
|
||||
$resource = self::getResource();
|
||||
|
||||
return array(
|
||||
array('string', array('value'), true),
|
||||
array('string', array(''), true),
|
||||
array('string', array(1234), false),
|
||||
array('stringNotEmpty', array('value'), true),
|
||||
array('stringNotEmpty', array(''), false),
|
||||
array('stringNotEmpty', array(1234), false),
|
||||
array('integer', array(123), true),
|
||||
array('integer', array('123'), false),
|
||||
array('integer', array(1.0), false),
|
||||
array('integer', array(1.23), false),
|
||||
array('integerish', array(1.0), true),
|
||||
array('integerish', array(1.23), false),
|
||||
array('integerish', array(123), true),
|
||||
array('integerish', array('123'), true),
|
||||
array('float', array(1.0), true),
|
||||
array('float', array(1.23), true),
|
||||
array('float', array(123), false),
|
||||
array('float', array('123'), false),
|
||||
array('numeric', array(1.0), true),
|
||||
array('numeric', array(1.23), true),
|
||||
array('numeric', array(123), true),
|
||||
array('numeric', array('123'), true),
|
||||
array('numeric', array('foo'), false),
|
||||
array('boolean', array(true), true),
|
||||
array('boolean', array(false), true),
|
||||
array('boolean', array(1), false),
|
||||
array('boolean', array('1'), false),
|
||||
array('scalar', array('1'), true),
|
||||
array('scalar', array(123), true),
|
||||
array('scalar', array(true), true),
|
||||
array('scalar', array(null), false),
|
||||
array('scalar', array(array()), false),
|
||||
array('scalar', array(new stdClass()), false),
|
||||
array('object', array(new stdClass()), true),
|
||||
array('object', array(new RuntimeException()), true),
|
||||
array('object', array(null), false),
|
||||
array('object', array(true), false),
|
||||
array('object', array(1), false),
|
||||
array('object', array(array()), false),
|
||||
array('resource', array($resource), true),
|
||||
array('resource', array($resource, 'stream'), true),
|
||||
array('resource', array($resource, 'other'), false),
|
||||
array('resource', array(1), false),
|
||||
array('isCallable', array('strlen'), true),
|
||||
array('isCallable', array(array($this, 'getTests')), true),
|
||||
array('isCallable', array(function () {}), true),
|
||||
array('isCallable', array(1234), false),
|
||||
array('isCallable', array('foobar'), false),
|
||||
array('isArray', array(array()), true),
|
||||
array('isArray', array(array(1, 2, 3)), true),
|
||||
array('isArray', array(new ArrayIterator(array())), false),
|
||||
array('isArray', array(123), false),
|
||||
array('isArray', array(new stdClass()), false),
|
||||
array('isTraversable', array(array()), true),
|
||||
array('isTraversable', array(array(1, 2, 3)), true),
|
||||
array('isTraversable', array(new ArrayIterator(array())), true),
|
||||
array('isTraversable', array(123), false),
|
||||
array('isTraversable', array(new stdClass()), false),
|
||||
array('isInstanceOf', array(new stdClass(), 'stdClass'), true),
|
||||
array('isInstanceOf', array(new Exception(), 'stdClass'), false),
|
||||
array('isInstanceOf', array(123, 'stdClass'), false),
|
||||
array('isInstanceOf', array(array(), 'stdClass'), false),
|
||||
array('notInstanceOf', array(new stdClass(), 'stdClass'), false),
|
||||
array('notInstanceOf', array(new Exception(), 'stdClass'), true),
|
||||
array('notInstanceOf', array(123, 'stdClass'), true),
|
||||
array('notInstanceOf', array(array(), 'stdClass'), true),
|
||||
array('true', array(true), true),
|
||||
array('true', array(false), false),
|
||||
array('true', array(1), false),
|
||||
array('true', array(null), false),
|
||||
array('false', array(false), true),
|
||||
array('false', array(true), false),
|
||||
array('false', array(1), false),
|
||||
array('false', array(0), false),
|
||||
array('false', array(null), false),
|
||||
array('null', array(null), true),
|
||||
array('null', array(false), false),
|
||||
array('null', array(0), false),
|
||||
array('notNull', array(false), true),
|
||||
array('notNull', array(0), true),
|
||||
array('notNull', array(null), false),
|
||||
array('isEmpty', array(null), true),
|
||||
array('isEmpty', array(false), true),
|
||||
array('isEmpty', array(0), true),
|
||||
array('isEmpty', array(''), true),
|
||||
array('isEmpty', array(1), false),
|
||||
array('isEmpty', array('a'), false),
|
||||
array('notEmpty', array(1), true),
|
||||
array('notEmpty', array('a'), true),
|
||||
array('notEmpty', array(null), false),
|
||||
array('notEmpty', array(false), false),
|
||||
array('notEmpty', array(0), false),
|
||||
array('notEmpty', array(''), false),
|
||||
array('eq', array(1, 1), true),
|
||||
array('eq', array(1, '1'), true),
|
||||
array('eq', array(1, true), true),
|
||||
array('eq', array(1, 0), false),
|
||||
array('notEq', array(1, 0), true),
|
||||
array('notEq', array(1, 1), false),
|
||||
array('notEq', array(1, '1'), false),
|
||||
array('notEq', array(1, true), false),
|
||||
array('same', array(1, 1), true),
|
||||
array('same', array(1, '1'), false),
|
||||
array('same', array(1, true), false),
|
||||
array('same', array(1, 0), false),
|
||||
array('notSame', array(1, 0), true),
|
||||
array('notSame', array(1, 1), false),
|
||||
array('notSame', array(1, '1'), true),
|
||||
array('notSame', array(1, true), true),
|
||||
array('greaterThan', array(1, 0), true),
|
||||
array('greaterThan', array(0, 0), false),
|
||||
array('greaterThanEq', array(2, 1), true),
|
||||
array('greaterThanEq', array(1, 1), true),
|
||||
array('greaterThanEq', array(0, 1), false),
|
||||
array('lessThan', array(0, 1), true),
|
||||
array('lessThan', array(1, 1), false),
|
||||
array('lessThanEq', array(0, 1), true),
|
||||
array('lessThanEq', array(1, 1), true),
|
||||
array('lessThanEq', array(2, 1), false),
|
||||
array('range', array(1, 1, 2), true),
|
||||
array('range', array(2, 1, 2), true),
|
||||
array('range', array(0, 1, 2), false),
|
||||
array('range', array(3, 1, 2), false),
|
||||
array('oneOf', array(1, array(1, 2, 3)), true),
|
||||
array('oneOf', array(1, array('1', '2', '3')), false),
|
||||
array('contains', array('abcd', 'ab'), true),
|
||||
array('contains', array('abcd', 'bc'), true),
|
||||
array('contains', array('abcd', 'cd'), true),
|
||||
array('contains', array('abcd', 'de'), false),
|
||||
array('contains', array('', 'de'), false),
|
||||
array('startsWith', array('abcd', 'ab'), true),
|
||||
array('startsWith', array('abcd', 'bc'), false),
|
||||
array('startsWith', array('', 'bc'), false),
|
||||
array('startsWithLetter', array('abcd'), true),
|
||||
array('startsWithLetter', array('1abcd'), false),
|
||||
array('startsWithLetter', array(''), false),
|
||||
array('endsWith', array('abcd', 'cd'), true),
|
||||
array('endsWith', array('abcd', 'bc'), false),
|
||||
array('endsWith', array('', 'bc'), false),
|
||||
array('regex', array('abcd', '~^ab~'), true),
|
||||
array('regex', array('abcd', '~^bc~'), false),
|
||||
array('regex', array('', '~^bc~'), false),
|
||||
array('alpha', array('abcd'), true),
|
||||
array('alpha', array('ab1cd'), false),
|
||||
array('alpha', array(''), false),
|
||||
array('digits', array('1234'), true),
|
||||
array('digits', array('12a34'), false),
|
||||
array('digits', array(''), false),
|
||||
array('alnum', array('ab12'), true),
|
||||
array('alnum', array('ab12$'), false),
|
||||
array('alnum', array(''), false),
|
||||
array('lower', array('abcd'), true),
|
||||
array('lower', array('abCd'), false),
|
||||
array('lower', array('ab_d'), false),
|
||||
array('lower', array(''), false),
|
||||
array('upper', array('ABCD'), true),
|
||||
array('upper', array('ABcD'), false),
|
||||
array('upper', array('AB_D'), false),
|
||||
array('upper', array(''), false),
|
||||
array('length', array('abcd', 4), true),
|
||||
array('length', array('abc', 4), false),
|
||||
array('length', array('abcde', 4), false),
|
||||
array('length', array('äbcd', 4), true, true),
|
||||
array('length', array('äbc', 4), false, true),
|
||||
array('length', array('äbcde', 4), false, true),
|
||||
array('minLength', array('abcd', 4), true),
|
||||
array('minLength', array('abcde', 4), true),
|
||||
array('minLength', array('abc', 4), false),
|
||||
array('minLength', array('äbcd', 4), true, true),
|
||||
array('minLength', array('äbcde', 4), true, true),
|
||||
array('minLength', array('äbc', 4), false, true),
|
||||
array('maxLength', array('abcd', 4), true),
|
||||
array('maxLength', array('abc', 4), true),
|
||||
array('maxLength', array('abcde', 4), false),
|
||||
array('maxLength', array('äbcd', 4), true, true),
|
||||
array('maxLength', array('äbc', 4), true, true),
|
||||
array('maxLength', array('äbcde', 4), false, true),
|
||||
array('lengthBetween', array('abcd', 3, 5), true),
|
||||
array('lengthBetween', array('abc', 3, 5), true),
|
||||
array('lengthBetween', array('abcde', 3, 5), true),
|
||||
array('lengthBetween', array('ab', 3, 5), false),
|
||||
array('lengthBetween', array('abcdef', 3, 5), false),
|
||||
array('lengthBetween', array('äbcd', 3, 5), true, true),
|
||||
array('lengthBetween', array('äbc', 3, 5), true, true),
|
||||
array('lengthBetween', array('äbcde', 3, 5), true, true),
|
||||
array('lengthBetween', array('äb', 3, 5), false, true),
|
||||
array('lengthBetween', array('äbcdef', 3, 5), false, true),
|
||||
array('fileExists', array(__FILE__), true),
|
||||
array('fileExists', array(__DIR__), true),
|
||||
array('fileExists', array(__DIR__.'/foobar'), false),
|
||||
array('file', array(__FILE__), true),
|
||||
array('file', array(__DIR__), false),
|
||||
array('file', array(__DIR__.'/foobar'), false),
|
||||
array('directory', array(__DIR__), true),
|
||||
array('directory', array(__FILE__), false),
|
||||
array('directory', array(__DIR__.'/foobar'), false),
|
||||
// no tests for readable()/writable() for now
|
||||
array('classExists', array(__CLASS__), true),
|
||||
array('classExists', array(__NAMESPACE__.'\Foobar'), false),
|
||||
array('subclassOf', array(__CLASS__, 'PHPUnit_Framework_TestCase'), true),
|
||||
array('subclassOf', array(__CLASS__, 'stdClass'), false),
|
||||
array('implementsInterface', array('ArrayIterator', 'Traversable'), true),
|
||||
array('implementsInterface', array(__CLASS__, 'Traversable'), false),
|
||||
array('propertyExists', array((object) array('property' => 0), 'property'), true),
|
||||
array('propertyExists', array((object) array('property' => null), 'property'), true),
|
||||
array('propertyExists', array((object) array('property' => null), 'foo'), false),
|
||||
array('propertyNotExists', array((object) array('property' => 0), 'property'), false),
|
||||
array('propertyNotExists', array((object) array('property' => null), 'property'), false),
|
||||
array('propertyNotExists', array((object) array('property' => null), 'foo'), true),
|
||||
array('methodExists', array('RuntimeException', 'getMessage'), true),
|
||||
array('methodExists', array(new RuntimeException(), 'getMessage'), true),
|
||||
array('methodExists', array('stdClass', 'getMessage'), false),
|
||||
array('methodExists', array(new stdClass(), 'getMessage'), false),
|
||||
array('methodExists', array(null, 'getMessage'), false),
|
||||
array('methodExists', array(true, 'getMessage'), false),
|
||||
array('methodExists', array(1, 'getMessage'), false),
|
||||
array('methodNotExists', array('RuntimeException', 'getMessage'), false),
|
||||
array('methodNotExists', array(new RuntimeException(), 'getMessage'), false),
|
||||
array('methodNotExists', array('stdClass', 'getMessage'), true),
|
||||
array('methodNotExists', array(new stdClass(), 'getMessage'), true),
|
||||
array('methodNotExists', array(null, 'getMessage'), true),
|
||||
array('methodNotExists', array(true, 'getMessage'), true),
|
||||
array('methodNotExists', array(1, 'getMessage'), true),
|
||||
array('keyExists', array(array('key' => 0), 'key'), true),
|
||||
array('keyExists', array(array('key' => null), 'key'), true),
|
||||
array('keyExists', array(array('key' => null), 'foo'), false),
|
||||
array('keyNotExists', array(array('key' => 0), 'key'), false),
|
||||
array('keyNotExists', array(array('key' => null), 'key'), false),
|
||||
array('keyNotExists', array(array('key' => null), 'foo'), true),
|
||||
array('count', array(array(0, 1, 2), 3), true),
|
||||
array('count', array(array(0, 1, 2), 2), false),
|
||||
array('uuid', array('00000000-0000-0000-0000-000000000000'), true),
|
||||
array('uuid', array('ff6f8cb0-c57d-21e1-9b21-0800200c9a66'), true),
|
||||
array('uuid', array('ff6f8cb0-c57d-11e1-9b21-0800200c9a66'), true),
|
||||
array('uuid', array('ff6f8cb0-c57d-31e1-9b21-0800200c9a66'), true),
|
||||
array('uuid', array('ff6f8cb0-c57d-41e1-9b21-0800200c9a66'), true),
|
||||
array('uuid', array('ff6f8cb0-c57d-51e1-9b21-0800200c9a66'), true),
|
||||
array('uuid', array('FF6F8CB0-C57D-11E1-9B21-0800200C9A66'), true),
|
||||
array('uuid', array('zf6f8cb0-c57d-11e1-9b21-0800200c9a66'), false),
|
||||
array('uuid', array('af6f8cb0c57d11e19b210800200c9a66'), false),
|
||||
array('uuid', array('ff6f8cb0-c57da-51e1-9b21-0800200c9a66'), false),
|
||||
array('uuid', array('af6f8cb-c57d-11e1-9b21-0800200c9a66'), false),
|
||||
array('uuid', array('3f6f8cb0-c57d-11e1-9b21-0800200c9a6'), false),
|
||||
array('throws', array(function() { throw new LogicException('test'); }, 'LogicException'), true),
|
||||
array('throws', array(function() { throw new LogicException('test'); }, 'IllogicException'), false),
|
||||
array('throws', array(function() { throw new Exception('test'); }), true),
|
||||
array('throws', array(function() { trigger_error('test'); }, 'Throwable'), true, false, 70000),
|
||||
array('throws', array(function() { trigger_error('test'); }, 'Unthrowable'), false, false, 70000),
|
||||
array('throws', array(function() { throw new Error(); }, 'Throwable'), true, true, 70000),
|
||||
);
|
||||
}
|
||||
|
||||
public function getMethods()
|
||||
{
|
||||
$methods = array();
|
||||
|
||||
foreach ($this->getTests() as $params) {
|
||||
$methods[$params[0]] = array($params[0]);
|
||||
}
|
||||
|
||||
return array_values($methods);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTests
|
||||
*/
|
||||
public function testAssert($method, $args, $success, $multibyte = false, $minVersion = null)
|
||||
{
|
||||
if ($minVersion && PHP_VERSION_ID < $minVersion) {
|
||||
$this->markTestSkipped(sprintf('This test requires php %s or upper.', $minVersion));
|
||||
|
||||
return;
|
||||
}
|
||||
if ($multibyte && !function_exists('mb_strlen')) {
|
||||
$this->markTestSkipped('The function mb_strlen() is not available');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$success) {
|
||||
$this->setExpectedException('\InvalidArgumentException');
|
||||
}
|
||||
|
||||
call_user_func_array(array('Webmozart\Assert\Assert', $method), $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTests
|
||||
*/
|
||||
public function testNullOr($method, $args, $success, $multibyte = false, $minVersion = null)
|
||||
{
|
||||
if ($minVersion && PHP_VERSION_ID < $minVersion) {
|
||||
$this->markTestSkipped(sprintf('This test requires php %s or upper.', $minVersion));
|
||||
|
||||
return;
|
||||
}
|
||||
if ($multibyte && !function_exists('mb_strlen')) {
|
||||
$this->markTestSkipped('The function mb_strlen() is not available');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$success && null !== reset($args)) {
|
||||
$this->setExpectedException('\InvalidArgumentException');
|
||||
}
|
||||
|
||||
call_user_func_array(array('Webmozart\Assert\Assert', 'nullOr'.ucfirst($method)), $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getMethods
|
||||
*/
|
||||
public function testNullOrAcceptsNull($method)
|
||||
{
|
||||
call_user_func(array('Webmozart\Assert\Assert', 'nullOr'.ucfirst($method)), null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTests
|
||||
*/
|
||||
public function testAllArray($method, $args, $success, $multibyte = false, $minVersion = null)
|
||||
{
|
||||
if ($minVersion && PHP_VERSION_ID < $minVersion) {
|
||||
$this->markTestSkipped(sprintf('This test requires php %s or upper.', $minVersion));
|
||||
|
||||
return;
|
||||
}
|
||||
if ($multibyte && !function_exists('mb_strlen')) {
|
||||
$this->markTestSkipped('The function mb_strlen() is not available');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$success) {
|
||||
$this->setExpectedException('\InvalidArgumentException');
|
||||
}
|
||||
|
||||
$arg = array_shift($args);
|
||||
array_unshift($args, array($arg));
|
||||
|
||||
call_user_func_array(array('Webmozart\Assert\Assert', 'all'.ucfirst($method)), $args);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getTests
|
||||
*/
|
||||
public function testAllTraversable($method, $args, $success, $multibyte = false, $minVersion = null)
|
||||
{
|
||||
if ($minVersion && PHP_VERSION_ID < $minVersion) {
|
||||
$this->markTestSkipped(sprintf('This test requires php %s or upper.', $minVersion));
|
||||
|
||||
return;
|
||||
}
|
||||
if ($multibyte && !function_exists('mb_strlen')) {
|
||||
$this->markTestSkipped('The function mb_strlen() is not available');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if (!$success) {
|
||||
$this->setExpectedException('\InvalidArgumentException');
|
||||
}
|
||||
|
||||
$arg = array_shift($args);
|
||||
array_unshift($args, new ArrayIterator(array($arg)));
|
||||
|
||||
call_user_func_array(array('Webmozart\Assert\Assert', 'all'.ucfirst($method)), $args);
|
||||
}
|
||||
|
||||
public function getStringConversions()
|
||||
{
|
||||
return array(
|
||||
array('integer', array('foobar'), 'Expected an integer. Got: string'),
|
||||
array('string', array(1), 'Expected a string. Got: integer'),
|
||||
array('string', array(true), 'Expected a string. Got: boolean'),
|
||||
array('string', array(null), 'Expected a string. Got: NULL'),
|
||||
array('string', array(array()), 'Expected a string. Got: array'),
|
||||
array('string', array(new stdClass()), 'Expected a string. Got: stdClass'),
|
||||
array('string', array(self::getResource()), 'Expected a string. Got: resource'),
|
||||
|
||||
array('eq', array('1', '2'), 'Expected a value equal to "2". Got: "1"'),
|
||||
array('eq', array(1, 2), 'Expected a value equal to 2. Got: 1'),
|
||||
array('eq', array(true, false), 'Expected a value equal to false. Got: true'),
|
||||
array('eq', array(true, null), 'Expected a value equal to null. Got: true'),
|
||||
array('eq', array(null, true), 'Expected a value equal to true. Got: null'),
|
||||
array('eq', array(array(1), array(2)), 'Expected a value equal to array. Got: array'),
|
||||
array('eq', array(new ArrayIterator(array()), new stdClass()), 'Expected a value equal to stdClass. Got: ArrayIterator'),
|
||||
array('eq', array(1, self::getResource()), 'Expected a value equal to resource. Got: 1'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getStringConversions
|
||||
*/
|
||||
public function testConvertValuesToStrings($method, $args, $exceptionMessage)
|
||||
{
|
||||
$this->setExpectedException('\InvalidArgumentException', $exceptionMessage);
|
||||
|
||||
call_user_func_array(array('Webmozart\Assert\Assert', $method), $args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user