Вход Регистрация
Файл: gapps/vendor/webmozart/assert/tests/AssertTest.php
Строк: 407
<?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 WebmozartAssertTests;

use 
ArrayIterator;
use 
Exception;
use 
Error;
use 
LogicException;
use 
PHPUnit_Framework_TestCase;
use 
RuntimeException;
use 
stdClass;
use 
WebmozartAssertAssert;

/**
 * @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(123)), 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(123)), 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(11), true),
            array(
'eq', array(1'1'), true),
            array(
'eq', array(1true), true),
            array(
'eq', array(10), false),
            array(
'notEq', array(10), true),
            array(
'notEq', array(11), false),
            array(
'notEq', array(1'1'), false),
            array(
'notEq', array(1true), false),
            array(
'same', array(11), true),
            array(
'same', array(1'1'), false),
            array(
'same', array(1true), false),
            array(
'same', array(10), false),
            array(
'notSame', array(10), true),
            array(
'notSame', array(11), false),
            array(
'notSame', array(1'1'), true),
            array(
'notSame', array(1true), true),
            array(
'greaterThan', array(10), true),
            array(
'greaterThan', array(00), false),
            array(
'greaterThanEq', array(21), true),
            array(
'greaterThanEq', array(11), true),
            array(
'greaterThanEq', array(01), false),
            array(
'lessThan', array(01), true),
            array(
'lessThan', array(11), false),
            array(
'lessThanEq', array(01), true),
            array(
'lessThanEq', array(11), true),
            array(
'lessThanEq', array(21), false),
            array(
'range', array(112), true),
            array(
'range', array(212), true),
            array(
'range', array(012), false),
            array(
'range', array(312), false),
            array(
'oneOf', array(1, array(123)), 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), truetrue),
            array(
'length', array('äbc'4), falsetrue),
            array(
'length', array('äbcde'4), falsetrue),
            array(
'minLength', array('abcd'4), true),
            array(
'minLength', array('abcde'4), true),
            array(
'minLength', array('abc'4), false),
            array(
'minLength', array('äbcd'4), truetrue),
            array(
'minLength', array('äbcde'4), truetrue),
            array(
'minLength', array('äbc'4), falsetrue),
            array(
'maxLength', array('abcd'4), true),
            array(
'maxLength', array('abc'4), true),
            array(
'maxLength', array('abcde'4), false),
            array(
'maxLength', array('äbcd'4), truetrue),
            array(
'maxLength', array('äbc'4), truetrue),
            array(
'maxLength', array('äbcde'4), falsetrue),
            array(
'lengthBetween', array('abcd'35), true),
            array(
'lengthBetween', array('abc'35), true),
            array(
'lengthBetween', array('abcde'35), true),
            array(
'lengthBetween', array('ab'35), false),
            array(
'lengthBetween', array('abcdef'35), false),
            array(
'lengthBetween', array('äbcd'35), truetrue),
            array(
'lengthBetween', array('äbc'35), truetrue),
            array(
'lengthBetween', array('äbcde'35), truetrue),
            array(
'lengthBetween', array('äb'35), falsetrue),
            array(
'lengthBetween', array('äbcdef'35), falsetrue),
            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(012), 3), true),
            array(
'count', array(array(012), 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'), truefalse70000),
            array(
'throws', array(function() { trigger_error('test'); }, 'Unthrowable'), falsefalse70000),
            array(
'throws', array(function() { throw new Error(); }, 'Throwable'), truetrue70000),
        );
    }

    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('WebmozartAssertAssert'$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('WebmozartAssertAssert''nullOr'.ucfirst($method)), $args);
    }

    
/**
     * @dataProvider getMethods
     */
    
public function testNullOrAcceptsNull($method)
    {
        
call_user_func(array('WebmozartAssertAssert''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('WebmozartAssertAssert''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('WebmozartAssertAssert''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(12), 'Expected a value equal to 2. Got: 1'),
            array(
'eq', array(truefalse), 'Expected a value equal to false. Got: true'),
            array(
'eq', array(truenull), 'Expected a value equal to null. Got: true'),
            array(
'eq', array(nulltrue), '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(1self::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('WebmozartAssertAssert'$method), $args);
    }
}
Онлайн: 0
Реклама