| 1 |
lars |
1 |
--TEST--
|
|
|
2 |
testdate.phpt: Unit tests for 'Validate.php'
|
|
|
3 |
--FILE--
|
|
|
4 |
<?php
|
|
|
5 |
// $Id: testdate.phpt 236794 2007-06-01 07:44:55Z amir $
|
|
|
6 |
require_once 'Validate.php';
|
|
|
7 |
|
|
|
8 |
// Validate test script
|
|
|
9 |
$noYes = array('NO', 'YES');
|
|
|
10 |
require_once 'Date.php';
|
|
|
11 |
|
|
|
12 |
echo "Test Validate_Date\n";
|
|
|
13 |
echo "******************\n";
|
|
|
14 |
|
|
|
15 |
$dates = array(
|
|
|
16 |
array('121202', 'format'=>'%d%m%y'), // OK
|
|
|
17 |
array('21202', 'format'=>'%d%m%y'), // NOK
|
|
|
18 |
array('02122', 'format'=>'%y%m%d'), // NOK
|
|
|
19 |
array('02229', 'format'=>'%y%d%m'), // NOK
|
|
|
20 |
array('121402', 'format'=>'%d%m%y'), // NOK
|
|
|
21 |
array('12120001', 'format'=>'%d%m%Y'), // OK
|
|
|
22 |
|
|
|
23 |
/* Ambiguous date >> false
|
|
|
24 |
* They should be still valid. Maybe by changing the loop
|
|
|
25 |
* 1st check for the Y (4digits), and then m (2digits)
|
|
|
26 |
* if you got the idea ;)
|
|
|
27 |
*/
|
|
|
28 |
array('220001', 'format'=>'%j%n%Y'), // NOK
|
|
|
29 |
array('2299', 'format'=>'%j%n%y'), // NOK
|
|
|
30 |
array('2120001', 'format'=>'%j%m%Y'), // NOK
|
|
|
31 |
/* End */
|
|
|
32 |
|
|
|
33 |
array('12121999', 'format'=>'%d%m%Y', 'min'=>array('01','01','1995')), // OK
|
|
|
34 |
array('12121996', 'format'=>'%d%m%Y', 'min'=>array('01','01','1995'),
|
|
|
35 |
'max'=>array('01','01','1997')), // OK
|
|
|
36 |
array('29022002', 'format'=>'%d%m%Y'), // NOK
|
|
|
37 |
array('12.12.1902', 'format'=>'%d.%m.%Y'), // OK
|
|
|
38 |
array('12/12/1902', 'format'=>'%d/%m/%Y'), // OK
|
|
|
39 |
array('12/12/1902', 'format'=>'%d/%m/%Y'), // OK
|
|
|
40 |
array('12:12:1902', 'format'=>'%d:%m:%Y'), // OK
|
|
|
41 |
array('12', 'format'=>'%g'), // OK
|
|
|
42 |
array('12', 'format'=>'%G'), // OK
|
|
|
43 |
array('13:00', 'format'=>'%g:%i'), // NOK
|
|
|
44 |
array('24:59', 'format'=>'%G:%i'), // OK
|
|
|
45 |
array('25:00', 'format'=>'%G:%i'), // NOK
|
|
|
46 |
array('25:00', 'format'=>'%G:%i:%s'), // NOK
|
|
|
47 |
array('121902', 'format'=>'%m%Y'), // OK
|
|
|
48 |
array('13120001', 'format'=>'%d%m%Y') // OK
|
|
|
49 |
);
|
|
|
50 |
|
|
|
51 |
$dateObjects = array(
|
|
|
52 |
array('11111996', 'format'=>'%d%m%Y', 'min' => new Date('19950101')), // OK
|
|
|
53 |
array('12121996', 'format'=>'%d%m%Y', 'min' => new Date('19970101')), // NOK
|
|
|
54 |
array('10101994', 'format'=>'%d%m%Y', 'max' => new Date('2005-04-27 06:24:05')), // OK
|
|
|
55 |
array('11111994', 'format'=>'%d%m%Y', 'max' => new Date('19920101')), // NOK
|
|
|
56 |
array('12121996', 'format'=>'%d%m%Y',
|
|
|
57 |
'min' => new Date('19950101'), 'max' => new Date('2005-04-27 06:24:05')) // OK
|
|
|
58 |
);
|
|
|
59 |
|
|
|
60 |
echo "\nTest dates\n";
|
|
|
61 |
foreach ($dates as $data){
|
|
|
62 |
$date = array_shift($data);
|
|
|
63 |
echo "{$date} (";
|
|
|
64 |
foreach ($data as $key=>$val) {
|
|
|
65 |
if (is_array($val)) {
|
|
|
66 |
echo "{$key}=>[ ";
|
|
|
67 |
foreach($val as $elt) {
|
|
|
68 |
echo "{$elt} ";
|
|
|
69 |
}
|
|
|
70 |
echo "] ";
|
|
|
71 |
} else {
|
|
|
72 |
echo "{$key}=>{$val} ";
|
|
|
73 |
}
|
|
|
74 |
}
|
|
|
75 |
echo "): ".$noYes[Validate::date($date, $data)]."\n";
|
|
|
76 |
}
|
|
|
77 |
|
|
|
78 |
echo "\nTest dates with min max object\n";
|
|
|
79 |
foreach ($dateObjects as $data){
|
|
|
80 |
$date = array_shift($data);
|
|
|
81 |
echo "{$date} (";
|
|
|
82 |
foreach ($data as $key=>$val) {
|
|
|
83 |
if (($key == 'min') or ($key == 'max')) {
|
|
|
84 |
echo "{$key}=>".$val->getDate()." ";
|
|
|
85 |
} else {
|
|
|
86 |
echo "{$key}=>{$val} ";
|
|
|
87 |
}
|
|
|
88 |
}
|
|
|
89 |
echo "): ".$noYes[Validate::date($date, $data)]."\n";
|
|
|
90 |
}
|
|
|
91 |
?>
|
|
|
92 |
--EXPECT--
|
|
|
93 |
Test Validate_Date
|
|
|
94 |
******************
|
|
|
95 |
|
|
|
96 |
Test dates
|
|
|
97 |
121202 (format=>%d%m%y ): YES
|
|
|
98 |
21202 (format=>%d%m%y ): NO
|
|
|
99 |
02122 (format=>%y%m%d ): NO
|
|
|
100 |
02229 (format=>%y%d%m ): NO
|
|
|
101 |
121402 (format=>%d%m%y ): NO
|
|
|
102 |
12120001 (format=>%d%m%Y ): YES
|
|
|
103 |
220001 (format=>%j%n%Y ): NO
|
|
|
104 |
2299 (format=>%j%n%y ): NO
|
|
|
105 |
2120001 (format=>%j%m%Y ): NO
|
|
|
106 |
12121999 (format=>%d%m%Y min=>[ 01 01 1995 ] ): YES
|
|
|
107 |
12121996 (format=>%d%m%Y min=>[ 01 01 1995 ] max=>[ 01 01 1997 ] ): YES
|
|
|
108 |
29022002 (format=>%d%m%Y ): NO
|
|
|
109 |
12.12.1902 (format=>%d.%m.%Y ): YES
|
|
|
110 |
12/12/1902 (format=>%d/%m/%Y ): YES
|
|
|
111 |
12/12/1902 (format=>%d/%m/%Y ): YES
|
|
|
112 |
12:12:1902 (format=>%d:%m:%Y ): YES
|
|
|
113 |
12 (format=>%g ): YES
|
|
|
114 |
12 (format=>%G ): YES
|
|
|
115 |
13:00 (format=>%g:%i ): NO
|
|
|
116 |
24:59 (format=>%G:%i ): YES
|
|
|
117 |
25:00 (format=>%G:%i ): NO
|
|
|
118 |
25:00 (format=>%G:%i:%s ): NO
|
|
|
119 |
121902 (format=>%m%Y ): YES
|
|
|
120 |
13120001 (format=>%d%m%Y ): YES
|
|
|
121 |
|
|
|
122 |
Test dates with min max object
|
|
|
123 |
11111996 (format=>%d%m%Y min=>1995-01-01 00:00:00 ): YES
|
|
|
124 |
12121996 (format=>%d%m%Y min=>1997-01-01 00:00:00 ): NO
|
|
|
125 |
10101994 (format=>%d%m%Y max=>2005-04-27 06:24:05 ): YES
|
|
|
126 |
11111994 (format=>%d%m%Y max=>1992-01-01 00:00:00 ): NO
|
|
|
127 |
12121996 (format=>%d%m%Y min=>1995-01-01 00:00:00 max=>2005-04-27 06:24:05 ): YES
|