OSDN Git Service

d5e02c4498f43a28008fa5438b4db9b09d8e5bf1
[ethna/ethna.git] / test / Plugin / Validator / Ethna_Plugin_Validator_Max_Test.php
1 <?php
2 // vim: foldmethod=marker
3 /**
4  *  Ethna_Plugin_Validator_Max_Test.php
5  */
6
7 /**
8  *  Ethna_Plugin_Validator_Maxクラスのテストケース
9  *
10  *  @access public
11  */
12 class Ethna_Plugin_Validator_Max_Test extends Ethna_UnitTestBase
13 {
14     var $vld;
15
16     function setUp()
17     {
18         $ctl =& Ethna_Controller::getInstance();
19         $plugin =& $ctl->getPlugin();
20         $this->vld = $plugin->getPlugin('Validator', 'Max');
21     }
22
23     // {{{ test max integer
24     function test_max_integer()
25     {
26         $form_int = array(
27                           'type'          => VAR_TYPE_INT,
28                           'required'      => true,
29                           'max'           => '10',
30                           'error'         => '{form}には10以下の数字(整数)を入力して下さい'
31                           );
32         $this->vld->af->setDef('namae_int', $form_int);
33
34         $pear_error = $this->vld->validate('namae_int', 9, $form_int);
35         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
36
37         $pear_error = $this->vld->validate('namae_int', 10, $form_int);
38         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
39
40         $pear_error = $this->vld->validate('namae_int', '', $form_int);
41         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
42
43         $pear_error = $this->vld->validate('namae_int', 9.5, $form_int);
44         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
45
46         // maxを超えた値
47         $pear_error = $this->vld->validate('namae_int', 11, $form_int);
48         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
49         $this->assertEqual(E_FORM_MAX_INT,$pear_error->getCode());
50         $this->assertEqual($form_int['error'], $pear_error->getMessage());
51     } 
52     // }}}
53
54     // {{{ test max float
55     function test_max_float()
56     {
57         $form_float = array(
58                             'type'          => VAR_TYPE_FLOAT,
59                             'required'      => true,
60                             'max'           => '10.000000',
61                             'error'         => '{form}には10.000000以下の数字(小数)を入力して下さい'
62                             );
63         $this->vld->af->setDef('namae_float', $form_float);
64
65         $pear_error = $this->vld->validate('namae_float', 10, $form_float);
66         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
67
68         $pear_error = $this->vld->validate('namae_float', '', $form_float);
69         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
70
71         // maxを超えた値
72         $pear_error = $this->vld->validate('namae_float', 10.11, $form_float);
73         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
74         $this->assertEqual(E_FORM_MAX_FLOAT, $pear_error->getCode());
75         $this->assertEqual($form_float['error'], $pear_error->getMessage());
76
77         // maxを超えた値
78         $pear_error = $this->vld->validate('namae_float', 11, $form_float);
79         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
80         $this->assertEqual(E_FORM_MAX_FLOAT, $pear_error->getCode());
81         $this->assertEqual($form_float['error'], $pear_error->getMessage());
82     }
83     // }}}
84
85     // {{{ test max string
86     function test_max_string()
87     {
88         $form_string = array(
89                              'type'          => VAR_TYPE_STRING,
90                              'required'      => true,
91                              'max'           => '2',
92                              'error'         => '{form}は全角2文字以下(半角1文字以下)で入力して下さい'
93                              );
94         $this->vld->af->setDef('namae_string', $form_string);
95
96         $pear_error = $this->vld->validate('namae_string', '', $form_string);
97         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
98
99         $pear_error = $this->vld->validate('namae_string', 'as', $form_string);
100         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
101
102         // maxを超えた文字列長
103         $pear_error = $this->vld->validate('namae_string', 'ddd', $form_string);
104         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
105         $this->assertEqual(E_FORM_MAX_STRING, $pear_error->getCode());
106         $this->assertEqual($form_string['error'], $pear_error->getMessage());
107
108         // maxを超えた文字列長
109         $pear_error = $this->vld->validate('namae_string', 118888, $form_string);
110         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
111         $this->assertEqual(E_FORM_MAX_STRING, $pear_error->getCode());
112         $this->assertEqual($form_string['error'], $pear_error->getMessage());
113
114         // multibyte string.
115         $pear_error = $this->vld->validate('namae_string', 'ああ', $form_string);
116         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
117  
118         $pear_error = $this->vld->validate('namae_string', 'あああ', $form_string);
119         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
120     }
121     // }}}
122
123     // {{{ test max datetime
124     function test_max_datetime()
125     {
126         $form_datetime = array(
127                                'type'          => VAR_TYPE_DATETIME,
128                                'required'      => true,
129                                'max'           => '-1 day',
130                                'error'         => '{form}には-1 day以前の日付を入力して下さい'
131                                );
132         $this->vld->af->setDef('namae_datetime', $form_datetime);
133
134         $pear_error = $this->vld->validate('namae_datetime', '-2 day', $form_datetime);
135         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
136
137         $pear_error = $this->vld->validate('namae_datetime', '-1 day', $form_datetime);
138         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
139
140         $pear_error = $this->vld->validate('namae_datetime', '', $form_datetime);
141         $this->assertFalse(is_a($pear_error, 'Ethna_Error'));
142
143         // maxを超えた日付
144         $pear_error = $this->vld->validate('namae_datetime', '+3 day', $form_datetime);
145         $this->assertTrue(is_a($pear_error, 'Ethna_Error'));
146         $this->assertEqual(E_FORM_MAX_DATETIME, $pear_error->getCode());
147         $this->assertEqual($form_datetime['error'], $pear_error->getMessage());
148     }
149     // }}}
150
151 }
152 ?>