Version 1
[yaffs-website] / vendor / symfony / validator / Tests / Constraints / TypeValidatorTest.php
diff --git a/vendor/symfony/validator/Tests/Constraints/TypeValidatorTest.php b/vendor/symfony/validator/Tests/Constraints/TypeValidatorTest.php
new file mode 100644 (file)
index 0000000..51bd992
--- /dev/null
@@ -0,0 +1,187 @@
+<?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 Symfony\Component\Validator\Tests\Constraints;
+
+use Symfony\Component\Validator\Constraints\Type;
+use Symfony\Component\Validator\Constraints\TypeValidator;
+use Symfony\Component\Validator\Validation;
+
+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')
+            ->setCode(Type::INVALID_TYPE_ERROR)
+            ->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("\n\r\t", 'cntrl'),
+            array('arf12', 'graph'),
+            array('abcde', 'lower'),
+            array('ABCDE', 'upper'),
+            array('arf12', 'print'),
+            array('*&$()', 'punct'),
+            array("\n\r\t", '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)
+            ->setCode(Type::INVALID_TYPE_ERROR)
+            ->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("abc\n", 'graph', "\"abc\n\""),
+            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;
+        }
+    }
+}