1<?php 2 3/* 4 * This file is part of Respect/Validation. 5 * 6 * (c) Alexandre Gomes Gaigalas <alexandre@gaigalas.net> 7 * 8 * For the full copyright and license information, please view the "LICENSE.md" 9 * file that was distributed with this source code. 10 */ 11 12namespace Respect\Validation\Rules; 13 14/** 15 * @group rule 16 * @covers Respect\Validation\Rules\Cntrl 17 * @covers Respect\Validation\Exceptions\CntrlException 18 */ 19class CntrlTest extends \PHPUnit_Framework_TestCase 20{ 21 /** 22 * @dataProvider providerForValidCntrl 23 */ 24 public function testValidDataWithCntrlShouldReturnTrue($validCntrl, $additional = '') 25 { 26 $validator = new Cntrl($additional); 27 $this->assertTrue($validator->validate($validCntrl)); 28 } 29 30 /** 31 * @dataProvider providerForInvalidCntrl 32 * @expectedException Respect\Validation\Exceptions\CntrlException 33 */ 34 public function testInvalidCntrlShouldFailAndThrowCntrlException($invalidCntrl, $additional = '') 35 { 36 $validator = new Cntrl($additional); 37 $this->assertFalse($validator->validate($invalidCntrl)); 38 $this->assertFalse($validator->assert($invalidCntrl)); 39 } 40 41 /** 42 * @dataProvider providerForInvalidParams 43 * @expectedException Respect\Validation\Exceptions\ComponentException 44 */ 45 public function testInvalidConstructorParamsShouldThrowComponentExceptionUponInstantiation($additional) 46 { 47 $validator = new Cntrl($additional); 48 } 49 50 /** 51 * @dataProvider providerAdditionalChars 52 */ 53 public function testAdditionalCharsShouldBeRespected($additional, $query) 54 { 55 $validator = new Cntrl($additional); 56 $this->assertTrue($validator->validate($query)); 57 } 58 59 public function providerAdditionalChars() 60 { 61 return [ 62 ['!@#$%^&*(){} ', '!@#$%^&*(){} '], 63 ['[]?+=/\\-_|"\',<>. ', "[]?+=/\\-_|\"',<>. \t \n"], 64 ]; 65 } 66 67 public function providerForInvalidParams() 68 { 69 return [ 70 [new \stdClass()], 71 [[]], 72 [0x2], 73 ]; 74 } 75 76 public function providerForValidCntrl() 77 { 78 return [ 79 ["\n"], 80 ["\r"], 81 ["\t"], 82 ["\n\r\t"], 83// array("\n \n", ' '), TODO Verify this 84 ]; 85 } 86 87 public function providerForInvalidCntrl() 88 { 89 return [ 90 [''], 91 ['16-50'], 92 ['a'], 93 [' '], 94 ['Foo'], 95 ['12.1'], 96 ['-12'], 97 [-12], 98 ['alganet'], 99 ]; 100 } 101} 102