comparison cake/tests/cases/libs/validation.test.php @ 0:261e66bd5a0c

hg init
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Sun, 24 Jul 2011 21:08:31 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:261e66bd5a0c
1 <?php
2 /**
3 * ValidationTest file
4 *
5 * PHP versions 4 and 5
6 *
7 * CakePHP(tm) Tests <http://book.cakephp.org/view/1196/Testing>
8 * Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
9 *
10 * Licensed under The Open Group Test Suite License
11 * Redistributions of files must retain the above copyright notice.
12 *
13 * @copyright Copyright 2005-2010, Cake Software Foundation, Inc. (http://cakefoundation.org)
14 * @link http://book.cakephp.org/view/1196/Testing CakePHP(tm) Tests
15 * @package cake
16 * @subpackage cake.tests.cases.libs
17 * @since CakePHP(tm) v 1.2.0.4206
18 * @license http://www.opensource.org/licenses/opengroup.php The Open Group Test Suite License
19 */
20 App::import('Core', 'Validation');
21
22 /**
23 * CustomValidator class
24 *
25 * @package cake
26 * @subpackage cake.tests.cases.libs
27 */
28 class CustomValidator {
29
30 /**
31 * Makes sure that a given $email address is valid and unique
32 *
33 * @param string $email
34 * @return boolean
35 * @access public
36 */
37 function customValidate($check) {
38 return preg_match('/^[0-9]{3}$/', $check);
39 }
40 }
41
42 /**
43 * TestNlValidation class
44 *
45 * Used to test pass through of Validation
46 *
47 * @package cake.tests.cases.libs
48 */
49 class TestNlValidation {
50 /**
51 * postal function, for testing postal pass through.
52 *
53 * @param string $check
54 * @return void
55 */
56 function postal($check) {
57 return true;
58 }
59 /**
60 * ssn function for testing ssn pass through
61 *
62 * @return void
63 */
64 function ssn($check) {
65 return true;
66 }
67 }
68
69 /**
70 * TestDeValidation class
71 *
72 * Used to test pass through of Validation
73 *
74 * @package cake.tests.cases.libs
75 */
76 class TestDeValidation {
77 /**
78 * phone function, for testing phone pass through.
79 *
80 * @param string $check
81 * @return void
82 */
83 function phone($check) {
84 return true;
85 }
86 }
87
88 /**
89 * Test Case for Validation Class
90 *
91 * @package cake
92 * @subpackage cake.tests.cases.libs
93 */
94 class ValidationTest extends CakeTestCase {
95
96 /**
97 * Validation property
98 *
99 * @var mixed null
100 * @access public
101 */
102 var $Validation = null;
103
104 /**
105 * setup method
106 *
107 * @access public
108 * @return void
109 */
110 function setUp() {
111 $this->Validation =& Validation::getInstance();
112 $this->_appEncoding = Configure::read('App.encoding');
113 }
114
115 /**
116 * tearDown method
117 *
118 * @access public
119 * @return void
120 */
121 function tearDown() {
122 Configure::write('App.encoding', $this->_appEncoding);
123 }
124
125 /**
126 * testNotEmpty method
127 *
128 * @access public
129 * @return void
130 */
131 function testNotEmpty() {
132 $this->assertTrue(Validation::notEmpty('abcdefg'));
133 $this->assertTrue(Validation::notEmpty('fasdf '));
134 $this->assertTrue(Validation::notEmpty('fooo'.chr(243).'blabla'));
135 $this->assertTrue(Validation::notEmpty('abçďĕʑʘπй'));
136 $this->assertTrue(Validation::notEmpty('José'));
137 $this->assertTrue(Validation::notEmpty('é'));
138 $this->assertTrue(Validation::notEmpty('π'));
139 $this->assertFalse(Validation::notEmpty("\t "));
140 $this->assertFalse(Validation::notEmpty(""));
141
142 }
143
144 /**
145 * testNotEmptyISO88591Encoding method
146 *
147 * @return void
148 * @access public
149 */
150 function testNotEmptyISO88591AppEncoding() {
151 Configure::write('App.encoding', 'ISO-8859-1');
152 $this->assertTrue(Validation::notEmpty('abcdefg'));
153 $this->assertTrue(Validation::notEmpty('fasdf '));
154 $this->assertTrue(Validation::notEmpty('fooo'.chr(243).'blabla'));
155 $this->assertTrue(Validation::notEmpty('abçďĕʑʘπй'));
156 $this->assertTrue(Validation::notEmpty('José'));
157 $this->assertTrue(Validation::notEmpty(utf8_decode('José')));
158 $this->assertFalse(Validation::notEmpty("\t "));
159 $this->assertFalse(Validation::notEmpty(""));
160 }
161
162 /**
163 * testAlphaNumeric method
164 *
165 * @access public
166 * @return void
167 */
168 function testAlphaNumeric() {
169 $this->assertTrue(Validation::alphaNumeric('frferrf'));
170 $this->assertTrue(Validation::alphaNumeric('12234'));
171 $this->assertTrue(Validation::alphaNumeric('1w2e2r3t4y'));
172 $this->assertTrue(Validation::alphaNumeric('0'));
173 $this->assertTrue(Validation::alphaNumeric('abçďĕʑʘπй'));
174 $this->assertTrue(Validation::alphaNumeric('ˇˆๆゞ'));
175 $this->assertTrue(Validation::alphaNumeric('אกあアꀀ豈'));
176 $this->assertTrue(Validation::alphaNumeric('Džᾈᾨ'));
177 $this->assertTrue(Validation::alphaNumeric('ÆΔΩЖÇ'));
178
179
180 $this->assertFalse(Validation::alphaNumeric('12 234'));
181 $this->assertFalse(Validation::alphaNumeric('dfd 234'));
182 $this->assertFalse(Validation::alphaNumeric("\n"));
183 $this->assertFalse(Validation::alphaNumeric("\t"));
184 $this->assertFalse(Validation::alphaNumeric("\r"));
185 $this->assertFalse(Validation::alphaNumeric(' '));
186 $this->assertFalse(Validation::alphaNumeric(''));
187 }
188
189 /**
190 * testAlphaNumericPassedAsArray method
191 *
192 * @access public
193 * @return void
194 */
195 function testAlphaNumericPassedAsArray() {
196 $this->assertTrue(Validation::alphaNumeric(array('check' => 'frferrf')));
197 $this->assertTrue(Validation::alphaNumeric(array('check' => '12234')));
198 $this->assertTrue(Validation::alphaNumeric(array('check' => '1w2e2r3t4y')));
199 $this->assertTrue(Validation::alphaNumeric(array('check' => '0')));
200 $this->assertFalse(Validation::alphaNumeric(array('check' => '12 234')));
201 $this->assertFalse(Validation::alphaNumeric(array('check' => 'dfd 234')));
202 $this->assertFalse(Validation::alphaNumeric(array('check' => "\n")));
203 $this->assertFalse(Validation::alphaNumeric(array('check' => "\t")));
204 $this->assertFalse(Validation::alphaNumeric(array('check' => "\r")));
205 $this->assertFalse(Validation::alphaNumeric(array('check' => ' ')));
206 $this->assertFalse(Validation::alphaNumeric(array('check' => '')));
207 }
208
209 /**
210 * testBetween method
211 *
212 * @access public
213 * @return void
214 */
215 function testBetween() {
216 $this->assertTrue(Validation::between('abcdefg', 1, 7));
217 $this->assertTrue(Validation::between('', 0, 7));
218 $this->assertTrue(Validation::between('אกあアꀀ豈', 1, 7));
219
220 $this->assertFalse(Validation::between('abcdefg', 1, 6));
221 $this->assertFalse(Validation::between('ÆΔΩЖÇ', 1, 3));
222 }
223
224 /**
225 * testBlank method
226 *
227 * @access public
228 * @return void
229 */
230 function testBlank() {
231 $this->assertTrue(Validation::blank(''));
232 $this->assertTrue(Validation::blank(' '));
233 $this->assertTrue(Validation::blank("\n"));
234 $this->assertTrue(Validation::blank("\t"));
235 $this->assertTrue(Validation::blank("\r"));
236 $this->assertFalse(Validation::blank(' Blank'));
237 $this->assertFalse(Validation::blank('Blank'));
238 }
239
240 /**
241 * testBlankAsArray method
242 *
243 * @access public
244 * @return void
245 */
246 function testBlankAsArray() {
247 $this->assertTrue(Validation::blank(array('check' => '')));
248 $this->assertTrue(Validation::blank(array('check' => ' ')));
249 $this->assertTrue(Validation::blank(array('check' => "\n")));
250 $this->assertTrue(Validation::blank(array('check' => "\t")));
251 $this->assertTrue(Validation::blank(array('check' => "\r")));
252 $this->assertFalse(Validation::blank(array('check' => ' Blank')));
253 $this->assertFalse(Validation::blank(array('check' => 'Blank')));
254 }
255
256 /**
257 * testcc method
258 *
259 * @access public
260 * @return void
261 */
262 function testcc() {
263 //American Express
264 $this->assertTrue(Validation::cc('370482756063980', array('amex')));
265 $this->assertTrue(Validation::cc('349106433773483', array('amex')));
266 $this->assertTrue(Validation::cc('344671486204764', array('amex')));
267 $this->assertTrue(Validation::cc('344042544509943', array('amex')));
268 $this->assertTrue(Validation::cc('377147515754475', array('amex')));
269 $this->assertTrue(Validation::cc('375239372816422', array('amex')));
270 $this->assertTrue(Validation::cc('376294341957707', array('amex')));
271 $this->assertTrue(Validation::cc('341779292230411', array('amex')));
272 $this->assertTrue(Validation::cc('341646919853372', array('amex')));
273 $this->assertTrue(Validation::cc('348498616319346', array('amex')));
274 //BankCard
275 $this->assertTrue(Validation::cc('5610745867413420', array('bankcard')));
276 $this->assertTrue(Validation::cc('5610376649499352', array('bankcard')));
277 $this->assertTrue(Validation::cc('5610091936000694', array('bankcard')));
278 $this->assertTrue(Validation::cc('5602248780118788', array('bankcard')));
279 $this->assertTrue(Validation::cc('5610631567676765', array('bankcard')));
280 $this->assertTrue(Validation::cc('5602238211270795', array('bankcard')));
281 $this->assertTrue(Validation::cc('5610173951215470', array('bankcard')));
282 $this->assertTrue(Validation::cc('5610139705753702', array('bankcard')));
283 $this->assertTrue(Validation::cc('5602226032150551', array('bankcard')));
284 $this->assertTrue(Validation::cc('5602223993735777', array('bankcard')));
285 //Diners Club 14
286 $this->assertTrue(Validation::cc('30155483651028', array('diners')));
287 $this->assertTrue(Validation::cc('36371312803821', array('diners')));
288 $this->assertTrue(Validation::cc('38801277489875', array('diners')));
289 $this->assertTrue(Validation::cc('30348560464296', array('diners')));
290 $this->assertTrue(Validation::cc('30349040317708', array('diners')));
291 $this->assertTrue(Validation::cc('36567413559978', array('diners')));
292 $this->assertTrue(Validation::cc('36051554732702', array('diners')));
293 $this->assertTrue(Validation::cc('30391842198191', array('diners')));
294 $this->assertTrue(Validation::cc('30172682197745', array('diners')));
295 $this->assertTrue(Validation::cc('30162056566641', array('diners')));
296 $this->assertTrue(Validation::cc('30085066927745', array('diners')));
297 $this->assertTrue(Validation::cc('36519025221976', array('diners')));
298 $this->assertTrue(Validation::cc('30372679371044', array('diners')));
299 $this->assertTrue(Validation::cc('38913939150124', array('diners')));
300 $this->assertTrue(Validation::cc('36852899094637', array('diners')));
301 $this->assertTrue(Validation::cc('30138041971120', array('diners')));
302 $this->assertTrue(Validation::cc('36184047836838', array('diners')));
303 $this->assertTrue(Validation::cc('30057460264462', array('diners')));
304 $this->assertTrue(Validation::cc('38980165212050', array('diners')));
305 $this->assertTrue(Validation::cc('30356516881240', array('diners')));
306 $this->assertTrue(Validation::cc('38744810033182', array('diners')));
307 $this->assertTrue(Validation::cc('30173638706621', array('diners')));
308 $this->assertTrue(Validation::cc('30158334709185', array('diners')));
309 $this->assertTrue(Validation::cc('30195413721186', array('diners')));
310 $this->assertTrue(Validation::cc('38863347694793', array('diners')));
311 $this->assertTrue(Validation::cc('30275627009113', array('diners')));
312 $this->assertTrue(Validation::cc('30242860404971', array('diners')));
313 $this->assertTrue(Validation::cc('30081877595151', array('diners')));
314 $this->assertTrue(Validation::cc('38053196067461', array('diners')));
315 $this->assertTrue(Validation::cc('36520379984870', array('diners')));
316 //2004 MasterCard/Diners Club Alliance International 14
317 $this->assertTrue(Validation::cc('36747701998969', array('diners')));
318 $this->assertTrue(Validation::cc('36427861123159', array('diners')));
319 $this->assertTrue(Validation::cc('36150537602386', array('diners')));
320 $this->assertTrue(Validation::cc('36582388820610', array('diners')));
321 $this->assertTrue(Validation::cc('36729045250216', array('diners')));
322 //2004 MasterCard/Diners Club Alliance US & Canada 16
323 $this->assertTrue(Validation::cc('5597511346169950', array('diners')));
324 $this->assertTrue(Validation::cc('5526443162217562', array('diners')));
325 $this->assertTrue(Validation::cc('5577265786122391', array('diners')));
326 $this->assertTrue(Validation::cc('5534061404676989', array('diners')));
327 $this->assertTrue(Validation::cc('5545313588374502', array('diners')));
328 //Discover
329 $this->assertTrue(Validation::cc('6011802876467237', array('disc')));
330 $this->assertTrue(Validation::cc('6506432777720955', array('disc')));
331 $this->assertTrue(Validation::cc('6011126265283942', array('disc')));
332 $this->assertTrue(Validation::cc('6502187151579252', array('disc')));
333 $this->assertTrue(Validation::cc('6506600836002298', array('disc')));
334 $this->assertTrue(Validation::cc('6504376463615189', array('disc')));
335 $this->assertTrue(Validation::cc('6011440907005377', array('disc')));
336 $this->assertTrue(Validation::cc('6509735979634270', array('disc')));
337 $this->assertTrue(Validation::cc('6011422366775856', array('disc')));
338 $this->assertTrue(Validation::cc('6500976374623323', array('disc')));
339 //enRoute
340 $this->assertTrue(Validation::cc('201496944158937', array('enroute')));
341 $this->assertTrue(Validation::cc('214945833739665', array('enroute')));
342 $this->assertTrue(Validation::cc('214982692491187', array('enroute')));
343 $this->assertTrue(Validation::cc('214901395949424', array('enroute')));
344 $this->assertTrue(Validation::cc('201480676269187', array('enroute')));
345 $this->assertTrue(Validation::cc('214911922887807', array('enroute')));
346 $this->assertTrue(Validation::cc('201485025457250', array('enroute')));
347 $this->assertTrue(Validation::cc('201402662758866', array('enroute')));
348 $this->assertTrue(Validation::cc('214981579370225', array('enroute')));
349 $this->assertTrue(Validation::cc('201447595859877', array('enroute')));
350 //JCB 15 digit
351 $this->assertTrue(Validation::cc('210034762247893', array('jcb')));
352 $this->assertTrue(Validation::cc('180078671678892', array('jcb')));
353 $this->assertTrue(Validation::cc('180010559353736', array('jcb')));
354 $this->assertTrue(Validation::cc('210095474464258', array('jcb')));
355 $this->assertTrue(Validation::cc('210006675562188', array('jcb')));
356 $this->assertTrue(Validation::cc('210063299662662', array('jcb')));
357 $this->assertTrue(Validation::cc('180032506857825', array('jcb')));
358 $this->assertTrue(Validation::cc('210057919192738', array('jcb')));
359 $this->assertTrue(Validation::cc('180031358949367', array('jcb')));
360 $this->assertTrue(Validation::cc('180033802147846', array('jcb')));
361 //JCB 16 digit
362 $this->assertTrue(Validation::cc('3096806857839939', array('jcb')));
363 $this->assertTrue(Validation::cc('3158699503187091', array('jcb')));
364 $this->assertTrue(Validation::cc('3112549607186579', array('jcb')));
365 $this->assertTrue(Validation::cc('3112332922425604', array('jcb')));
366 $this->assertTrue(Validation::cc('3112001541159239', array('jcb')));
367 $this->assertTrue(Validation::cc('3112162495317841', array('jcb')));
368 $this->assertTrue(Validation::cc('3337562627732768', array('jcb')));
369 $this->assertTrue(Validation::cc('3337107161330775', array('jcb')));
370 $this->assertTrue(Validation::cc('3528053736003621', array('jcb')));
371 $this->assertTrue(Validation::cc('3528915255020360', array('jcb')));
372 $this->assertTrue(Validation::cc('3096786059660921', array('jcb')));
373 $this->assertTrue(Validation::cc('3528264799292320', array('jcb')));
374 $this->assertTrue(Validation::cc('3096469164130136', array('jcb')));
375 $this->assertTrue(Validation::cc('3112127443822853', array('jcb')));
376 $this->assertTrue(Validation::cc('3096849995802328', array('jcb')));
377 $this->assertTrue(Validation::cc('3528090735127407', array('jcb')));
378 $this->assertTrue(Validation::cc('3112101006819234', array('jcb')));
379 $this->assertTrue(Validation::cc('3337444428040784', array('jcb')));
380 $this->assertTrue(Validation::cc('3088043154151061', array('jcb')));
381 $this->assertTrue(Validation::cc('3088295969414866', array('jcb')));
382 $this->assertTrue(Validation::cc('3158748843158575', array('jcb')));
383 $this->assertTrue(Validation::cc('3158709206148538', array('jcb')));
384 $this->assertTrue(Validation::cc('3158365159575324', array('jcb')));
385 $this->assertTrue(Validation::cc('3158671691305165', array('jcb')));
386 $this->assertTrue(Validation::cc('3528523028771093', array('jcb')));
387 $this->assertTrue(Validation::cc('3096057126267870', array('jcb')));
388 $this->assertTrue(Validation::cc('3158514047166834', array('jcb')));
389 $this->assertTrue(Validation::cc('3528274546125962', array('jcb')));
390 $this->assertTrue(Validation::cc('3528890967705733', array('jcb')));
391 $this->assertTrue(Validation::cc('3337198811307545', array('jcb')));
392 //Maestro (debit card)
393 $this->assertTrue(Validation::cc('5020147409985219', array('maestro')));
394 $this->assertTrue(Validation::cc('5020931809905616', array('maestro')));
395 $this->assertTrue(Validation::cc('5020412965470224', array('maestro')));
396 $this->assertTrue(Validation::cc('5020129740944022', array('maestro')));
397 $this->assertTrue(Validation::cc('5020024696747943', array('maestro')));
398 $this->assertTrue(Validation::cc('5020581514636509', array('maestro')));
399 $this->assertTrue(Validation::cc('5020695008411987', array('maestro')));
400 $this->assertTrue(Validation::cc('5020565359718977', array('maestro')));
401 $this->assertTrue(Validation::cc('6339931536544062', array('maestro')));
402 $this->assertTrue(Validation::cc('6465028615704406', array('maestro')));
403 //Mastercard
404 $this->assertTrue(Validation::cc('5580424361774366', array('mc')));
405 $this->assertTrue(Validation::cc('5589563059318282', array('mc')));
406 $this->assertTrue(Validation::cc('5387558333690047', array('mc')));
407 $this->assertTrue(Validation::cc('5163919215247175', array('mc')));
408 $this->assertTrue(Validation::cc('5386742685055055', array('mc')));
409 $this->assertTrue(Validation::cc('5102303335960674', array('mc')));
410 $this->assertTrue(Validation::cc('5526543403964565', array('mc')));
411 $this->assertTrue(Validation::cc('5538725892618432', array('mc')));
412 $this->assertTrue(Validation::cc('5119543573129778', array('mc')));
413 $this->assertTrue(Validation::cc('5391174753915767', array('mc')));
414 $this->assertTrue(Validation::cc('5510994113980714', array('mc')));
415 $this->assertTrue(Validation::cc('5183720260418091', array('mc')));
416 $this->assertTrue(Validation::cc('5488082196086704', array('mc')));
417 $this->assertTrue(Validation::cc('5484645164161834', array('mc')));
418 $this->assertTrue(Validation::cc('5171254350337031', array('mc')));
419 $this->assertTrue(Validation::cc('5526987528136452', array('mc')));
420 $this->assertTrue(Validation::cc('5504148941409358', array('mc')));
421 $this->assertTrue(Validation::cc('5240793507243615', array('mc')));
422 $this->assertTrue(Validation::cc('5162114693017107', array('mc')));
423 $this->assertTrue(Validation::cc('5163104807404753', array('mc')));
424 $this->assertTrue(Validation::cc('5590136167248365', array('mc')));
425 $this->assertTrue(Validation::cc('5565816281038948', array('mc')));
426 $this->assertTrue(Validation::cc('5467639122779531', array('mc')));
427 $this->assertTrue(Validation::cc('5297350261550024', array('mc')));
428 $this->assertTrue(Validation::cc('5162739131368058', array('mc')));
429 //Solo 16
430 $this->assertTrue(Validation::cc('6767432107064987', array('solo')));
431 $this->assertTrue(Validation::cc('6334667758225411', array('solo')));
432 $this->assertTrue(Validation::cc('6767037421954068', array('solo')));
433 $this->assertTrue(Validation::cc('6767823306394854', array('solo')));
434 $this->assertTrue(Validation::cc('6334768185398134', array('solo')));
435 $this->assertTrue(Validation::cc('6767286729498589', array('solo')));
436 $this->assertTrue(Validation::cc('6334972104431261', array('solo')));
437 $this->assertTrue(Validation::cc('6334843427400616', array('solo')));
438 $this->assertTrue(Validation::cc('6767493947881311', array('solo')));
439 $this->assertTrue(Validation::cc('6767194235798817', array('solo')));
440 //Solo 18
441 $this->assertTrue(Validation::cc('676714834398858593', array('solo')));
442 $this->assertTrue(Validation::cc('676751666435130857', array('solo')));
443 $this->assertTrue(Validation::cc('676781908573924236', array('solo')));
444 $this->assertTrue(Validation::cc('633488724644003240', array('solo')));
445 $this->assertTrue(Validation::cc('676732252338067316', array('solo')));
446 $this->assertTrue(Validation::cc('676747520084495821', array('solo')));
447 $this->assertTrue(Validation::cc('633465488901381957', array('solo')));
448 $this->assertTrue(Validation::cc('633487484858610484', array('solo')));
449 $this->assertTrue(Validation::cc('633453764680740694', array('solo')));
450 $this->assertTrue(Validation::cc('676768613295414451', array('solo')));
451 //Solo 19
452 $this->assertTrue(Validation::cc('6767838565218340113', array('solo')));
453 $this->assertTrue(Validation::cc('6767760119829705181', array('solo')));
454 $this->assertTrue(Validation::cc('6767265917091593668', array('solo')));
455 $this->assertTrue(Validation::cc('6767938856947440111', array('solo')));
456 $this->assertTrue(Validation::cc('6767501945697390076', array('solo')));
457 $this->assertTrue(Validation::cc('6334902868716257379', array('solo')));
458 $this->assertTrue(Validation::cc('6334922127686425532', array('solo')));
459 $this->assertTrue(Validation::cc('6334933119080706440', array('solo')));
460 $this->assertTrue(Validation::cc('6334647959628261714', array('solo')));
461 $this->assertTrue(Validation::cc('6334527312384101382', array('solo')));
462 //Switch 16
463 $this->assertTrue(Validation::cc('5641829171515733', array('switch')));
464 $this->assertTrue(Validation::cc('5641824852820809', array('switch')));
465 $this->assertTrue(Validation::cc('6759129648956909', array('switch')));
466 $this->assertTrue(Validation::cc('6759626072268156', array('switch')));
467 $this->assertTrue(Validation::cc('5641822698388957', array('switch')));
468 $this->assertTrue(Validation::cc('5641827123105470', array('switch')));
469 $this->assertTrue(Validation::cc('5641823755819553', array('switch')));
470 $this->assertTrue(Validation::cc('5641821939587682', array('switch')));
471 $this->assertTrue(Validation::cc('4936097148079186', array('switch')));
472 $this->assertTrue(Validation::cc('5641829739125009', array('switch')));
473 $this->assertTrue(Validation::cc('5641822860725507', array('switch')));
474 $this->assertTrue(Validation::cc('4936717688865831', array('switch')));
475 $this->assertTrue(Validation::cc('6759487613615441', array('switch')));
476 $this->assertTrue(Validation::cc('5641821346840617', array('switch')));
477 $this->assertTrue(Validation::cc('5641825793417126', array('switch')));
478 $this->assertTrue(Validation::cc('5641821302759595', array('switch')));
479 $this->assertTrue(Validation::cc('6759784969918837', array('switch')));
480 $this->assertTrue(Validation::cc('5641824910667036', array('switch')));
481 $this->assertTrue(Validation::cc('6759139909636173', array('switch')));
482 $this->assertTrue(Validation::cc('6333425070638022', array('switch')));
483 $this->assertTrue(Validation::cc('5641823910382067', array('switch')));
484 $this->assertTrue(Validation::cc('4936295218139423', array('switch')));
485 $this->assertTrue(Validation::cc('6333031811316199', array('switch')));
486 $this->assertTrue(Validation::cc('4936912044763198', array('switch')));
487 $this->assertTrue(Validation::cc('4936387053303824', array('switch')));
488 $this->assertTrue(Validation::cc('6759535838760523', array('switch')));
489 $this->assertTrue(Validation::cc('6333427174594051', array('switch')));
490 $this->assertTrue(Validation::cc('5641829037102700', array('switch')));
491 $this->assertTrue(Validation::cc('5641826495463046', array('switch')));
492 $this->assertTrue(Validation::cc('6333480852979946', array('switch')));
493 $this->assertTrue(Validation::cc('5641827761302876', array('switch')));
494 $this->assertTrue(Validation::cc('5641825083505317', array('switch')));
495 $this->assertTrue(Validation::cc('6759298096003991', array('switch')));
496 $this->assertTrue(Validation::cc('4936119165483420', array('switch')));
497 $this->assertTrue(Validation::cc('4936190990500993', array('switch')));
498 $this->assertTrue(Validation::cc('4903356467384927', array('switch')));
499 $this->assertTrue(Validation::cc('6333372765092554', array('switch')));
500 $this->assertTrue(Validation::cc('5641821330950570', array('switch')));
501 $this->assertTrue(Validation::cc('6759841558826118', array('switch')));
502 $this->assertTrue(Validation::cc('4936164540922452', array('switch')));
503 //Switch 18
504 $this->assertTrue(Validation::cc('493622764224625174', array('switch')));
505 $this->assertTrue(Validation::cc('564182823396913535', array('switch')));
506 $this->assertTrue(Validation::cc('675917308304801234', array('switch')));
507 $this->assertTrue(Validation::cc('675919890024220298', array('switch')));
508 $this->assertTrue(Validation::cc('633308376862556751', array('switch')));
509 $this->assertTrue(Validation::cc('564182377633208779', array('switch')));
510 $this->assertTrue(Validation::cc('564182870014926787', array('switch')));
511 $this->assertTrue(Validation::cc('675979788553829819', array('switch')));
512 $this->assertTrue(Validation::cc('493668394358130935', array('switch')));
513 $this->assertTrue(Validation::cc('493637431790930965', array('switch')));
514 $this->assertTrue(Validation::cc('633321438601941513', array('switch')));
515 $this->assertTrue(Validation::cc('675913800898840986', array('switch')));
516 $this->assertTrue(Validation::cc('564182592016841547', array('switch')));
517 $this->assertTrue(Validation::cc('564182428380440899', array('switch')));
518 $this->assertTrue(Validation::cc('493696376827623463', array('switch')));
519 $this->assertTrue(Validation::cc('675977939286485757', array('switch')));
520 $this->assertTrue(Validation::cc('490302699502091579', array('switch')));
521 $this->assertTrue(Validation::cc('564182085013662230', array('switch')));
522 $this->assertTrue(Validation::cc('493693054263310167', array('switch')));
523 $this->assertTrue(Validation::cc('633321755966697525', array('switch')));
524 $this->assertTrue(Validation::cc('675996851719732811', array('switch')));
525 $this->assertTrue(Validation::cc('493699211208281028', array('switch')));
526 $this->assertTrue(Validation::cc('493697817378356614', array('switch')));
527 $this->assertTrue(Validation::cc('675968224161768150', array('switch')));
528 $this->assertTrue(Validation::cc('493669416873337627', array('switch')));
529 $this->assertTrue(Validation::cc('564182439172549714', array('switch')));
530 $this->assertTrue(Validation::cc('675926914467673598', array('switch')));
531 $this->assertTrue(Validation::cc('564182565231977809', array('switch')));
532 $this->assertTrue(Validation::cc('675966282607849002', array('switch')));
533 $this->assertTrue(Validation::cc('493691609704348548', array('switch')));
534 $this->assertTrue(Validation::cc('675933118546065120', array('switch')));
535 $this->assertTrue(Validation::cc('493631116677238592', array('switch')));
536 $this->assertTrue(Validation::cc('675921142812825938', array('switch')));
537 $this->assertTrue(Validation::cc('633338311815675113', array('switch')));
538 $this->assertTrue(Validation::cc('633323539867338621', array('switch')));
539 $this->assertTrue(Validation::cc('675964912740845663', array('switch')));
540 $this->assertTrue(Validation::cc('633334008833727504', array('switch')));
541 $this->assertTrue(Validation::cc('493631941273687169', array('switch')));
542 $this->assertTrue(Validation::cc('564182971729706785', array('switch')));
543 $this->assertTrue(Validation::cc('633303461188963496', array('switch')));
544 //Switch 19
545 $this->assertTrue(Validation::cc('6759603460617628716', array('switch')));
546 $this->assertTrue(Validation::cc('4936705825268647681', array('switch')));
547 $this->assertTrue(Validation::cc('5641829846600479183', array('switch')));
548 $this->assertTrue(Validation::cc('6759389846573792530', array('switch')));
549 $this->assertTrue(Validation::cc('4936189558712637603', array('switch')));
550 $this->assertTrue(Validation::cc('5641822217393868189', array('switch')));
551 $this->assertTrue(Validation::cc('4903075563780057152', array('switch')));
552 $this->assertTrue(Validation::cc('4936510653566569547', array('switch')));
553 $this->assertTrue(Validation::cc('4936503083627303364', array('switch')));
554 $this->assertTrue(Validation::cc('4936777334398116272', array('switch')));
555 $this->assertTrue(Validation::cc('5641823876900554860', array('switch')));
556 $this->assertTrue(Validation::cc('6759619236903407276', array('switch')));
557 $this->assertTrue(Validation::cc('6759011470269978117', array('switch')));
558 $this->assertTrue(Validation::cc('6333175833997062502', array('switch')));
559 $this->assertTrue(Validation::cc('6759498728789080439', array('switch')));
560 $this->assertTrue(Validation::cc('4903020404168157841', array('switch')));
561 $this->assertTrue(Validation::cc('6759354334874804313', array('switch')));
562 $this->assertTrue(Validation::cc('6759900856420875115', array('switch')));
563 $this->assertTrue(Validation::cc('5641827269346868860', array('switch')));
564 $this->assertTrue(Validation::cc('5641828995047453870', array('switch')));
565 $this->assertTrue(Validation::cc('6333321884754806543', array('switch')));
566 $this->assertTrue(Validation::cc('6333108246283715901', array('switch')));
567 $this->assertTrue(Validation::cc('6759572372800700102', array('switch')));
568 $this->assertTrue(Validation::cc('4903095096797974933', array('switch')));
569 $this->assertTrue(Validation::cc('6333354315797920215', array('switch')));
570 $this->assertTrue(Validation::cc('6759163746089433755', array('switch')));
571 $this->assertTrue(Validation::cc('6759871666634807647', array('switch')));
572 $this->assertTrue(Validation::cc('5641827883728575248', array('switch')));
573 $this->assertTrue(Validation::cc('4936527975051407847', array('switch')));
574 $this->assertTrue(Validation::cc('5641823318396882141', array('switch')));
575 $this->assertTrue(Validation::cc('6759123772311123708', array('switch')));
576 $this->assertTrue(Validation::cc('4903054736148271088', array('switch')));
577 $this->assertTrue(Validation::cc('4936477526808883952', array('switch')));
578 $this->assertTrue(Validation::cc('4936433964890967966', array('switch')));
579 $this->assertTrue(Validation::cc('6333245128906049344', array('switch')));
580 $this->assertTrue(Validation::cc('4936321036970553134', array('switch')));
581 $this->assertTrue(Validation::cc('4936111816358702773', array('switch')));
582 $this->assertTrue(Validation::cc('4936196077254804290', array('switch')));
583 $this->assertTrue(Validation::cc('6759558831206830183', array('switch')));
584 $this->assertTrue(Validation::cc('5641827998830403137', array('switch')));
585 //VISA 13 digit
586 $this->assertTrue(Validation::cc('4024007174754', array('visa')));
587 $this->assertTrue(Validation::cc('4104816460717', array('visa')));
588 $this->assertTrue(Validation::cc('4716229700437', array('visa')));
589 $this->assertTrue(Validation::cc('4539305400213', array('visa')));
590 $this->assertTrue(Validation::cc('4728260558665', array('visa')));
591 $this->assertTrue(Validation::cc('4929100131792', array('visa')));
592 $this->assertTrue(Validation::cc('4024007117308', array('visa')));
593 $this->assertTrue(Validation::cc('4539915491024', array('visa')));
594 $this->assertTrue(Validation::cc('4539790901139', array('visa')));
595 $this->assertTrue(Validation::cc('4485284914909', array('visa')));
596 $this->assertTrue(Validation::cc('4782793022350', array('visa')));
597 $this->assertTrue(Validation::cc('4556899290685', array('visa')));
598 $this->assertTrue(Validation::cc('4024007134774', array('visa')));
599 $this->assertTrue(Validation::cc('4333412341316', array('visa')));
600 $this->assertTrue(Validation::cc('4539534204543', array('visa')));
601 $this->assertTrue(Validation::cc('4485640373626', array('visa')));
602 $this->assertTrue(Validation::cc('4929911445746', array('visa')));
603 $this->assertTrue(Validation::cc('4539292550806', array('visa')));
604 $this->assertTrue(Validation::cc('4716523014030', array('visa')));
605 $this->assertTrue(Validation::cc('4024007125152', array('visa')));
606 $this->assertTrue(Validation::cc('4539758883311', array('visa')));
607 $this->assertTrue(Validation::cc('4024007103258', array('visa')));
608 $this->assertTrue(Validation::cc('4916933155767', array('visa')));
609 $this->assertTrue(Validation::cc('4024007159672', array('visa')));
610 $this->assertTrue(Validation::cc('4716935544871', array('visa')));
611 $this->assertTrue(Validation::cc('4929415177779', array('visa')));
612 $this->assertTrue(Validation::cc('4929748547896', array('visa')));
613 $this->assertTrue(Validation::cc('4929153468612', array('visa')));
614 $this->assertTrue(Validation::cc('4539397132104', array('visa')));
615 $this->assertTrue(Validation::cc('4485293435540', array('visa')));
616 $this->assertTrue(Validation::cc('4485799412720', array('visa')));
617 $this->assertTrue(Validation::cc('4916744757686', array('visa')));
618 $this->assertTrue(Validation::cc('4556475655426', array('visa')));
619 $this->assertTrue(Validation::cc('4539400441625', array('visa')));
620 $this->assertTrue(Validation::cc('4485437129173', array('visa')));
621 $this->assertTrue(Validation::cc('4716253605320', array('visa')));
622 $this->assertTrue(Validation::cc('4539366156589', array('visa')));
623 $this->assertTrue(Validation::cc('4916498061392', array('visa')));
624 $this->assertTrue(Validation::cc('4716127163779', array('visa')));
625 $this->assertTrue(Validation::cc('4024007183078', array('visa')));
626 $this->assertTrue(Validation::cc('4041553279654', array('visa')));
627 $this->assertTrue(Validation::cc('4532380121960', array('visa')));
628 $this->assertTrue(Validation::cc('4485906062491', array('visa')));
629 $this->assertTrue(Validation::cc('4539365115149', array('visa')));
630 $this->assertTrue(Validation::cc('4485146516702', array('visa')));
631 //VISA 16 digit
632 $this->assertTrue(Validation::cc('4916375389940009', array('visa')));
633 $this->assertTrue(Validation::cc('4929167481032610', array('visa')));
634 $this->assertTrue(Validation::cc('4485029969061519', array('visa')));
635 $this->assertTrue(Validation::cc('4485573845281759', array('visa')));
636 $this->assertTrue(Validation::cc('4485669810383529', array('visa')));
637 $this->assertTrue(Validation::cc('4929615806560327', array('visa')));
638 $this->assertTrue(Validation::cc('4556807505609535', array('visa')));
639 $this->assertTrue(Validation::cc('4532611336232890', array('visa')));
640 $this->assertTrue(Validation::cc('4532201952422387', array('visa')));
641 $this->assertTrue(Validation::cc('4485073797976290', array('visa')));
642 $this->assertTrue(Validation::cc('4024007157580969', array('visa')));
643 $this->assertTrue(Validation::cc('4053740470212274', array('visa')));
644 $this->assertTrue(Validation::cc('4716265831525676', array('visa')));
645 $this->assertTrue(Validation::cc('4024007100222966', array('visa')));
646 $this->assertTrue(Validation::cc('4539556148303244', array('visa')));
647 $this->assertTrue(Validation::cc('4532449879689709', array('visa')));
648 $this->assertTrue(Validation::cc('4916805467840986', array('visa')));
649 $this->assertTrue(Validation::cc('4532155644440233', array('visa')));
650 $this->assertTrue(Validation::cc('4467977802223781', array('visa')));
651 $this->assertTrue(Validation::cc('4539224637000686', array('visa')));
652 $this->assertTrue(Validation::cc('4556629187064965', array('visa')));
653 $this->assertTrue(Validation::cc('4532970205932943', array('visa')));
654 $this->assertTrue(Validation::cc('4821470132041850', array('visa')));
655 $this->assertTrue(Validation::cc('4916214267894485', array('visa')));
656 $this->assertTrue(Validation::cc('4024007169073284', array('visa')));
657 $this->assertTrue(Validation::cc('4716783351296122', array('visa')));
658 $this->assertTrue(Validation::cc('4556480171913795', array('visa')));
659 $this->assertTrue(Validation::cc('4929678411034997', array('visa')));
660 $this->assertTrue(Validation::cc('4682061913519392', array('visa')));
661 $this->assertTrue(Validation::cc('4916495481746474', array('visa')));
662 $this->assertTrue(Validation::cc('4929007108460499', array('visa')));
663 $this->assertTrue(Validation::cc('4539951357838586', array('visa')));
664 $this->assertTrue(Validation::cc('4716482691051558', array('visa')));
665 $this->assertTrue(Validation::cc('4916385069917516', array('visa')));
666 $this->assertTrue(Validation::cc('4929020289494641', array('visa')));
667 $this->assertTrue(Validation::cc('4532176245263774', array('visa')));
668 $this->assertTrue(Validation::cc('4556242273553949', array('visa')));
669 $this->assertTrue(Validation::cc('4481007485188614', array('visa')));
670 $this->assertTrue(Validation::cc('4716533372139623', array('visa')));
671 $this->assertTrue(Validation::cc('4929152038152632', array('visa')));
672 $this->assertTrue(Validation::cc('4539404037310550', array('visa')));
673 $this->assertTrue(Validation::cc('4532800925229140', array('visa')));
674 $this->assertTrue(Validation::cc('4916845885268360', array('visa')));
675 $this->assertTrue(Validation::cc('4394514669078434', array('visa')));
676 $this->assertTrue(Validation::cc('4485611378115042', array('visa')));
677 //Visa Electron
678 $this->assertTrue(Validation::cc('4175003346287100', array('electron')));
679 $this->assertTrue(Validation::cc('4913042516577228', array('electron')));
680 $this->assertTrue(Validation::cc('4917592325659381', array('electron')));
681 $this->assertTrue(Validation::cc('4917084924450511', array('electron')));
682 $this->assertTrue(Validation::cc('4917994610643999', array('electron')));
683 $this->assertTrue(Validation::cc('4175005933743585', array('electron')));
684 $this->assertTrue(Validation::cc('4175008373425044', array('electron')));
685 $this->assertTrue(Validation::cc('4913119763664154', array('electron')));
686 $this->assertTrue(Validation::cc('4913189017481812', array('electron')));
687 $this->assertTrue(Validation::cc('4913085104968622', array('electron')));
688 $this->assertTrue(Validation::cc('4175008803122021', array('electron')));
689 $this->assertTrue(Validation::cc('4913294453962489', array('electron')));
690 $this->assertTrue(Validation::cc('4175009797419290', array('electron')));
691 $this->assertTrue(Validation::cc('4175005028142917', array('electron')));
692 $this->assertTrue(Validation::cc('4913940802385364', array('electron')));
693 //Voyager
694 $this->assertTrue(Validation::cc('869940697287073', array('voyager')));
695 $this->assertTrue(Validation::cc('869934523596112', array('voyager')));
696 $this->assertTrue(Validation::cc('869958670174621', array('voyager')));
697 $this->assertTrue(Validation::cc('869921250068209', array('voyager')));
698 $this->assertTrue(Validation::cc('869972521242198', array('voyager')));
699 }
700
701 /**
702 * testLuhn method
703 *
704 * @access public
705 * @return void
706 */
707 function testLuhn() {
708 $this->Validation->deep = true;
709
710 //American Express
711 $this->Validation->check = '370482756063980';
712 $this->assertTrue($this->Validation->_luhn());
713 //BankCard
714 $this->Validation->check = '5610745867413420';
715 $this->assertTrue($this->Validation->_luhn());
716 //Diners Club 14
717 $this->Validation->check = '30155483651028';
718 $this->assertTrue($this->Validation->_luhn());
719 //2004 MasterCard/Diners Club Alliance International 14
720 $this->Validation->check = '36747701998969';
721 $this->assertTrue($this->Validation->_luhn());
722 //2004 MasterCard/Diners Club Alliance US & Canada 16
723 $this->Validation->check = '5597511346169950';
724 $this->assertTrue($this->Validation->_luhn());
725 //Discover
726 $this->Validation->check = '6011802876467237';
727 $this->assertTrue($this->Validation->_luhn());
728 //enRoute
729 $this->Validation->check = '201496944158937';
730 $this->assertTrue($this->Validation->_luhn());
731 //JCB 15 digit
732 $this->Validation->check = '210034762247893';
733 $this->assertTrue($this->Validation->_luhn());
734 //JCB 16 digit
735 $this->Validation->check = '3096806857839939';
736 $this->assertTrue($this->Validation->_luhn());
737 //Maestro (debit card)
738 $this->Validation->check = '5020147409985219';
739 $this->assertTrue($this->Validation->_luhn());
740 //Mastercard
741 $this->Validation->check = '5580424361774366';
742 $this->assertTrue($this->Validation->_luhn());
743 //Solo 16
744 $this->Validation->check = '6767432107064987';
745 $this->assertTrue($this->Validation->_luhn());
746 //Solo 18
747 $this->Validation->check = '676714834398858593';
748 $this->assertTrue($this->Validation->_luhn());
749 //Solo 19
750 $this->Validation->check = '6767838565218340113';
751 $this->assertTrue($this->Validation->_luhn());
752 //Switch 16
753 $this->Validation->check = '5641829171515733';
754 $this->assertTrue($this->Validation->_luhn());
755 //Switch 18
756 $this->Validation->check = '493622764224625174';
757 $this->assertTrue($this->Validation->_luhn());
758 //Switch 19
759 $this->Validation->check = '6759603460617628716';
760 $this->assertTrue($this->Validation->_luhn());
761 //VISA 13 digit
762 $this->Validation->check = '4024007174754';
763 $this->assertTrue($this->Validation->_luhn());
764 //VISA 16 digit
765 $this->Validation->check = '4916375389940009';
766 $this->assertTrue($this->Validation->_luhn());
767 //Visa Electron
768 $this->Validation->check = '4175003346287100';
769 $this->assertTrue($this->Validation->_luhn());
770 //Voyager
771 $this->Validation->check = '869940697287073';
772 $this->assertTrue($this->Validation->_luhn());
773
774 $this->Validation->check = '0000000000000000';
775 $this->assertFalse($this->Validation->_luhn());
776
777 $this->Validation->check = '869940697287173';
778 $this->assertFalse($this->Validation->_luhn());
779 }
780
781 /**
782 * testCustomRegexForCc method
783 *
784 * @access public
785 * @return void
786 */
787 function testCustomRegexForCc() {
788 $this->assertTrue(Validation::cc('12332105933743585', null, null, '/123321\\d{11}/'));
789 $this->assertFalse(Validation::cc('1233210593374358', null, null, '/123321\\d{11}/'));
790 $this->assertFalse(Validation::cc('12312305933743585', null, null, '/123321\\d{11}/'));
791 }
792
793 /**
794 * testCustomRegexForCcWithLuhnCheck method
795 *
796 * @access public
797 * @return void
798 */
799 function testCustomRegexForCcWithLuhnCheck() {
800 $this->assertTrue(Validation::cc('12332110426226941', null, true, '/123321\\d{11}/'));
801 $this->assertFalse(Validation::cc('12332105933743585', null, true, '/123321\\d{11}/'));
802 $this->assertFalse(Validation::cc('12332105933743587', null, true, '/123321\\d{11}/'));
803 $this->assertFalse(Validation::cc('12312305933743585', null, true, '/123321\\d{11}/'));
804 }
805
806 /**
807 * testFastCc method
808 *
809 * @access public
810 * @return void
811 */
812 function testFastCc() {
813 // too short
814 $this->assertFalse(Validation::cc('123456789012'));
815 //American Express
816 $this->assertTrue(Validation::cc('370482756063980'));
817 //Diners Club 14
818 $this->assertTrue(Validation::cc('30155483651028'));
819 //2004 MasterCard/Diners Club Alliance International 14
820 $this->assertTrue(Validation::cc('36747701998969'));
821 //2004 MasterCard/Diners Club Alliance US & Canada 16
822 $this->assertTrue(Validation::cc('5597511346169950'));
823 //Discover
824 $this->assertTrue(Validation::cc('6011802876467237'));
825 //Mastercard
826 $this->assertTrue(Validation::cc('5580424361774366'));
827 //VISA 13 digit
828 $this->assertTrue(Validation::cc('4024007174754'));
829 //VISA 16 digit
830 $this->assertTrue(Validation::cc('4916375389940009'));
831 //Visa Electron
832 $this->assertTrue(Validation::cc('4175003346287100'));
833 }
834
835 /**
836 * testAllCc method
837 *
838 * @access public
839 * @return void
840 */
841 function testAllCc() {
842 //American Express
843 $this->assertTrue(Validation::cc('370482756063980', 'all'));
844 //BankCard
845 $this->assertTrue(Validation::cc('5610745867413420', 'all'));
846 //Diners Club 14
847 $this->assertTrue(Validation::cc('30155483651028', 'all'));
848 //2004 MasterCard/Diners Club Alliance International 14
849 $this->assertTrue(Validation::cc('36747701998969', 'all'));
850 //2004 MasterCard/Diners Club Alliance US & Canada 16
851 $this->assertTrue(Validation::cc('5597511346169950', 'all'));
852 //Discover
853 $this->assertTrue(Validation::cc('6011802876467237', 'all'));
854 //enRoute
855 $this->assertTrue(Validation::cc('201496944158937', 'all'));
856 //JCB 15 digit
857 $this->assertTrue(Validation::cc('210034762247893', 'all'));
858 //JCB 16 digit
859 $this->assertTrue(Validation::cc('3096806857839939', 'all'));
860 //Maestro (debit card)
861 $this->assertTrue(Validation::cc('5020147409985219', 'all'));
862 //Mastercard
863 $this->assertTrue(Validation::cc('5580424361774366', 'all'));
864 //Solo 16
865 $this->assertTrue(Validation::cc('6767432107064987', 'all'));
866 //Solo 18
867 $this->assertTrue(Validation::cc('676714834398858593', 'all'));
868 //Solo 19
869 $this->assertTrue(Validation::cc('6767838565218340113', 'all'));
870 //Switch 16
871 $this->assertTrue(Validation::cc('5641829171515733', 'all'));
872 //Switch 18
873 $this->assertTrue(Validation::cc('493622764224625174', 'all'));
874 //Switch 19
875 $this->assertTrue(Validation::cc('6759603460617628716', 'all'));
876 //VISA 13 digit
877 $this->assertTrue(Validation::cc('4024007174754', 'all'));
878 //VISA 16 digit
879 $this->assertTrue(Validation::cc('4916375389940009', 'all'));
880 //Visa Electron
881 $this->assertTrue(Validation::cc('4175003346287100', 'all'));
882 //Voyager
883 $this->assertTrue(Validation::cc('869940697287073', 'all'));
884 }
885
886 /**
887 * testAllCcDeep method
888 *
889 * @access public
890 * @return void
891 */
892 function testAllCcDeep() {
893 //American Express
894 $this->assertTrue(Validation::cc('370482756063980', 'all', true));
895 //BankCard
896 $this->assertTrue(Validation::cc('5610745867413420', 'all', true));
897 //Diners Club 14
898 $this->assertTrue(Validation::cc('30155483651028', 'all', true));
899 //2004 MasterCard/Diners Club Alliance International 14
900 $this->assertTrue(Validation::cc('36747701998969', 'all', true));
901 //2004 MasterCard/Diners Club Alliance US & Canada 16
902 $this->assertTrue(Validation::cc('5597511346169950', 'all', true));
903 //Discover
904 $this->assertTrue(Validation::cc('6011802876467237', 'all', true));
905 //enRoute
906 $this->assertTrue(Validation::cc('201496944158937', 'all', true));
907 //JCB 15 digit
908 $this->assertTrue(Validation::cc('210034762247893', 'all', true));
909 //JCB 16 digit
910 $this->assertTrue(Validation::cc('3096806857839939', 'all', true));
911 //Maestro (debit card)
912 $this->assertTrue(Validation::cc('5020147409985219', 'all', true));
913 //Mastercard
914 $this->assertTrue(Validation::cc('5580424361774366', 'all', true));
915 //Solo 16
916 $this->assertTrue(Validation::cc('6767432107064987', 'all', true));
917 //Solo 18
918 $this->assertTrue(Validation::cc('676714834398858593', 'all', true));
919 //Solo 19
920 $this->assertTrue(Validation::cc('6767838565218340113', 'all', true));
921 //Switch 16
922 $this->assertTrue(Validation::cc('5641829171515733', 'all', true));
923 //Switch 18
924 $this->assertTrue(Validation::cc('493622764224625174', 'all', true));
925 //Switch 19
926 $this->assertTrue(Validation::cc('6759603460617628716', 'all', true));
927 //VISA 13 digit
928 $this->assertTrue(Validation::cc('4024007174754', 'all', true));
929 //VISA 16 digit
930 $this->assertTrue(Validation::cc('4916375389940009', 'all', true));
931 //Visa Electron
932 $this->assertTrue(Validation::cc('4175003346287100', 'all', true));
933 //Voyager
934 $this->assertTrue(Validation::cc('869940697287073', 'all', true));
935 }
936
937 /**
938 * testComparison method
939 *
940 * @access public
941 * @return void
942 */
943 function testComparison() {
944 $this->assertFalse(Validation::comparison(7, null, 6));
945 $this->assertTrue(Validation::comparison(7, 'is greater', 6));
946 $this->assertTrue(Validation::comparison(7, '>', 6));
947 $this->assertTrue(Validation::comparison(6, 'is less', 7));
948 $this->assertTrue(Validation::comparison(6, '<', 7));
949 $this->assertTrue(Validation::comparison(7, 'greater or equal', 7));
950 $this->assertTrue(Validation::comparison(7, '>=', 7));
951 $this->assertTrue(Validation::comparison(7, 'greater or equal', 6));
952 $this->assertTrue(Validation::comparison(7, '>=', 6));
953 $this->assertTrue(Validation::comparison(6, 'less or equal', 7));
954 $this->assertTrue(Validation::comparison(6, '<=', 7));
955 $this->assertTrue(Validation::comparison(7, 'equal to', 7));
956 $this->assertTrue(Validation::comparison(7, '==', 7));
957 $this->assertTrue(Validation::comparison(7, 'not equal', 6));
958 $this->assertTrue(Validation::comparison(7, '!=', 6));
959 $this->assertFalse(Validation::comparison(6, 'is greater', 7));
960 $this->assertFalse(Validation::comparison(6, '>', 7));
961 $this->assertFalse(Validation::comparison(7, 'is less', 6));
962 $this->assertFalse(Validation::comparison(7, '<', 6));
963 $this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
964 $this->assertFalse(Validation::comparison(6, '>=', 7));
965 $this->assertFalse(Validation::comparison(6, 'greater or equal', 7));
966 $this->assertFalse(Validation::comparison(6, '>=', 7));
967 $this->assertFalse(Validation::comparison(7, 'less or equal', 6));
968 $this->assertFalse(Validation::comparison(7, '<=', 6));
969 $this->assertFalse(Validation::comparison(7, 'equal to', 6));
970 $this->assertFalse(Validation::comparison(7, '==', 6));
971 $this->assertFalse(Validation::comparison(7, 'not equal', 7));
972 $this->assertFalse(Validation::comparison(7, '!=', 7));
973 }
974
975 /**
976 * testComparisonAsArray method
977 *
978 * @access public
979 * @return void
980 */
981 function testComparisonAsArray() {
982 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => 'is greater', 'check2' => 6)));
983 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => '>', 'check2' => 6)));
984 $this->assertTrue(Validation::comparison(array('check1' => 6, 'operator' => 'is less', 'check2' => 7)));
985 $this->assertTrue(Validation::comparison(array('check1' => 6, 'operator' => '<', 'check2' => 7)));
986 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => 'greater or equal', 'check2' => 7)));
987 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => '>=', 'check2' => 7)));
988 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => 'greater or equal','check2' => 6)));
989 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => '>=', 'check2' => 6)));
990 $this->assertTrue(Validation::comparison(array('check1' => 6, 'operator' => 'less or equal', 'check2' => 7)));
991 $this->assertTrue(Validation::comparison(array('check1' => 6, 'operator' => '<=', 'check2' => 7)));
992 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => 'equal to', 'check2' => 7)));
993 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => '==', 'check2' => 7)));
994 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => 'not equal', 'check2' => 6)));
995 $this->assertTrue(Validation::comparison(array('check1' => 7, 'operator' => '!=', 'check2' => 6)));
996 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => 'is greater', 'check2' => 7)));
997 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => '>', 'check2' => 7)));
998 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => 'is less', 'check2' => 6)));
999 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => '<', 'check2' => 6)));
1000 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => 'greater or equal', 'check2' => 7)));
1001 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => '>=', 'check2' => 7)));
1002 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => 'greater or equal', 'check2' => 7)));
1003 $this->assertFalse(Validation::comparison(array('check1' => 6, 'operator' => '>=', 'check2' => 7)));
1004 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => 'less or equal', 'check2' => 6)));
1005 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => '<=', 'check2' => 6)));
1006 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => 'equal to', 'check2' => 6)));
1007 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => '==','check2' => 6)));
1008 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => 'not equal', 'check2' => 7)));
1009 $this->assertFalse(Validation::comparison(array('check1' => 7, 'operator' => '!=', 'check2' => 7)));
1010 }
1011
1012 /**
1013 * testCustom method
1014 *
1015 * @access public
1016 * @return void
1017 */
1018 function testCustom() {
1019 $this->assertTrue(Validation::custom('12345', '/(?<!\\S)\\d++(?!\\S)/'));
1020 $this->assertFalse(Validation::custom('Text', '/(?<!\\S)\\d++(?!\\S)/'));
1021 $this->assertFalse(Validation::custom('123.45', '/(?<!\\S)\\d++(?!\\S)/'));
1022 $this->assertFalse(Validation::custom('missing regex'));
1023 }
1024
1025 /**
1026 * testCustomAsArray method
1027 *
1028 * @access public
1029 * @return void
1030 */
1031 function testCustomAsArray() {
1032 $this->assertTrue(Validation::custom(array('check' => '12345', 'regex' => '/(?<!\\S)\\d++(?!\\S)/')));
1033 $this->assertFalse(Validation::custom(array('check' => 'Text', 'regex' => '/(?<!\\S)\\d++(?!\\S)/')));
1034 $this->assertFalse(Validation::custom(array('check' => '123.45', 'regex' => '/(?<!\\S)\\d++(?!\\S)/')));
1035 }
1036
1037 /**
1038 * testDateDdmmyyyy method
1039 *
1040 * @access public
1041 * @return void
1042 */
1043 function testDateDdmmyyyy() {
1044 $this->assertTrue(Validation::date('27-12-2006', array('dmy')));
1045 $this->assertTrue(Validation::date('27.12.2006', array('dmy')));
1046 $this->assertTrue(Validation::date('27/12/2006', array('dmy')));
1047 $this->assertTrue(Validation::date('27 12 2006', array('dmy')));
1048 $this->assertFalse(Validation::date('00-00-0000', array('dmy')));
1049 $this->assertFalse(Validation::date('00.00.0000', array('dmy')));
1050 $this->assertFalse(Validation::date('00/00/0000', array('dmy')));
1051 $this->assertFalse(Validation::date('00 00 0000', array('dmy')));
1052 $this->assertFalse(Validation::date('31-11-2006', array('dmy')));
1053 $this->assertFalse(Validation::date('31.11.2006', array('dmy')));
1054 $this->assertFalse(Validation::date('31/11/2006', array('dmy')));
1055 $this->assertFalse(Validation::date('31 11 2006', array('dmy')));
1056 }
1057
1058 /**
1059 * testDateDdmmyyyyLeapYear method
1060 *
1061 * @access public
1062 * @return void
1063 */
1064 function testDateDdmmyyyyLeapYear() {
1065 $this->assertTrue(Validation::date('29-02-2004', array('dmy')));
1066 $this->assertTrue(Validation::date('29.02.2004', array('dmy')));
1067 $this->assertTrue(Validation::date('29/02/2004', array('dmy')));
1068 $this->assertTrue(Validation::date('29 02 2004', array('dmy')));
1069 $this->assertFalse(Validation::date('29-02-2006', array('dmy')));
1070 $this->assertFalse(Validation::date('29.02.2006', array('dmy')));
1071 $this->assertFalse(Validation::date('29/02/2006', array('dmy')));
1072 $this->assertFalse(Validation::date('29 02 2006', array('dmy')));
1073 }
1074
1075 /**
1076 * testDateDdmmyy method
1077 *
1078 * @access public
1079 * @return void
1080 */
1081 function testDateDdmmyy() {
1082 $this->assertTrue(Validation::date('27-12-06', array('dmy')));
1083 $this->assertTrue(Validation::date('27.12.06', array('dmy')));
1084 $this->assertTrue(Validation::date('27/12/06', array('dmy')));
1085 $this->assertTrue(Validation::date('27 12 06', array('dmy')));
1086 $this->assertFalse(Validation::date('00-00-00', array('dmy')));
1087 $this->assertFalse(Validation::date('00.00.00', array('dmy')));
1088 $this->assertFalse(Validation::date('00/00/00', array('dmy')));
1089 $this->assertFalse(Validation::date('00 00 00', array('dmy')));
1090 $this->assertFalse(Validation::date('31-11-06', array('dmy')));
1091 $this->assertFalse(Validation::date('31.11.06', array('dmy')));
1092 $this->assertFalse(Validation::date('31/11/06', array('dmy')));
1093 $this->assertFalse(Validation::date('31 11 06', array('dmy')));
1094 }
1095
1096 /**
1097 * testDateDdmmyyLeapYear method
1098 *
1099 * @access public
1100 * @return void
1101 */
1102 function testDateDdmmyyLeapYear() {
1103 $this->assertTrue(Validation::date('29-02-04', array('dmy')));
1104 $this->assertTrue(Validation::date('29.02.04', array('dmy')));
1105 $this->assertTrue(Validation::date('29/02/04', array('dmy')));
1106 $this->assertTrue(Validation::date('29 02 04', array('dmy')));
1107 $this->assertFalse(Validation::date('29-02-06', array('dmy')));
1108 $this->assertFalse(Validation::date('29.02.06', array('dmy')));
1109 $this->assertFalse(Validation::date('29/02/06', array('dmy')));
1110 $this->assertFalse(Validation::date('29 02 06', array('dmy')));
1111 }
1112
1113 /**
1114 * testDateDmyy method
1115 *
1116 * @access public
1117 * @return void
1118 */
1119 function testDateDmyy() {
1120 $this->assertTrue(Validation::date('7-2-06', array('dmy')));
1121 $this->assertTrue(Validation::date('7.2.06', array('dmy')));
1122 $this->assertTrue(Validation::date('7/2/06', array('dmy')));
1123 $this->assertTrue(Validation::date('7 2 06', array('dmy')));
1124 $this->assertFalse(Validation::date('0-0-00', array('dmy')));
1125 $this->assertFalse(Validation::date('0.0.00', array('dmy')));
1126 $this->assertFalse(Validation::date('0/0/00', array('dmy')));
1127 $this->assertFalse(Validation::date('0 0 00', array('dmy')));
1128 $this->assertFalse(Validation::date('32-2-06', array('dmy')));
1129 $this->assertFalse(Validation::date('32.2.06', array('dmy')));
1130 $this->assertFalse(Validation::date('32/2/06', array('dmy')));
1131 $this->assertFalse(Validation::date('32 2 06', array('dmy')));
1132 }
1133
1134 /**
1135 * testDateDmyyLeapYear method
1136 *
1137 * @access public
1138 * @return void
1139 */
1140 function testDateDmyyLeapYear() {
1141 $this->assertTrue(Validation::date('29-2-04', array('dmy')));
1142 $this->assertTrue(Validation::date('29.2.04', array('dmy')));
1143 $this->assertTrue(Validation::date('29/2/04', array('dmy')));
1144 $this->assertTrue(Validation::date('29 2 04', array('dmy')));
1145 $this->assertFalse(Validation::date('29-2-06', array('dmy')));
1146 $this->assertFalse(Validation::date('29.2.06', array('dmy')));
1147 $this->assertFalse(Validation::date('29/2/06', array('dmy')));
1148 $this->assertFalse(Validation::date('29 2 06', array('dmy')));
1149 }
1150
1151 /**
1152 * testDateDmyyyy method
1153 *
1154 * @access public
1155 * @return void
1156 */
1157 function testDateDmyyyy() {
1158 $this->assertTrue(Validation::date('7-2-2006', array('dmy')));
1159 $this->assertTrue(Validation::date('7.2.2006', array('dmy')));
1160 $this->assertTrue(Validation::date('7/2/2006', array('dmy')));
1161 $this->assertTrue(Validation::date('7 2 2006', array('dmy')));
1162 $this->assertFalse(Validation::date('0-0-0000', array('dmy')));
1163 $this->assertFalse(Validation::date('0.0.0000', array('dmy')));
1164 $this->assertFalse(Validation::date('0/0/0000', array('dmy')));
1165 $this->assertFalse(Validation::date('0 0 0000', array('dmy')));
1166 $this->assertFalse(Validation::date('32-2-2006', array('dmy')));
1167 $this->assertFalse(Validation::date('32.2.2006', array('dmy')));
1168 $this->assertFalse(Validation::date('32/2/2006', array('dmy')));
1169 $this->assertFalse(Validation::date('32 2 2006', array('dmy')));
1170 }
1171
1172 /**
1173 * testDateDmyyyyLeapYear method
1174 *
1175 * @access public
1176 * @return void
1177 */
1178 function testDateDmyyyyLeapYear() {
1179 $this->assertTrue(Validation::date('29-2-2004', array('dmy')));
1180 $this->assertTrue(Validation::date('29.2.2004', array('dmy')));
1181 $this->assertTrue(Validation::date('29/2/2004', array('dmy')));
1182 $this->assertTrue(Validation::date('29 2 2004', array('dmy')));
1183 $this->assertFalse(Validation::date('29-2-2006', array('dmy')));
1184 $this->assertFalse(Validation::date('29.2.2006', array('dmy')));
1185 $this->assertFalse(Validation::date('29/2/2006', array('dmy')));
1186 $this->assertFalse(Validation::date('29 2 2006', array('dmy')));
1187 }
1188
1189 /**
1190 * testDateMmddyyyy method
1191 *
1192 * @access public
1193 * @return void
1194 */
1195 function testDateMmddyyyy() {
1196 $this->assertTrue(Validation::date('12-27-2006', array('mdy')));
1197 $this->assertTrue(Validation::date('12.27.2006', array('mdy')));
1198 $this->assertTrue(Validation::date('12/27/2006', array('mdy')));
1199 $this->assertTrue(Validation::date('12 27 2006', array('mdy')));
1200 $this->assertFalse(Validation::date('00-00-0000', array('mdy')));
1201 $this->assertFalse(Validation::date('00.00.0000', array('mdy')));
1202 $this->assertFalse(Validation::date('00/00/0000', array('mdy')));
1203 $this->assertFalse(Validation::date('00 00 0000', array('mdy')));
1204 $this->assertFalse(Validation::date('11-31-2006', array('mdy')));
1205 $this->assertFalse(Validation::date('11.31.2006', array('mdy')));
1206 $this->assertFalse(Validation::date('11/31/2006', array('mdy')));
1207 $this->assertFalse(Validation::date('11 31 2006', array('mdy')));
1208 }
1209
1210 /**
1211 * testDateMmddyyyyLeapYear method
1212 *
1213 * @access public
1214 * @return void
1215 */
1216 function testDateMmddyyyyLeapYear() {
1217 $this->assertTrue(Validation::date('02-29-2004', array('mdy')));
1218 $this->assertTrue(Validation::date('02.29.2004', array('mdy')));
1219 $this->assertTrue(Validation::date('02/29/2004', array('mdy')));
1220 $this->assertTrue(Validation::date('02 29 2004', array('mdy')));
1221 $this->assertFalse(Validation::date('02-29-2006', array('mdy')));
1222 $this->assertFalse(Validation::date('02.29.2006', array('mdy')));
1223 $this->assertFalse(Validation::date('02/29/2006', array('mdy')));
1224 $this->assertFalse(Validation::date('02 29 2006', array('mdy')));
1225 }
1226
1227 /**
1228 * testDateMmddyy method
1229 *
1230 * @access public
1231 * @return void
1232 */
1233 function testDateMmddyy() {
1234 $this->assertTrue(Validation::date('12-27-06', array('mdy')));
1235 $this->assertTrue(Validation::date('12.27.06', array('mdy')));
1236 $this->assertTrue(Validation::date('12/27/06', array('mdy')));
1237 $this->assertTrue(Validation::date('12 27 06', array('mdy')));
1238 $this->assertFalse(Validation::date('00-00-00', array('mdy')));
1239 $this->assertFalse(Validation::date('00.00.00', array('mdy')));
1240 $this->assertFalse(Validation::date('00/00/00', array('mdy')));
1241 $this->assertFalse(Validation::date('00 00 00', array('mdy')));
1242 $this->assertFalse(Validation::date('11-31-06', array('mdy')));
1243 $this->assertFalse(Validation::date('11.31.06', array('mdy')));
1244 $this->assertFalse(Validation::date('11/31/06', array('mdy')));
1245 $this->assertFalse(Validation::date('11 31 06', array('mdy')));
1246 }
1247
1248 /**
1249 * testDateMmddyyLeapYear method
1250 *
1251 * @access public
1252 * @return void
1253 */
1254 function testDateMmddyyLeapYear() {
1255 $this->assertTrue(Validation::date('02-29-04', array('mdy')));
1256 $this->assertTrue(Validation::date('02.29.04', array('mdy')));
1257 $this->assertTrue(Validation::date('02/29/04', array('mdy')));
1258 $this->assertTrue(Validation::date('02 29 04', array('mdy')));
1259 $this->assertFalse(Validation::date('02-29-06', array('mdy')));
1260 $this->assertFalse(Validation::date('02.29.06', array('mdy')));
1261 $this->assertFalse(Validation::date('02/29/06', array('mdy')));
1262 $this->assertFalse(Validation::date('02 29 06', array('mdy')));
1263 }
1264
1265 /**
1266 * testDateMdyy method
1267 *
1268 * @access public
1269 * @return void
1270 */
1271 function testDateMdyy() {
1272 $this->assertTrue(Validation::date('2-7-06', array('mdy')));
1273 $this->assertTrue(Validation::date('2.7.06', array('mdy')));
1274 $this->assertTrue(Validation::date('2/7/06', array('mdy')));
1275 $this->assertTrue(Validation::date('2 7 06', array('mdy')));
1276 $this->assertFalse(Validation::date('0-0-00', array('mdy')));
1277 $this->assertFalse(Validation::date('0.0.00', array('mdy')));
1278 $this->assertFalse(Validation::date('0/0/00', array('mdy')));
1279 $this->assertFalse(Validation::date('0 0 00', array('mdy')));
1280 $this->assertFalse(Validation::date('2-32-06', array('mdy')));
1281 $this->assertFalse(Validation::date('2.32.06', array('mdy')));
1282 $this->assertFalse(Validation::date('2/32/06', array('mdy')));
1283 $this->assertFalse(Validation::date('2 32 06', array('mdy')));
1284 }
1285
1286 /**
1287 * testDateMdyyLeapYear method
1288 *
1289 * @access public
1290 * @return void
1291 */
1292 function testDateMdyyLeapYear() {
1293 $this->assertTrue(Validation::date('2-29-04', array('mdy')));
1294 $this->assertTrue(Validation::date('2.29.04', array('mdy')));
1295 $this->assertTrue(Validation::date('2/29/04', array('mdy')));
1296 $this->assertTrue(Validation::date('2 29 04', array('mdy')));
1297 $this->assertFalse(Validation::date('2-29-06', array('mdy')));
1298 $this->assertFalse(Validation::date('2.29.06', array('mdy')));
1299 $this->assertFalse(Validation::date('2/29/06', array('mdy')));
1300 $this->assertFalse(Validation::date('2 29 06', array('mdy')));
1301 }
1302
1303 /**
1304 * testDateMdyyyy method
1305 *
1306 * @access public
1307 * @return void
1308 */
1309 function testDateMdyyyy() {
1310 $this->assertTrue(Validation::date('2-7-2006', array('mdy')));
1311 $this->assertTrue(Validation::date('2.7.2006', array('mdy')));
1312 $this->assertTrue(Validation::date('2/7/2006', array('mdy')));
1313 $this->assertTrue(Validation::date('2 7 2006', array('mdy')));
1314 $this->assertFalse(Validation::date('0-0-0000', array('mdy')));
1315 $this->assertFalse(Validation::date('0.0.0000', array('mdy')));
1316 $this->assertFalse(Validation::date('0/0/0000', array('mdy')));
1317 $this->assertFalse(Validation::date('0 0 0000', array('mdy')));
1318 $this->assertFalse(Validation::date('2-32-2006', array('mdy')));
1319 $this->assertFalse(Validation::date('2.32.2006', array('mdy')));
1320 $this->assertFalse(Validation::date('2/32/2006', array('mdy')));
1321 $this->assertFalse(Validation::date('2 32 2006', array('mdy')));
1322 }
1323
1324 /**
1325 * testDateMdyyyyLeapYear method
1326 *
1327 * @access public
1328 * @return void
1329 */
1330 function testDateMdyyyyLeapYear() {
1331 $this->assertTrue(Validation::date('2-29-2004', array('mdy')));
1332 $this->assertTrue(Validation::date('2.29.2004', array('mdy')));
1333 $this->assertTrue(Validation::date('2/29/2004', array('mdy')));
1334 $this->assertTrue(Validation::date('2 29 2004', array('mdy')));
1335 $this->assertFalse(Validation::date('2-29-2006', array('mdy')));
1336 $this->assertFalse(Validation::date('2.29.2006', array('mdy')));
1337 $this->assertFalse(Validation::date('2/29/2006', array('mdy')));
1338 $this->assertFalse(Validation::date('2 29 2006', array('mdy')));
1339 }
1340
1341 /**
1342 * testDateYyyymmdd method
1343 *
1344 * @access public
1345 * @return void
1346 */
1347 function testDateYyyymmdd() {
1348 $this->assertTrue(Validation::date('2006-12-27', array('ymd')));
1349 $this->assertTrue(Validation::date('2006.12.27', array('ymd')));
1350 $this->assertTrue(Validation::date('2006/12/27', array('ymd')));
1351 $this->assertTrue(Validation::date('2006 12 27', array('ymd')));
1352 $this->assertFalse(Validation::date('2006-11-31', array('ymd')));
1353 $this->assertFalse(Validation::date('2006.11.31', array('ymd')));
1354 $this->assertFalse(Validation::date('2006/11/31', array('ymd')));
1355 $this->assertFalse(Validation::date('2006 11 31', array('ymd')));
1356 }
1357
1358 /**
1359 * testDateYyyymmddLeapYear method
1360 *
1361 * @access public
1362 * @return void
1363 */
1364 function testDateYyyymmddLeapYear() {
1365 $this->assertTrue(Validation::date('2004-02-29', array('ymd')));
1366 $this->assertTrue(Validation::date('2004.02.29', array('ymd')));
1367 $this->assertTrue(Validation::date('2004/02/29', array('ymd')));
1368 $this->assertTrue(Validation::date('2004 02 29', array('ymd')));
1369 $this->assertFalse(Validation::date('2006-02-29', array('ymd')));
1370 $this->assertFalse(Validation::date('2006.02.29', array('ymd')));
1371 $this->assertFalse(Validation::date('2006/02/29', array('ymd')));
1372 $this->assertFalse(Validation::date('2006 02 29', array('ymd')));
1373 }
1374
1375 /**
1376 * testDateYymmdd method
1377 *
1378 * @access public
1379 * @return void
1380 */
1381 function testDateYymmdd() {
1382 $this->assertTrue(Validation::date('06-12-27', array('ymd')));
1383 $this->assertTrue(Validation::date('06.12.27', array('ymd')));
1384 $this->assertTrue(Validation::date('06/12/27', array('ymd')));
1385 $this->assertTrue(Validation::date('06 12 27', array('ymd')));
1386 $this->assertFalse(Validation::date('12/27/2600', array('ymd')));
1387 $this->assertFalse(Validation::date('12.27.2600', array('ymd')));
1388 $this->assertFalse(Validation::date('12/27/2600', array('ymd')));
1389 $this->assertFalse(Validation::date('12 27 2600', array('ymd')));
1390 $this->assertFalse(Validation::date('06-11-31', array('ymd')));
1391 $this->assertFalse(Validation::date('06.11.31', array('ymd')));
1392 $this->assertFalse(Validation::date('06/11/31', array('ymd')));
1393 $this->assertFalse(Validation::date('06 11 31', array('ymd')));
1394 }
1395
1396 /**
1397 * testDateYymmddLeapYear method
1398 *
1399 * @access public
1400 * @return void
1401 */
1402 function testDateYymmddLeapYear() {
1403 $this->assertTrue(Validation::date('2004-02-29', array('ymd')));
1404 $this->assertTrue(Validation::date('2004.02.29', array('ymd')));
1405 $this->assertTrue(Validation::date('2004/02/29', array('ymd')));
1406 $this->assertTrue(Validation::date('2004 02 29', array('ymd')));
1407 $this->assertFalse(Validation::date('2006-02-29', array('ymd')));
1408 $this->assertFalse(Validation::date('2006.02.29', array('ymd')));
1409 $this->assertFalse(Validation::date('2006/02/29', array('ymd')));
1410 $this->assertFalse(Validation::date('2006 02 29', array('ymd')));
1411 }
1412
1413 /**
1414 * testDateDdMMMMyyyy method
1415 *
1416 * @access public
1417 * @return void
1418 */
1419 function testDateDdMMMMyyyy() {
1420 $this->assertTrue(Validation::date('27 December 2006', array('dMy')));
1421 $this->assertTrue(Validation::date('27 Dec 2006', array('dMy')));
1422 $this->assertFalse(Validation::date('2006 Dec 27', array('dMy')));
1423 $this->assertFalse(Validation::date('2006 December 27', array('dMy')));
1424 }
1425
1426 /**
1427 * testDateDdMMMMyyyyLeapYear method
1428 *
1429 * @access public
1430 * @return void
1431 */
1432 function testDateDdMMMMyyyyLeapYear() {
1433 $this->assertTrue(Validation::date('29 February 2004', array('dMy')));
1434 $this->assertFalse(Validation::date('29 February 2006', array('dMy')));
1435 }
1436
1437 /**
1438 * testDateMmmmDdyyyy method
1439 *
1440 * @access public
1441 * @return void
1442 */
1443 function testDateMmmmDdyyyy() {
1444 $this->assertTrue(Validation::date('December 27, 2006', array('Mdy')));
1445 $this->assertTrue(Validation::date('Dec 27, 2006', array('Mdy')));
1446 $this->assertTrue(Validation::date('December 27 2006', array('Mdy')));
1447 $this->assertTrue(Validation::date('Dec 27 2006', array('Mdy')));
1448 $this->assertFalse(Validation::date('27 Dec 2006', array('Mdy')));
1449 $this->assertFalse(Validation::date('2006 December 27', array('Mdy')));
1450 }
1451
1452 /**
1453 * testDateMmmmDdyyyyLeapYear method
1454 *
1455 * @access public
1456 * @return void
1457 */
1458 function testDateMmmmDdyyyyLeapYear() {
1459 $this->assertTrue(Validation::date('February 29, 2004', array('Mdy')));
1460 $this->assertTrue(Validation::date('Feb 29, 2004', array('Mdy')));
1461 $this->assertTrue(Validation::date('February 29 2004', array('Mdy')));
1462 $this->assertTrue(Validation::date('Feb 29 2004', array('Mdy')));
1463 $this->assertFalse(Validation::date('February 29, 2006', array('Mdy')));
1464 }
1465
1466 /**
1467 * testDateMy method
1468 *
1469 * @access public
1470 * @return void
1471 */
1472 function testDateMy() {
1473 $this->assertTrue(Validation::date('December 2006', array('My')));
1474 $this->assertTrue(Validation::date('Dec 2006', array('My')));
1475 $this->assertTrue(Validation::date('December/2006', array('My')));
1476 $this->assertTrue(Validation::date('Dec/2006', array('My')));
1477 }
1478
1479 /**
1480 * testDateMyNumeric method
1481 *
1482 * @access public
1483 * @return void
1484 */
1485 function testDateMyNumeric() {
1486 $this->assertTrue(Validation::date('12/2006', array('my')));
1487 $this->assertTrue(Validation::date('12-2006', array('my')));
1488 $this->assertTrue(Validation::date('12.2006', array('my')));
1489 $this->assertTrue(Validation::date('12 2006', array('my')));
1490 $this->assertFalse(Validation::date('12/06', array('my')));
1491 $this->assertFalse(Validation::date('12-06', array('my')));
1492 $this->assertFalse(Validation::date('12.06', array('my')));
1493 $this->assertFalse(Validation::date('12 06', array('my')));
1494 }
1495
1496 /**
1497 * testTime method
1498 *
1499 * @access public
1500 * @return void
1501 */
1502 function testTime() {
1503 $this->assertTrue(Validation::time('00:00'));
1504 $this->assertTrue(Validation::time('23:59'));
1505 $this->assertFalse(Validation::time('24:00'));
1506 $this->assertTrue(Validation::time('12:00'));
1507 $this->assertTrue(Validation::time('12:01'));
1508 $this->assertTrue(Validation::time('12:01am'));
1509 $this->assertTrue(Validation::time('12:01pm'));
1510 $this->assertTrue(Validation::time('1pm'));
1511 $this->assertTrue(Validation::time('01:00'));
1512 $this->assertFalse(Validation::time('1:00'));
1513 $this->assertTrue(Validation::time('1:00pm'));
1514 $this->assertFalse(Validation::time('13:00pm'));
1515 $this->assertFalse(Validation::time('9:00'));
1516 }
1517
1518 /**
1519 * testBoolean method
1520 *
1521 * @access public
1522 * @return void
1523 */
1524 function testBoolean() {
1525 $this->assertTrue(Validation::boolean('0'));
1526 $this->assertTrue(Validation::boolean('1'));
1527 $this->assertTrue(Validation::boolean(0));
1528 $this->assertTrue(Validation::boolean(1));
1529 $this->assertTrue(Validation::boolean(true));
1530 $this->assertTrue(Validation::boolean(false));
1531 $this->assertFalse(Validation::boolean('true'));
1532 $this->assertFalse(Validation::boolean('false'));
1533 $this->assertFalse(Validation::boolean('-1'));
1534 $this->assertFalse(Validation::boolean('2'));
1535 $this->assertFalse(Validation::boolean('Boo!'));
1536 }
1537
1538 /**
1539 * testDateCustomRegx method
1540 *
1541 * @access public
1542 * @return void
1543 */
1544 function testDateCustomRegx() {
1545 $this->assertTrue(Validation::date('2006-12-27', null, '%^(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$%'));
1546 $this->assertFalse(Validation::date('12-27-2006', null, '%^(19|20)[0-9]{2}[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$%'));
1547 }
1548
1549 /**
1550 * testDecimal method
1551 *
1552 * @access public
1553 * @return void
1554 */
1555 function testDecimal() {
1556 $this->assertTrue(Validation::decimal('+1234.54321'));
1557 $this->assertTrue(Validation::decimal('-1234.54321'));
1558 $this->assertTrue(Validation::decimal('1234.54321'));
1559 $this->assertTrue(Validation::decimal('+0123.45e6'));
1560 $this->assertTrue(Validation::decimal('-0123.45e6'));
1561 $this->assertTrue(Validation::decimal('0123.45e6'));
1562 $this->assertFalse(Validation::decimal('string'));
1563 $this->assertFalse(Validation::decimal('1234'));
1564 $this->assertFalse(Validation::decimal('-1234'));
1565 $this->assertFalse(Validation::decimal('+1234'));
1566 }
1567
1568 /**
1569 * testDecimalWithPlaces method
1570 *
1571 * @access public
1572 * @return void
1573 */
1574 function testDecimalWithPlaces() {
1575 $this->assertTrue(Validation::decimal('.27', '2'));
1576 $this->assertTrue(Validation::decimal(.27, 2));
1577 $this->assertTrue(Validation::decimal(-.27, 2));
1578 $this->assertTrue(Validation::decimal(+.27, 2));
1579 $this->assertTrue(Validation::decimal('.277', '3'));
1580 $this->assertTrue(Validation::decimal(.277, 3));
1581 $this->assertTrue(Validation::decimal(-.277, 3));
1582 $this->assertTrue(Validation::decimal(+.277, 3));
1583 $this->assertTrue(Validation::decimal('1234.5678', '4'));
1584 $this->assertTrue(Validation::decimal(1234.5678, 4));
1585 $this->assertTrue(Validation::decimal(-1234.5678, 4));
1586 $this->assertTrue(Validation::decimal(+1234.5678, 4));
1587 $this->assertFalse(Validation::decimal('1234.5678', '3'));
1588 $this->assertFalse(Validation::decimal(1234.5678, 3));
1589 $this->assertFalse(Validation::decimal(-1234.5678, 3));
1590 $this->assertFalse(Validation::decimal(+1234.5678, 3));
1591 }
1592
1593 /**
1594 * testDecimalCustomRegex method
1595 *
1596 * @access public
1597 * @return void
1598 */
1599 function testDecimalCustomRegex() {
1600 $this->assertTrue(Validation::decimal('1.54321', null, '/^[-+]?[0-9]+(\\.[0-9]+)?$/s'));
1601 $this->assertFalse(Validation::decimal('.54321', null, '/^[-+]?[0-9]+(\\.[0-9]+)?$/s'));
1602 }
1603
1604 /**
1605 * testEmail method
1606 *
1607 * @access public
1608 * @return void
1609 */
1610 function testEmail() {
1611 $this->assertTrue(Validation::email('abc.efg@domain.com'));
1612 $this->assertTrue(Validation::email('efg@domain.com'));
1613 $this->assertTrue(Validation::email('abc-efg@domain.com'));
1614 $this->assertTrue(Validation::email('abc_efg@domain.com'));
1615 $this->assertTrue(Validation::email('raw@test.ra.ru'));
1616 $this->assertTrue(Validation::email('abc-efg@domain-hyphened.com'));
1617 $this->assertTrue(Validation::email("p.o'malley@domain.com"));
1618 $this->assertTrue(Validation::email('abc+efg@domain.com'));
1619 $this->assertTrue(Validation::email('abc&efg@domain.com'));
1620 $this->assertTrue(Validation::email('abc.efg@12345.com'));
1621 $this->assertTrue(Validation::email('abc.efg@12345.co.jp'));
1622 $this->assertTrue(Validation::email('abc@g.cn'));
1623 $this->assertTrue(Validation::email('abc@x.com'));
1624 $this->assertTrue(Validation::email('henrik@sbcglobal.net'));
1625 $this->assertTrue(Validation::email('sani@sbcglobal.net'));
1626
1627 // all ICANN TLDs
1628 $this->assertTrue(Validation::email('abc@example.aero'));
1629 $this->assertTrue(Validation::email('abc@example.asia'));
1630 $this->assertTrue(Validation::email('abc@example.biz'));
1631 $this->assertTrue(Validation::email('abc@example.cat'));
1632 $this->assertTrue(Validation::email('abc@example.com'));
1633 $this->assertTrue(Validation::email('abc@example.coop'));
1634 $this->assertTrue(Validation::email('abc@example.edu'));
1635 $this->assertTrue(Validation::email('abc@example.gov'));
1636 $this->assertTrue(Validation::email('abc@example.info'));
1637 $this->assertTrue(Validation::email('abc@example.int'));
1638 $this->assertTrue(Validation::email('abc@example.jobs'));
1639 $this->assertTrue(Validation::email('abc@example.mil'));
1640 $this->assertTrue(Validation::email('abc@example.mobi'));
1641 $this->assertTrue(Validation::email('abc@example.museum'));
1642 $this->assertTrue(Validation::email('abc@example.name'));
1643 $this->assertTrue(Validation::email('abc@example.net'));
1644 $this->assertTrue(Validation::email('abc@example.org'));
1645 $this->assertTrue(Validation::email('abc@example.pro'));
1646 $this->assertTrue(Validation::email('abc@example.tel'));
1647 $this->assertTrue(Validation::email('abc@example.travel'));
1648 $this->assertTrue(Validation::email('someone@st.t-com.hr'));
1649
1650 // strange, but technically valid email addresses
1651 $this->assertTrue(Validation::email('S=postmaster/OU=rz/P=uni-frankfurt/A=d400/C=de@gateway.d400.de'));
1652 $this->assertTrue(Validation::email('customer/department=shipping@example.com'));
1653 $this->assertTrue(Validation::email('$A12345@example.com'));
1654 $this->assertTrue(Validation::email('!def!xyz%abc@example.com'));
1655 $this->assertTrue(Validation::email('_somename@example.com'));
1656
1657 // invalid addresses
1658 $this->assertFalse(Validation::email('abc@example'));
1659 $this->assertFalse(Validation::email('abc@example.c'));
1660 $this->assertFalse(Validation::email('abc@example.com.'));
1661 $this->assertFalse(Validation::email('abc.@example.com'));
1662 $this->assertFalse(Validation::email('abc@example..com'));
1663 $this->assertFalse(Validation::email('abc@example.com.a'));
1664 $this->assertFalse(Validation::email('abc@example.toolong'));
1665 $this->assertFalse(Validation::email('abc;@example.com'));
1666 $this->assertFalse(Validation::email('abc@example.com;'));
1667 $this->assertFalse(Validation::email('abc@efg@example.com'));
1668 $this->assertFalse(Validation::email('abc@@example.com'));
1669 $this->assertFalse(Validation::email('abc efg@example.com'));
1670 $this->assertFalse(Validation::email('abc,efg@example.com'));
1671 $this->assertFalse(Validation::email('abc@sub,example.com'));
1672 $this->assertFalse(Validation::email("abc@sub'example.com"));
1673 $this->assertFalse(Validation::email('abc@sub/example.com'));
1674 $this->assertFalse(Validation::email('abc@yahoo!.com'));
1675 $this->assertFalse(Validation::email("Nyrée.surname@example.com"));
1676 $this->assertFalse(Validation::email('abc@example_underscored.com'));
1677 $this->assertFalse(Validation::email('raw@test.ra.ru....com'));
1678 }
1679
1680 /**
1681 * testEmailDeep method
1682 *
1683 * @access public
1684 * @return void
1685 */
1686 function testEmailDeep() {
1687 $found = gethostbynamel('example.abcd');
1688 if ($this->skipIf($found, 'Your DNS service responds for non-existant domains, skipping deep email checks. %s')) {
1689 return;
1690 }
1691 $this->assertTrue(Validation::email('abc.efg@cakephp.org', true));
1692 $this->assertFalse(Validation::email('abc.efg@caphpkeinvalid.com', true));
1693 $this->assertFalse(Validation::email('abc@example.abcd', true));
1694 }
1695
1696 /**
1697 * testEmailCustomRegex method
1698 *
1699 * @access public
1700 * @return void
1701 */
1702 function testEmailCustomRegex() {
1703 $this->assertTrue(Validation::email('abc.efg@cakephp.org', null, '/^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i'));
1704 $this->assertFalse(Validation::email('abc.efg@com.caphpkeinvalid', null, '/^[A-Z0-9._%-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i'));
1705 }
1706
1707 /**
1708 * testEqualTo method
1709 *
1710 * @access public
1711 * @return void
1712 */
1713 function testEqualTo() {
1714 $this->assertTrue(Validation::equalTo("1", "1"));
1715 $this->assertFalse(Validation::equalTo(1, "1"));
1716 $this->assertFalse(Validation::equalTo("", null));
1717 $this->assertFalse(Validation::equalTo("", false));
1718 $this->assertFalse(Validation::equalTo(0, false));
1719 $this->assertFalse(Validation::equalTo(null, false));
1720 }
1721
1722 /**
1723 * testIp method
1724 *
1725 * @access public
1726 * @return void
1727 */
1728 function testIpv4() {
1729 $this->assertTrue(Validation::ip('0.0.0.0', 'IPv4'));
1730 $this->assertTrue(Validation::ip('192.168.1.156', 'IPv4'));
1731 $this->assertTrue(Validation::ip('255.255.255.255', 'IPv4'));
1732
1733 $this->assertFalse(Validation::ip('127.0.0', 'IPv4'));
1734 $this->assertFalse(Validation::ip('127.0.0.a', 'IPv4'));
1735 $this->assertFalse(Validation::ip('127.0.0.256', 'IPv4'));
1736
1737 $this->assertFalse(Validation::ip('2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'IPv4'));
1738 }
1739
1740 /**
1741 * testIp v6
1742 *
1743 * @access public
1744 * @return void
1745 */
1746 function testIpv6() {
1747 $this->assertTrue(Validation::ip('2001:0db8:85a3:0000:0000:8a2e:0370:7334', 'IPv6'));
1748 $this->assertTrue(Validation::ip('2001:db8:85a3:0:0:8a2e:370:7334', 'IPv6'));
1749 $this->assertTrue(Validation::ip('2001:db8:85a3::8a2e:370:7334', 'IPv6'));
1750 $this->assertTrue(Validation::ip('2001:0db8:0000:0000:0000:0000:1428:57ab', 'IPv6'));
1751 $this->assertTrue(Validation::ip('2001:0db8:0000:0000:0000::1428:57ab', 'IPv6'));
1752 $this->assertTrue(Validation::ip('2001:0db8:0:0:0:0:1428:57ab', 'IPv6'));
1753 $this->assertTrue(Validation::ip('2001:0db8:0:0::1428:57ab', 'IPv6'));
1754 $this->assertTrue(Validation::ip('2001:0db8::1428:57ab', 'IPv6'));
1755 $this->assertTrue(Validation::ip('2001:db8::1428:57ab', 'IPv6'));
1756 $this->assertTrue(Validation::ip('0000:0000:0000:0000:0000:0000:0000:0001', 'IPv6'));
1757 $this->assertTrue(Validation::ip('::1', 'IPv6'));
1758 $this->assertTrue(Validation::ip('::ffff:12.34.56.78', 'IPv6'));
1759 $this->assertTrue(Validation::ip('::ffff:0c22:384e', 'IPv6'));
1760 $this->assertTrue(Validation::ip('2001:0db8:1234:0000:0000:0000:0000:0000', 'IPv6'));
1761 $this->assertTrue(Validation::ip('2001:0db8:1234:ffff:ffff:ffff:ffff:ffff', 'IPv6'));
1762 $this->assertTrue(Validation::ip('2001:db8:a::123', 'IPv6'));
1763 $this->assertTrue(Validation::ip('fe80::', 'IPv6'));
1764 $this->assertTrue(Validation::ip('::ffff:192.0.2.128', 'IPv6'));
1765 $this->assertTrue(Validation::ip('::ffff:c000:280', 'IPv6'));
1766
1767 $this->assertFalse(Validation::ip('123', 'IPv6'));
1768 $this->assertFalse(Validation::ip('ldkfj', 'IPv6'));
1769 $this->assertFalse(Validation::ip('2001::FFD3::57ab', 'IPv6'));
1770 $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:37023:7334', 'IPv6'));
1771 $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:370k:7334', 'IPv6'));
1772 $this->assertFalse(Validation::ip('1:2:3:4:5:6:7:8:9', 'IPv6'));
1773 $this->assertFalse(Validation::ip('1::2::3', 'IPv6'));
1774 $this->assertFalse(Validation::ip('1:::3:4:5', 'IPv6'));
1775 $this->assertFalse(Validation::ip('1:2:3::4:5:6:7:8:9', 'IPv6'));
1776 $this->assertFalse(Validation::ip('::ffff:2.3.4', 'IPv6'));
1777 $this->assertFalse(Validation::ip('::ffff:257.1.2.3', 'IPv6'));
1778
1779 $this->assertFalse(Validation::ip('0.0.0.0', 'IPv6'));
1780 }
1781
1782 /**
1783 * testIpBoth method
1784 *
1785 * @return void
1786 * @access public
1787 */
1788 function testIpBoth() {
1789 $this->assertTrue(Validation::ip('0.0.0.0'));
1790 $this->assertTrue(Validation::ip('192.168.1.156'));
1791 $this->assertTrue(Validation::ip('255.255.255.255'));
1792
1793 $this->assertFalse(Validation::ip('127.0.0'));
1794 $this->assertFalse(Validation::ip('127.0.0.a'));
1795 $this->assertFalse(Validation::ip('127.0.0.256'));
1796
1797 $this->assertTrue(Validation::ip('2001:0db8:85a3:0000:0000:8a2e:0370:7334'));
1798 $this->assertTrue(Validation::ip('2001:db8:85a3:0:0:8a2e:370:7334'));
1799 $this->assertTrue(Validation::ip('2001:db8:85a3::8a2e:370:7334'));
1800
1801 $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:37023:7334'));
1802 $this->assertFalse(Validation::ip('2001:db8:85a3::8a2e:370k:7334'));
1803 $this->assertFalse(Validation::ip('1:2:3:4:5:6:7:8:9'));
1804 }
1805
1806 /**
1807 * testMaxLength method
1808 *
1809 * @access public
1810 * @return void
1811 */
1812 function testMaxLength() {
1813 $this->assertTrue(Validation::maxLength('ab', 3));
1814 $this->assertTrue(Validation::maxLength('abc', 3));
1815 $this->assertTrue(Validation::maxLength('ÆΔΩЖÇ', 10));
1816
1817 $this->assertFalse(Validation::maxLength('abcd', 3));
1818 $this->assertFalse(Validation::maxLength('ÆΔΩЖÇ', 3));
1819 }
1820
1821 /**
1822 * testMinLength method
1823 *
1824 * @access public
1825 * @return void
1826 */
1827 function testMinLength() {
1828 $this->assertFalse(Validation::minLength('ab', 3));
1829 $this->assertFalse(Validation::minLength('ÆΔΩЖÇ', 10));
1830
1831 $this->assertTrue(Validation::minLength('abc', 3));
1832 $this->assertTrue(Validation::minLength('abcd', 3));
1833 $this->assertTrue(Validation::minLength('ÆΔΩЖÇ', 2));
1834 }
1835
1836 /**
1837 * testUrl method
1838 *
1839 * @access public
1840 * @return void
1841 */
1842 function testUrl() {
1843 $this->assertTrue(Validation::url('http://www.cakephp.org'));
1844 $this->assertTrue(Validation::url('http://cakephp.org'));
1845 $this->assertTrue(Validation::url('http://www.cakephp.org/somewhere#anchor'));
1846 $this->assertTrue(Validation::url('http://192.168.0.1'));
1847 $this->assertTrue(Validation::url('https://www.cakephp.org'));
1848 $this->assertTrue(Validation::url('https://cakephp.org'));
1849 $this->assertTrue(Validation::url('https://www.cakephp.org/somewhere#anchor'));
1850 $this->assertTrue(Validation::url('https://192.168.0.1'));
1851 $this->assertTrue(Validation::url('ftps://www.cakephp.org/pub/cake'));
1852 $this->assertTrue(Validation::url('ftps://cakephp.org/pub/cake'));
1853 $this->assertTrue(Validation::url('ftps://192.168.0.1/pub/cake'));
1854 $this->assertTrue(Validation::url('ftp://www.cakephp.org/pub/cake'));
1855 $this->assertTrue(Validation::url('ftp://cakephp.org/pub/cake'));
1856 $this->assertTrue(Validation::url('ftp://192.168.0.1/pub/cake'));
1857 $this->assertFalse(Validation::url('ftps://256.168.0.1/pub/cake'));
1858 $this->assertFalse(Validation::url('ftp://256.168.0.1/pub/cake'));
1859 $this->assertTrue(Validation::url('https://my.domain.com/gizmo/app?class=MySip;proc=start'));
1860 $this->assertTrue(Validation::url('www.domain.tld'));
1861 $this->assertFalse(Validation::url('http://w_w.domain.co_m'));
1862 $this->assertFalse(Validation::url('http://www.domain.12com'));
1863 $this->assertFalse(Validation::url('http://www.domain.longttldnotallowed'));
1864 $this->assertFalse(Validation::url('http://www.-invaliddomain.tld'));
1865 $this->assertFalse(Validation::url('http://www.domain.-invalidtld'));
1866 $this->assertTrue(Validation::url('http://123456789112345678921234567893123456789412345678951234567896123.com'));
1867 $this->assertFalse(Validation::url('http://this-domain-is-too-loooooong-by-icann-rules-maximum-length-is-63.com'));
1868 $this->assertTrue(Validation::url('http://www.domain.com/blogs/index.php?blog=6&tempskin=_rss2'));
1869 $this->assertTrue(Validation::url('http://www.domain.com/blogs/parenth()eses.php'));
1870 $this->assertTrue(Validation::url('http://www.domain.com/index.php?get=params&amp;get2=params'));
1871 $this->assertTrue(Validation::url('http://www.domain.com/ndex.php?get=params&amp;get2=params#anchor'));
1872 $this->assertFalse(Validation::url('http://www.domain.com/fakeenco%ode'));
1873 $this->assertTrue(Validation::url('http://www.domain.com/real%20url%20encodeing'));
1874 $this->assertTrue(Validation::url('http://en.wikipedia.org/wiki/Architectural_pattern_(computer_science)'));
1875 $this->assertFalse(Validation::url('http://en.(wikipedia).org/'));
1876 $this->assertFalse(Validation::url('www.cakephp.org', true));
1877 $this->assertTrue(Validation::url('http://www.cakephp.org', true));
1878 $this->assertTrue(Validation::url('http://example.com/~userdir/'));
1879 $this->assertTrue(Validation::url('http://example.com/~userdir/subdir/index.html'));
1880 $this->assertTrue(Validation::url('http://www.zwischenraume.de'));
1881 $this->assertTrue(Validation::url('http://www.zwischenraume.cz'));
1882 $this->assertTrue(Validation::url('http://www.last.fm/music/浜崎あゆみ'), 'utf8 path failed');
1883 $this->assertTrue(Validation::url('http://www.electrohome.ro/images/239537750-284232-215_300[1].jpg'));
1884
1885 $this->assertTrue(Validation::url('http://cakephp.org:80'));
1886 $this->assertTrue(Validation::url('http://cakephp.org:443'));
1887 $this->assertTrue(Validation::url('http://cakephp.org:2000'));
1888 $this->assertTrue(Validation::url('http://cakephp.org:27000'));
1889 $this->assertTrue(Validation::url('http://cakephp.org:65000'));
1890
1891 $this->assertTrue(Validation::url('[2001:0db8::1428:57ab]'));
1892 $this->assertTrue(Validation::url('[::1]'));
1893 $this->assertTrue(Validation::url('[2001:0db8::1428:57ab]:80'));
1894 $this->assertTrue(Validation::url('[::1]:80'));
1895 $this->assertTrue(Validation::url('http://[2001:0db8::1428:57ab]'));
1896 $this->assertTrue(Validation::url('http://[::1]'));
1897 $this->assertTrue(Validation::url('http://[2001:0db8::1428:57ab]:80'));
1898 $this->assertTrue(Validation::url('http://[::1]:80'));
1899
1900 $this->assertFalse(Validation::url('[1::2::3]'));
1901 }
1902
1903 function testUuid() {
1904 $this->assertTrue(Validation::uuid('550e8400-e29b-11d4-a716-446655440000'));
1905 $this->assertFalse(Validation::uuid('BRAP-e29b-11d4-a716-446655440000'));
1906 $this->assertTrue(Validation::uuid('550E8400-e29b-11D4-A716-446655440000'));
1907 $this->assertFalse(Validation::uuid('550e8400-e29b11d4-a716-446655440000'));
1908 $this->assertFalse(Validation::uuid('550e8400-e29b-11d4-a716-4466440000'));
1909 $this->assertFalse(Validation::uuid('550e8400-e29b-11d4-a71-446655440000'));
1910 $this->assertFalse(Validation::uuid('550e8400-e29b-11d-a716-446655440000'));
1911 $this->assertFalse(Validation::uuid('550e8400-e29-11d4-a716-446655440000'));
1912 }
1913
1914 /**
1915 * testInList method
1916 *
1917 * @access public
1918 * @return void
1919 */
1920 function testInList() {
1921 $this->assertTrue(Validation::inList('one', array('one', 'two')));
1922 $this->assertTrue(Validation::inList('two', array('one', 'two')));
1923 $this->assertFalse(Validation::inList('three', array('one', 'two')));
1924 }
1925
1926 /**
1927 * testRange method
1928 *
1929 * @access public
1930 * @return void
1931 */
1932 function testRange() {
1933 $this->assertFalse(Validation::range(20, 100, 1));
1934 $this->assertTrue(Validation::range(20, 1, 100));
1935 $this->assertFalse(Validation::range(.5, 1, 100));
1936 $this->assertTrue(Validation::range(.5, 0, 100));
1937 $this->assertTrue(Validation::range(5));
1938 $this->assertTrue(Validation::range(-5, -10, 1));
1939 $this->assertFalse(Validation::range('word'));
1940 }
1941
1942 /**
1943 * testExtension method
1944 *
1945 * @access public
1946 * @return void
1947 */
1948 function testExtension() {
1949 $this->assertTrue(Validation::extension('extension.jpeg'));
1950 $this->assertTrue(Validation::extension('extension.JPEG'));
1951 $this->assertTrue(Validation::extension('extension.gif'));
1952 $this->assertTrue(Validation::extension('extension.GIF'));
1953 $this->assertTrue(Validation::extension('extension.png'));
1954 $this->assertTrue(Validation::extension('extension.jpg'));
1955 $this->assertTrue(Validation::extension('extension.JPG'));
1956 $this->assertFalse(Validation::extension('noextension'));
1957 $this->assertTrue(Validation::extension('extension.pdf', array('PDF')));
1958 $this->assertFalse(Validation::extension('extension.jpg', array('GIF')));
1959 $this->assertTrue(Validation::extension(array('extension.JPG', 'extension.gif', 'extension.png')));
1960 $this->assertTrue(Validation::extension(array('file' => array('name' => 'file.jpg'))));
1961 $this->assertTrue(Validation::extension(array('file1' => array('name' => 'file.jpg'),
1962 'file2' => array('name' => 'file.jpg'),
1963 'file3' => array('name' => 'file.jpg'))));
1964 $this->assertFalse(Validation::extension(array('file1' => array('name' => 'file.jpg'),
1965 'file2' => array('name' => 'file.jpg'),
1966 'file3' => array('name' => 'file.jpg')), array('gif')));
1967
1968 $this->assertFalse(Validation::extension(array('noextension', 'extension.JPG', 'extension.gif', 'extension.png')));
1969 $this->assertFalse(Validation::extension(array('extension.pdf', 'extension.JPG', 'extension.gif', 'extension.png')));
1970 }
1971
1972 /**
1973 * testMoney method
1974 *
1975 * @access public
1976 * @return void
1977 */
1978 function testMoney() {
1979 $this->assertTrue(Validation::money('$100'));
1980 $this->assertTrue(Validation::money('$100.11'));
1981 $this->assertTrue(Validation::money('$100.112'));
1982 $this->assertFalse(Validation::money('$100.1'));
1983 $this->assertFalse(Validation::money('$100.1111'));
1984 $this->assertFalse(Validation::money('text'));
1985
1986 $this->assertTrue(Validation::money('100', 'right'));
1987 $this->assertTrue(Validation::money('100.11$', 'right'));
1988 $this->assertTrue(Validation::money('100.112$', 'right'));
1989 $this->assertFalse(Validation::money('100.1$', 'right'));
1990 $this->assertFalse(Validation::money('100.1111$', 'right'));
1991
1992 $this->assertTrue(Validation::money('€100'));
1993 $this->assertTrue(Validation::money('€100.11'));
1994 $this->assertTrue(Validation::money('€100.112'));
1995 $this->assertFalse(Validation::money('€100.1'));
1996 $this->assertFalse(Validation::money('€100.1111'));
1997
1998 $this->assertTrue(Validation::money('100', 'right'));
1999 $this->assertTrue(Validation::money('100.11€', 'right'));
2000 $this->assertTrue(Validation::money('100.112€', 'right'));
2001 $this->assertFalse(Validation::money('100.1€', 'right'));
2002 $this->assertFalse(Validation::money('100.1111€', 'right'));
2003 }
2004
2005 /**
2006 * Test Multiple Select Validation
2007 *
2008 * @access public
2009 * @return void
2010 */
2011 function testMultiple() {
2012 $this->assertTrue(Validation::multiple(array(0, 1, 2, 3)));
2013 $this->assertTrue(Validation::multiple(array(50, 32, 22, 0)));
2014 $this->assertTrue(Validation::multiple(array('str', 'var', 'enum', 0)));
2015 $this->assertFalse(Validation::multiple(''));
2016 $this->assertFalse(Validation::multiple(null));
2017 $this->assertFalse(Validation::multiple(array()));
2018 $this->assertFalse(Validation::multiple(array(0)));
2019 $this->assertFalse(Validation::multiple(array('0')));
2020
2021 $this->assertTrue(Validation::multiple(array(0, 3, 4, 5), array('in' => range(0, 10))));
2022 $this->assertFalse(Validation::multiple(array(0, 15, 20, 5), array('in' => range(0, 10))));
2023 $this->assertFalse(Validation::multiple(array(0, 5, 10, 11), array('in' => range(0, 10))));
2024 $this->assertFalse(Validation::multiple(array('boo', 'foo', 'bar'), array('in' => array('foo', 'bar', 'baz'))));
2025
2026 $this->assertTrue(Validation::multiple(array(0, 5, 10, 11), array('max' => 3)));
2027 $this->assertFalse(Validation::multiple(array(0, 5, 10, 11, 55), array('max' => 3)));
2028 $this->assertTrue(Validation::multiple(array('foo', 'bar', 'baz'), array('max' => 3)));
2029 $this->assertFalse(Validation::multiple(array('foo', 'bar', 'baz', 'squirrel'), array('max' => 3)));
2030
2031 $this->assertTrue(Validation::multiple(array(0, 5, 10, 11), array('min' => 3)));
2032 $this->assertTrue(Validation::multiple(array(0, 5, 10, 11, 55), array('min' => 3)));
2033 $this->assertFalse(Validation::multiple(array('foo', 'bar', 'baz'), array('min' => 5)));
2034 $this->assertFalse(Validation::multiple(array('foo', 'bar', 'baz', 'squirrel'), array('min' => 10)));
2035
2036 $this->assertTrue(Validation::multiple(array(0, 5, 9), array('in' => range(0, 10), 'max' => 5)));
2037 $this->assertFalse(Validation::multiple(array(0, 5, 9, 8, 6, 2, 1), array('in' => range(0, 10), 'max' => 5)));
2038 $this->assertFalse(Validation::multiple(array(0, 5, 9, 8, 11), array('in' => range(0, 10), 'max' => 5)));
2039
2040 $this->assertFalse(Validation::multiple(array(0, 5, 9), array('in' => range(0, 10), 'max' => 5, 'min' => 3)));
2041 $this->assertFalse(Validation::multiple(array(0, 5, 9, 8, 6, 2, 1), array('in' => range(0, 10), 'max' => 5, 'min' => 2)));
2042 $this->assertFalse(Validation::multiple(array(0, 5, 9, 8, 11), array('in' => range(0, 10), 'max' => 5, 'min' => 2)));
2043 }
2044
2045 /**
2046 * testNumeric method
2047 *
2048 * @access public
2049 * @return void
2050 */
2051 function testNumeric() {
2052 $this->assertFalse(Validation::numeric('teststring'));
2053 $this->assertFalse(Validation::numeric('1.1test'));
2054 $this->assertFalse(Validation::numeric('2test'));
2055
2056 $this->assertTrue(Validation::numeric('2'));
2057 $this->assertTrue(Validation::numeric(2));
2058 $this->assertTrue(Validation::numeric(2.2));
2059 $this->assertTrue(Validation::numeric('2.2'));
2060 }
2061
2062 /**
2063 * testPhone method
2064 *
2065 * @access public
2066 * @return void
2067 */
2068 function testPhone() {
2069 $this->assertFalse(Validation::phone('teststring'));
2070 $this->assertFalse(Validation::phone('1-(33)-(333)-(4444)'));
2071 $this->assertFalse(Validation::phone('1-(33)-3333-4444'));
2072 $this->assertFalse(Validation::phone('1-(33)-33-4444'));
2073 $this->assertFalse(Validation::phone('1-(33)-3-44444'));
2074 $this->assertFalse(Validation::phone('1-(33)-3-444'));
2075 $this->assertFalse(Validation::phone('1-(33)-3-44'));
2076
2077 $this->assertFalse(Validation::phone('(055) 999-9999'));
2078 $this->assertFalse(Validation::phone('(155) 999-9999'));
2079 $this->assertFalse(Validation::phone('(595) 999-9999'));
2080 $this->assertFalse(Validation::phone('(555) 099-9999'));
2081 $this->assertFalse(Validation::phone('(555) 199-9999'));
2082
2083 $this->assertTrue(Validation::phone('1 (222) 333 4444'));
2084 $this->assertTrue(Validation::phone('+1 (222) 333 4444'));
2085 $this->assertTrue(Validation::phone('(222) 333 4444'));
2086
2087 $this->assertTrue(Validation::phone('1-(333)-333-4444'));
2088 $this->assertTrue(Validation::phone('1.(333)-333-4444'));
2089 $this->assertTrue(Validation::phone('1.(333).333-4444'));
2090 $this->assertTrue(Validation::phone('1.(333).333.4444'));
2091 $this->assertTrue(Validation::phone('1-333-333-4444'));
2092 }
2093
2094 /**
2095 * testPostal method
2096 *
2097 * @access public
2098 * @return void
2099 */
2100 function testPostal() {
2101 $this->assertFalse(Validation::postal('111', null, 'de'));
2102 $this->assertFalse(Validation::postal('1111', null, 'de'));
2103 $this->assertTrue(Validation::postal('13089', null, 'de'));
2104
2105 $this->assertFalse(Validation::postal('111', null, 'be'));
2106 $this->assertFalse(Validation::postal('0123', null, 'be'));
2107 $this->assertTrue(Validation::postal('1204', null, 'be'));
2108
2109 $this->assertFalse(Validation::postal('111', null, 'it'));
2110 $this->assertFalse(Validation::postal('1111', null, 'it'));
2111 $this->assertTrue(Validation::postal('13089', null, 'it'));
2112
2113 $this->assertFalse(Validation::postal('111', null, 'uk'));
2114 $this->assertFalse(Validation::postal('1111', null, 'uk'));
2115 $this->assertFalse(Validation::postal('AZA 0AB', null, 'uk'));
2116 $this->assertFalse(Validation::postal('X0A 0ABC', null, 'uk'));
2117 $this->assertTrue(Validation::postal('X0A 0AB', null, 'uk'));
2118 $this->assertTrue(Validation::postal('AZ0A 0AA', null, 'uk'));
2119 $this->assertTrue(Validation::postal('A89 2DD', null, 'uk'));
2120
2121 $this->assertFalse(Validation::postal('111', null, 'ca'));
2122 $this->assertFalse(Validation::postal('1111', null, 'ca'));
2123 $this->assertFalse(Validation::postal('D2A 0A0', null, 'ca'));
2124 $this->assertFalse(Validation::postal('BAA 0ABC', null, 'ca'));
2125 $this->assertFalse(Validation::postal('B2A AABC', null, 'ca'));
2126 $this->assertFalse(Validation::postal('B2A 2AB', null, 'ca'));
2127 $this->assertTrue(Validation::postal('X0A 0A2', null, 'ca'));
2128 $this->assertTrue(Validation::postal('G4V 4C3', null, 'ca'));
2129 $this->assertTrue(Validation::postal('L4J8D6', null, 'ca'));
2130
2131 $this->assertFalse(Validation::postal('111', null, 'us'));
2132 $this->assertFalse(Validation::postal('1111', null, 'us'));
2133 $this->assertFalse(Validation::postal('130896', null, 'us'));
2134 $this->assertFalse(Validation::postal('13089-33333', null, 'us'));
2135 $this->assertFalse(Validation::postal('13089-333', null, 'us'));
2136 $this->assertFalse(Validation::postal('13A89-4333', null, 'us'));
2137 $this->assertTrue(Validation::postal('13089-3333', null, 'us'));
2138
2139 $this->assertFalse(Validation::postal('111'));
2140 $this->assertFalse(Validation::postal('1111'));
2141 $this->assertFalse(Validation::postal('130896'));
2142 $this->assertFalse(Validation::postal('13089-33333'));
2143 $this->assertFalse(Validation::postal('13089-333'));
2144 $this->assertFalse(Validation::postal('13A89-4333'));
2145 $this->assertTrue(Validation::postal('13089-3333'));
2146 }
2147
2148 /**
2149 * test that phone and postal pass to other classes.
2150 *
2151 * @return void
2152 */
2153 function testPhonePostalSsnPass() {
2154 $this->assertTrue(Validation::postal('text', null, 'testNl'));
2155 $this->assertTrue(Validation::phone('text', null, 'testDe'));
2156 $this->assertTrue(Validation::ssn('text', null, 'testNl'));
2157 }
2158
2159 /**
2160 * test the pass through calling of an alternate locale with postal()
2161 *
2162 * @return void
2163 **/
2164 function testPassThroughMethod() {
2165 $this->assertTrue(Validation::postal('text', null, 'testNl'));
2166
2167 $this->expectError('Could not find AUTOFAILValidation class, unable to complete validation.');
2168 Validation::postal('text', null, 'AUTOFAIL');
2169
2170 $this->expectError('Method phone does not exist on TestNlValidation unable to complete validation.');
2171 Validation::phone('text', null, 'testNl');
2172 }
2173
2174 /**
2175 * testSsn method
2176 *
2177 * @access public
2178 * @return void
2179 */
2180 function testSsn() {
2181 $this->assertFalse(Validation::ssn('111-333', null, 'dk'));
2182 $this->assertFalse(Validation::ssn('111111-333', null, 'dk'));
2183 $this->assertTrue(Validation::ssn('111111-3334', null, 'dk'));
2184
2185 $this->assertFalse(Validation::ssn('1118333', null, 'nl'));
2186 $this->assertFalse(Validation::ssn('1234567890', null, 'nl'));
2187 $this->assertFalse(Validation::ssn('12345A789', null, 'nl'));
2188 $this->assertTrue(Validation::ssn('123456789', null, 'nl'));
2189
2190 $this->assertFalse(Validation::ssn('11-33-4333', null, 'us'));
2191 $this->assertFalse(Validation::ssn('113-3-4333', null, 'us'));
2192 $this->assertFalse(Validation::ssn('111-33-333', null, 'us'));
2193 $this->assertTrue(Validation::ssn('111-33-4333', null, 'us'));
2194 }
2195
2196 /**
2197 * testUserDefined method
2198 *
2199 * @access public
2200 * @return void
2201 */
2202 function testUserDefined() {
2203 $validator = new CustomValidator;
2204 $this->assertFalse(Validation::userDefined('33', $validator, 'customValidate'));
2205 $this->assertFalse(Validation::userDefined('3333', $validator, 'customValidate'));
2206 $this->assertTrue(Validation::userDefined('333', $validator, 'customValidate'));
2207 }
2208
2209 }