This commit is contained in:
Torsten 2018-08-07 10:42:11 +02:00
parent 98419bd18d
commit 8a69e45efa
4919 changed files with 28311 additions and 224136 deletions

0
pfosten/vendor/webmozart/assert/.composer-auth.json vendored Executable file → Normal file
View file

View file

@ -1,2 +0,0 @@
/vendor/
composer.lock

5
pfosten/vendor/webmozart/assert/.styleci.yml vendored Executable file → Normal file
View file

@ -1,8 +1,11 @@
preset: symfony
finder:
exclude:
- "tests"
enabled:
- ordered_use
disabled:
- empty_return
- phpdoc_annotation_without_dot # This is still buggy: https://github.com/symfony/symfony/pull/19198

View file

@ -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

31
pfosten/vendor/webmozart/assert/CHANGELOG.md vendored Executable file → Normal file
View file

@ -1,13 +1,32 @@
Changelog
=========
* 1.2.0 (2016-11-23)
## UNRELEASED
### 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
## 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 +35,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

0
pfosten/vendor/webmozart/assert/LICENSE vendored Executable file → Normal file
View file

60
pfosten/vendor/webmozart/assert/README.md vendored Executable file → Normal file
View file

@ -1,7 +1,7 @@
Webmozart Assert
================
[![Build Status](https://travis-ci.org/webmozart/assert.svg?branch=1.2.0)](https://travis-ci.org/webmozart/assert)
[![Build Status](https://travis-ci.org/webmozart/assert.svg?branch=master)](https://travis-ci.org/webmozart/assert)
[![Build status](https://ci.appveyor.com/api/projects/status/lyg83bcsisrr94se/branch/master?svg=true)](https://ci.appveyor.com/project/webmozart/assert/branch/master)
[![Latest Stable Version](https://poser.pugx.org/webmozart/assert/v/stable.svg)](https://packagist.org/packages/webmozart/assert)
[![Total Downloads](https://poser.pugx.org/webmozart/assert/downloads.svg)](https://packagist.org/packages/webmozart/assert)
@ -89,23 +89,28 @@ 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
`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` a at least one class on the array of classes
`notInstanceOf($value, $class, $message = '')` | Check that a value is not an `instanceof` a class
`isArrayAccessible($value, $message = '')` | Check that a value can be accessed as an array
### Comparison Assertions
@ -134,8 +139,9 @@ 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 contains a substring
`startsWith($value, $prefix, $message = '')` | Check that a string has a prefix
`startsWithLetter($value, $message = '')` | Check that a string starts with a letter
`endsWith($value, $suffix, $message = '')` | Check that a string has a suffix
@ -150,6 +156,7 @@ 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
`notWhitespaceOnly($value, $message = '')` | Check that a string contains at least one non-whitespace character
### File Assertions
@ -175,11 +182,14 @@ 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
`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
### Function Assertions
@ -235,7 +245,7 @@ All contents of this package are licensed under the [MIT license].
[Composer]: https://getcomposer.org
[Bernhard Schussek]: http://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

View file

@ -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

0
pfosten/vendor/webmozart/assert/composer.json vendored Executable file → Normal file
View file

View file

@ -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>

151
pfosten/vendor/webmozart/assert/src/Assert.php vendored Executable file → Normal file
View file

@ -11,12 +11,14 @@
namespace Webmozart\Assert;
use ArrayAccess;
use BadMethodCallException;
use InvalidArgumentException;
use Traversable;
use Exception;
use Throwable;
use Closure;
use Countable;
use Exception;
use InvalidArgumentException;
use Throwable;
use Traversable;
/**
* Efficient assertions to validate the input/output of your methods.
@ -34,8 +36,11 @@ use Closure;
* @method static void nullOrIsCallable($value, $message = '')
* @method static void nullOrIsArray($value, $message = '')
* @method static void nullOrIsTraversable($value, $message = '')
* @method static void nullOrIsArrayAccessible($value, $message = '')
* @method static void nullOrIsCountable($value, $message = '')
* @method static void nullOrIsInstanceOf($value, $class, $message = '')
* @method static void nullOrNotInstanceOf($value, $class, $message = '')
* @method static void nullOrIsInstanceOfAny($value, $classes, $message = '')
* @method static void nullOrIsEmpty($value, $message = '')
* @method static void nullOrNotEmpty($value, $message = '')
* @method static void nullOrTrue($value, $message = '')
@ -51,6 +56,8 @@ use Closure;
* @method static void nullOrRange($value, $min, $max, $message = '')
* @method static void nullOrOneOf($value, $values, $message = '')
* @method static void nullOrContains($value, $subString, $message = '')
* @method static void nullOrNotContains($value, $subString, $message = '')
* @method static void nullOrNotWhitespaceOnly($value, $message = '')
* @method static void nullOrStartsWith($value, $prefix, $message = '')
* @method static void nullOrStartsWithLetter($value, $message = '')
* @method static void nullOrEndsWith($value, $suffix, $message = '')
@ -79,6 +86,9 @@ use Closure;
* @method static void nullOrKeyExists($value, $key, $message = '')
* @method static void nullOrKeyNotExists($value, $key, $message = '')
* @method static void nullOrCount($value, $key, $message = '')
* @method static void nullOrMinCount($value, $min, $message = '')
* @method static void nullOrMaxCount($value, $max, $message = '')
* @method static void nullCountBetween($value, $min, $max, $message = '')
* @method static void nullOrUuid($values, $message = '')
* @method static void allString($values, $message = '')
* @method static void allStringNotEmpty($values, $message = '')
@ -93,8 +103,11 @@ use Closure;
* @method static void allIsCallable($values, $message = '')
* @method static void allIsArray($values, $message = '')
* @method static void allIsTraversable($values, $message = '')
* @method static void allIsArrayAccessible($values, $message = '')
* @method static void allIsCountable($values, $message = '')
* @method static void allIsInstanceOf($values, $class, $message = '')
* @method static void allNotInstanceOf($values, $class, $message = '')
* @method static void allIsInstanceOfAny($values, $classes, $message = '')
* @method static void allNull($values, $message = '')
* @method static void allNotNull($values, $message = '')
* @method static void allIsEmpty($values, $message = '')
@ -112,6 +125,8 @@ use Closure;
* @method static void allRange($values, $min, $max, $message = '')
* @method static void allOneOf($values, $values, $message = '')
* @method static void allContains($values, $subString, $message = '')
* @method static void allNotContains($values, $subString, $message = '')
* @method static void allNotWhitespaceOnly($values, $message = '')
* @method static void allStartsWith($values, $prefix, $message = '')
* @method static void allStartsWithLetter($values, $message = '')
* @method static void allEndsWith($values, $suffix, $message = '')
@ -140,6 +155,9 @@ use Closure;
* @method static void allKeyExists($values, $key, $message = '')
* @method static void allKeyNotExists($values, $key, $message = '')
* @method static void allCount($values, $key, $message = '')
* @method static void allMinCount($values, $min, $message = '')
* @method static void allMaxCount($values, $max, $message = '')
* @method static void allCountBetween($values, $min, $max, $message = '')
* @method static void allUuid($values, $message = '')
*
* @since 1.0
@ -161,7 +179,7 @@ class Assert
public static function stringNotEmpty($value, $message = '')
{
static::string($value, $message);
static::notEmpty($value, $message);
static::notEq($value, '', $message);
}
public static function integer($value, $message = '')
@ -204,6 +222,16 @@ class Assert
}
}
public static function natural($value, $message = '')
{
if (!is_int($value) || $value < 0) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected a non-negative integer. Got %s',
static::valueToString($value)
));
}
}
public static function boolean($value, $message = '')
{
if (!is_bool($value)) {
@ -274,6 +302,14 @@ class Assert
public static function isTraversable($value, $message = '')
{
@trigger_error(
sprintf(
'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.',
__METHOD__
),
E_USER_DEPRECATED
);
if (!is_array($value) && !($value instanceof Traversable)) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected a traversable. Got: %s',
@ -282,6 +318,36 @@ class Assert
}
}
public static function isArrayAccessible($value, $message = '')
{
if (!is_array($value) && !($value instanceof ArrayAccess)) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an array accessible. Got: %s',
static::typeToString($value)
));
}
}
public static function isCountable($value, $message = '')
{
if (!is_array($value) && !($value instanceof Countable)) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected a countable. Got: %s',
static::typeToString($value)
));
}
}
public static function isIterable($value, $message = '')
{
if (!is_array($value) && !($value instanceof Traversable)) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an iterable. Got: %s',
static::typeToString($value)
));
}
}
public static function isInstanceOf($value, $class, $message = '')
{
if (!($value instanceof $class)) {
@ -304,6 +370,21 @@ class Assert
}
}
public static function isInstanceOfAny($value, array $classes, $message = '')
{
foreach ($classes as $class) {
if ($value instanceof $class) {
return;
}
}
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an instance of any of %2$s. Got: %s',
static::typeToString($value),
implode(', ', array_map(array('static', 'valueToString'), $classes))
));
}
public static function isEmpty($value, $message = '')
{
if (!empty($value)) {
@ -483,6 +564,27 @@ class Assert
}
}
public static function notContains($value, $subString, $message = '')
{
if (false !== strpos($value, $subString)) {
static::reportInvalidArgument(sprintf(
$message ?: '%2$s was not expected to be contained in a value. Got: %s',
static::valueToString($value),
static::valueToString($subString)
));
}
}
public static function notWhitespaceOnly($value, $message = '')
{
if (preg_match('/^\s*$/', $value)) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected a non-whitespace string. Got: %s',
static::valueToString($value)
));
}
}
public static function startsWith($value, $prefix, $message = '')
{
if (0 !== strpos($value, $prefix)) {
@ -813,6 +915,42 @@ class Assert
);
}
public static function minCount($array, $min, $message = '')
{
if (count($array) < $min) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an array to contain at least %2$d elements. Got: %d',
count($array),
$min
));
}
}
public static function maxCount($array, $max, $message = '')
{
if (count($array) > $max) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an array to contain at most %2$d elements. Got: %d',
count($array),
$max
));
}
}
public static function countBetween($array, $min, $max, $message = '')
{
$count = count($array);
if ($count < $min || $count > $max) {
static::reportInvalidArgument(sprintf(
$message ?: 'Expected an array to contain between %2$d and %3$d elements. Got: %d',
$count,
$min,
$max
));
}
}
public static function uuid($value, $message = '')
{
$value = str_replace(array('urn:', 'uuid:', '{', '}'), '', $value);
@ -836,6 +974,7 @@ class Assert
static::string($class);
$actual = 'none';
try {
$expression();
} catch (Exception $e) {
@ -869,7 +1008,7 @@ class Assert
}
if ('all' === substr($name, 0, 3)) {
static::isTraversable($arguments[0]);
static::isIterable($arguments[0]);
$method = lcfirst(substr($name, 3));
$args = $arguments;

View file

@ -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);
}
}