~clinton-collins/familyproject/trunk

« back to all changes in this revision

Viewing changes to ZendFramework/tests/Zend/ValidateTest.php

  • Committer: Clinton Collins
  • Date: 2009-06-26 19:54:58 UTC
  • Revision ID: clinton.collins@gmail.com-20090626195458-5ebba0qcvo15xlpy
Initial Import

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
/**
 
4
 * Zend Framework
 
5
 *
 
6
 * LICENSE
 
7
 *
 
8
 * This source file is subject to the new BSD license that is bundled
 
9
 * with this package in the file LICENSE.txt.
 
10
 * It is also available through the world-wide-web at this URL:
 
11
 * http://framework.zend.com/license/new-bsd
 
12
 * If you did not receive a copy of the license and are unable to
 
13
 * obtain it through the world-wide-web, please send an email
 
14
 * to license@zend.com so we can send you a copy immediately.
 
15
 *
 
16
 * @category   Zend
 
17
 * @package    Zend_Validate
 
18
 * @subpackage UnitTests
 
19
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 
20
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 
21
 * @version    $Id: ValidateTest.php 12770 2008-11-22 16:12:23Z matthew $
 
22
 */
 
23
 
 
24
 
 
25
/**
 
26
 * Test helper
 
27
 */
 
28
require_once dirname(__FILE__) . '/../TestHelper.php';
 
29
 
 
30
/**
 
31
 * @see Zend_Validate
 
32
 */
 
33
require_once 'Zend/Validate.php';
 
34
 
 
35
/**
 
36
 * @see Zend_Validate_Abstract
 
37
 */
 
38
require_once 'Zend/Validate/Abstract.php';
 
39
 
 
40
 
 
41
/**
 
42
 * @category   Zend
 
43
 * @package    Zend_Validate
 
44
 * @subpackage UnitTests
 
45
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 
46
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 
47
 */
 
48
class Zend_ValidateTest extends PHPUnit_Framework_TestCase
 
49
{
 
50
    /**
 
51
     * Zend_Validate object
 
52
     *
 
53
     * @var Zend_Validate
 
54
     */
 
55
    protected $_validator;
 
56
 
 
57
    /**
 
58
     * Creates a new Zend_Validate object for each test method
 
59
     *
 
60
     * @return void
 
61
     */
 
62
    public function setUp()
 
63
    {
 
64
        $this->_validator = new Zend_Validate();
 
65
    }
 
66
 
 
67
    /**
 
68
     * Ensures expected results from empty validator chain
 
69
     *
 
70
     * @return void
 
71
     */
 
72
    public function testEmpty()
 
73
    {
 
74
        $this->assertEquals(array(), $this->_validator->getMessages());
 
75
        $this->assertEquals(array(), $this->_validator->getErrors());
 
76
        $this->assertTrue($this->_validator->isValid('something'));
 
77
        $this->assertEquals(array(), $this->_validator->getErrors());
 
78
    }
 
79
 
 
80
    /**
 
81
     * Ensures expected behavior from a validator known to succeed
 
82
     *
 
83
     * @return void
 
84
     */
 
85
    public function testTrue()
 
86
    {
 
87
        $this->_validator->addValidator(new Zend_ValidateTest_True());
 
88
        $this->assertTrue($this->_validator->isValid(null));
 
89
        $this->assertEquals(array(), $this->_validator->getMessages());
 
90
        $this->assertEquals(array(), $this->_validator->getErrors());
 
91
    }
 
92
 
 
93
    /**
 
94
     * Ensures expected behavior from a validator known to fail
 
95
     *
 
96
     * @return void
 
97
     */
 
98
    public function testFalse()
 
99
    {
 
100
        $this->_validator->addValidator(new Zend_ValidateTest_False());
 
101
        $this->assertFalse($this->_validator->isValid(null));
 
102
        $this->assertEquals(array('error' => 'validation failed'), $this->_validator->getMessages());
 
103
    }
 
104
 
 
105
    /**
 
106
     * Ensures that a validator may break the chain
 
107
     *
 
108
     * @return void
 
109
     */
 
110
    public function testBreakChainOnFailure()
 
111
    {
 
112
        $this->_validator->addValidator(new Zend_ValidateTest_False(), true)
 
113
                         ->addValidator(new Zend_ValidateTest_False());
 
114
        $this->assertFalse($this->_validator->isValid(null));
 
115
        $this->assertEquals(array('error' => 'validation failed'), $this->_validator->getMessages());
 
116
    }
 
117
 
 
118
    /**
 
119
     * Ensures that we can call the static method is()
 
120
     * to instantiate a named validator by its class basename
 
121
     * and it returns the result of isValid() with the input.
 
122
     */
 
123
    public function testStaticFactory()
 
124
    {
 
125
        $this->assertTrue(Zend_Validate::is('1234', 'Digits'));
 
126
        $this->assertFalse(Zend_Validate::is('abc', 'Digits'));
 
127
    }
 
128
 
 
129
    /**
 
130
     * Ensures that a validator with constructor arguments can be called
 
131
     * with the static method is().
 
132
     */
 
133
    public function testStaticFactoryWithConstructorArguments()
 
134
    {
 
135
        $this->assertTrue(Zend_Validate::is('12', 'Between', array(1, 12)));
 
136
        $this->assertFalse(Zend_Validate::is('24', 'Between', array(1, 12)));
 
137
    }
 
138
 
 
139
    /**
 
140
     * Ensures that if we specify a validator class basename that doesn't
 
141
     * exist in the namespace, is() throws an exception.
 
142
     *
 
143
     * Refactored to conform with ZF-2724.
 
144
     *
 
145
     * @group  ZF-2724
 
146
     * @return void
 
147
     */
 
148
    public function testStaticFactoryClassNotFound()
 
149
    {
 
150
        set_error_handler(array($this, 'handleNotFoundError'), E_WARNING);
 
151
        try {
 
152
            Zend_Validate::is('1234', 'UnknownValidator');
 
153
        } catch (Zend_Exception $e) {
 
154
        }
 
155
        restore_error_handler();
 
156
        $this->assertTrue($this->error);
 
157
        $this->assertTrue(isset($e));
 
158
        $this->assertContains('Validate class not found', $e->getMessage());
 
159
    }
 
160
 
 
161
    /**
 
162
     * Handle file not found errors
 
163
     * 
 
164
     * @group  ZF-2724
 
165
     * @param  int $errnum 
 
166
     * @param  string $errstr 
 
167
     * @return void
 
168
     */
 
169
    public function handleNotFoundError($errnum, $errstr)
 
170
    {
 
171
        if (strstr($errstr, 'No such file')) {
 
172
            $this->error = true;
 
173
        }
 
174
    }
 
175
}
 
176
 
 
177
 
 
178
/**
 
179
 * Validator to return true to any input.
 
180
 */
 
181
class Zend_ValidateTest_True extends Zend_Validate_Abstract
 
182
{
 
183
    public function isValid($value)
 
184
    {
 
185
        return true;
 
186
    }
 
187
}
 
188
 
 
189
 
 
190
/**
 
191
 * Validator to return false to any input.
 
192
 */
 
193
class Zend_ValidateTest_False extends Zend_Validate_Abstract
 
194
{
 
195
    public function isValid($value)
 
196
    {
 
197
        $this->_messages = array('error' => 'validation failed');
 
198
        return false;
 
199
    }
 
200
}