Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/Validator/Tests/Constraints/TypeValidatorTest.php
Строк: 151
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentValidatorTestsConstraints;

use 
SymfonyComponentValidatorConstraintsType;
use 
SymfonyComponentValidatorConstraintsTypeValidator;
use 
SymfonyComponentValidatorValidation;

class 
TypeValidatorTest extends AbstractConstraintValidatorTest
{
    protected static 
$file;

    protected function 
getApiVersion()
    {
        return 
Validation::API_VERSION_2_5;
    }

    protected function 
createValidator()
    {
        return new 
TypeValidator();
    }

    public function 
testNullIsValid()
    {
        
$constraint = new Type(array('type' => 'integer'));

        
$this->validator->validate(null$constraint);

        
$this->assertNoViolation();
    }

    public function 
testEmptyIsValidIfString()
    {
        
$constraint = new Type(array('type' => 'string'));

        
$this->validator->validate(''$constraint);

        
$this->assertNoViolation();
    }

    public function 
testEmptyIsInvalidIfNoString()
    {
        
$constraint = new Type(array(
            
'type' => 'integer',
            
'message' => 'myMessage',
        ));

        
$this->validator->validate(''$constraint);

        
$this->buildViolation('myMessage')
            ->
setParameter('{{ value }}''""')
            ->
setParameter('{{ type }}''integer')
            ->
assertRaised();
    }

    
/**
     * @dataProvider getValidValues
     */
    
public function testValidValues($value$type)
    {
        
$constraint = new Type(array('type' => $type));

        
$this->validator->validate($value$constraint);

        
$this->assertNoViolation();
    }

    public function 
getValidValues()
    {
        
$object = new stdClass();
        
$file $this->createFile();

        return array(
            array(
true'Boolean'),
            array(
false'Boolean'),
            array(
true'boolean'),
            array(
false'boolean'),
            array(
true'bool'),
            array(
false'bool'),
            array(
0'numeric'),
            array(
'0''numeric'),
            array(
1.5'numeric'),
            array(
'1.5''numeric'),
            array(
0'integer'),
            array(
1.5'float'),
            array(
'12345''string'),
            array(array(), 
'array'),
            array(
$object'object'),
            array(
$object'stdClass'),
            array(
$file'resource'),
            array(
'12345''digit'),
            array(
'12a34''alnum'),
            array(
'abcde''alpha'),
            array(
"nrt"'cntrl'),
            array(
'arf12''graph'),
            array(
'abcde''lower'),
            array(
'ABCDE''upper'),
            array(
'arf12''print'),
            array(
'*&$()''punct'),
            array(
"nrt"'space'),
            array(
'AB10BC99''xdigit'),
        );
    }

    
/**
     * @dataProvider getInvalidValues
     */
    
public function testInvalidValues($value$type$valueAsString)
    {
        
$constraint = new Type(array(
            
'type' => $type,
            
'message' => 'myMessage',
        ));

        
$this->validator->validate($value$constraint);

        
$this->buildViolation('myMessage')
            ->
setParameter('{{ value }}'$valueAsString)
            ->
setParameter('{{ type }}'$type)
            ->
assertRaised();
    }

    public function 
getInvalidValues()
    {
        
$object = new stdClass();
        
$file $this->createFile();

        return array(
            array(
'foobar''numeric''"foobar"'),
            array(
'foobar''boolean''"foobar"'),
            array(
'0''integer''"0"'),
            array(
'1.5''float''"1.5"'),
            array(
12345'string''12345'),
            array(
$object'boolean''object'),
            array(
$object'numeric''object'),
            array(
$object'integer''object'),
            array(
$object'float''object'),
            array(
$object'string''object'),
            array(
$object'resource''object'),
            array(
$file'boolean''resource'),
            array(
$file'numeric''resource'),
            array(
$file'integer''resource'),
            array(
$file'float''resource'),
            array(
$file'string''resource'),
            array(
$file'object''resource'),
            array(
'12a34''digit''"12a34"'),
            array(
'1a#23''alnum''"1a#23"'),
            array(
'abcd1''alpha''"abcd1"'),
            array(
"nabc"'cntrl'""nabc""),
            array(
"abcn"'graph'""abcn""),
            array(
'abCDE''lower''"abCDE"'),
            array(
'ABcde''upper''"ABcde"'),
            array(
"nabc"'print'""nabc""),
            array(
'abc&$!''punct''"abc&$!"'),
            array(
"nabc"'space'""nabc""),
            array(
'AR1012''xdigit''"AR1012"'),
        );
    }

    protected function 
createFile()
    {
        if (!static::
$file) {
            static::
$file fopen(__FILE__'r');
        }

        return static::
$file;
    }

    public static function 
tearDownAfterClass()
    {
        if (static::
$file) {
            
fclose(static::$file);
            static::
$file null;
        }
    }
}
Онлайн: 3
Реклама