1#!/usr/bin/perl 2 3use warnings; 4use strict; 5use Test::Inter; 6$::ti = new Test::Inter $0; 7require "tests-dm5.pl"; 8 9Date_Init("TZ=EST"); 10Date_Init("ForceDate=1997-03-08-12:30:00"); 11Date_Init("Language=Romanian","DateFormat=US","Internal=0"); 12 13my($currS,$currMN,$currH,$currD,$currM,$currY)=("00","30","12","08","03","1997"); 14 15my $today ="$currY$currM$currD$currH:$currMN:$currS"; 16my $todaydate ="$currY$currM$currD"; 17my $yesterdaydate="$currY$currM". $currD-1; 18my $tomorrowdate ="$currY$currM". $currD+1; 19my $yesterday ="$yesterdaydate$currH:$currMN:$currS"; 20my $tomorrow ="$tomorrowdate$currH:$currMN:$currS"; 21 22my $tests=" 23 24# Test built in strings like today and yesterday. A few may fail on a 25# slow computer. On the 1st or last day of the month, the 26# yesterday/today test will fail because of the simplicity of the 27# test. 28 29acum => $today 30 31astazi => $today 32 33ieri => $yesterday 34 35miine => $tomorrow 36 37 38'astazi la 4:00' => ${todaydate}04:00:00 39 40'astazi la 4:00 pm' => ${todaydate}16:00:00 41 42'astazi la 16:00:00' => ${todaydate}16:00:00 43 44'astazi la 12:00 am' => ${todaydate}00:00:00 45 46'astazi la 12:00 GMT' => ${todaydate}07:00:00 47 48'astazi la 4:00 PST' => ${todaydate}07:00:00 49 50'astazi la 4:00 -0800' => ${todaydate}07:00:00 51 52'astazi la amiaza' => ${todaydate}12:00:00 53 54'miine la amiaza ' => ${tomorrowdate}12:00:00 55 56'1 luna in urma ' => 1997020812:30:00 57 58# Test weeks 59 60'a 22-a duminica' => 1997060100:00:00 61 621997023 => 1997012300:00:00 63 641997035 => 1997020400:00:00 65 6697-035 => 1997020400:00:00 67 6897035 => 1997020400:00:00 69 70'a douazecisidoua duminica 1996' => 1996060200:00:00 71 72'22 duminica in 1996' => 1996060200:00:00 73 74'a 22-a duminica 12:00' => 1997060112:00:00 75 76'a 22-a duminica la 12:00' => 1997060112:00:00 77 78'a 22-a duminica la 12:00 EST' => 1997060112:00:00 79 80'a 22-a duminica in 1996 la 12:00 EST' => 1996060212:00:00 81 82'duminica saptamina 1 1999' => 1999011000:00:00 83 84'joi saptamina 0 1999' => 1998123100:00:00 85 86'prima joi in 1999' => 1999010700:00:00 87 88'prima duminica in 1999' => 1999010300:00:00 89 90'duminica saptamina 22' => 1997060100:00:00 91 92'duminica saptamina a douazecisidoua 1996' => 1996060200:00:00 93 94'duminica sapt 22 in 1996' => 1996060200:00:00 95 96'duminica saptamina 22 12:00' => 1997060112:00:00 97 98'duminica saptamina 22 12:00' => 1997060112:00:00 99 100'duminica saptamina 22 la 12:00 EST' => 1997060112:00:00 101 102'duminica saptamina 22 in 1996 la 12:00 EST' => 1996060212:00:00 103 104'duminica 22 saptamini ' => 1997060100:00:00 105 106'duminica a douazecisidoua saptamina 1996' => 1996060200:00:00 107 108'duminica 22 sapt in 1996' => 1996060200:00:00 109 110'duminica saptamina 22 12:00' => 1997060112:00:00 111 112'duminica saptamina 22 la 12:00' => 1997060112:00:00 113 114'duminica saptamina 22 la 12:00 EST' => 1997060112:00:00 115 116'duminica saptamina 22 in 1996 la 12:00 EST' => 1996060212:00:00 117 118# Tests 'which day in mon' formats 119 120'ultima marti in iun 96' => 1996062500:00:00 121 122'ultima marti din iunie' => 1997062400:00:00 123 124'prima marti in iun 1996' => 1996060400:00:00 125 126'prima marti in iunie' => 1997060300:00:00 127 128'a 3-a marti in iun 96' => 1996061800:00:00 129 130'a 3-a marti in iun 96 la 12:00:00' => 1996061812:00:00 131 132'a 3-a marti in iun 96 la 10:30am' => 1996061810:30:00 133 134'a 3-a marti in iun 96 la 10:30 pm' => 1996061822:30:00 135 136'a 3-a marti in iun 96 la 10:30 pm GMT' => 1996061817:30:00 137 138'a 3-a marti in iun 96 la 10:30 pm CET' => 1996061816:30:00 139 140# Tests Date Time Date%Time Date=mm%dd '12/10/65 la 5:30:25' => 141# 1965121005:30:25 142 143'12-10-65 la 5:30:25' => 1965121005:30:25 144 145'12 10 65 la 5:30:25' => 1965121005:30:25 146 147'12 10 1965 la 5:30:25' => 1965121005:30:25 148 149'12.10.1965 05:61' => '' 150 151'12.10.1965 05:30:61' => '' 152 15312/10 => ${currY}121000:00:00 154 155'12/10 05:30' => ${currY}121005:30:00 156 157'12/10 la 05:30:25' => ${currY}121005:30:25 158 159'12/10 la 05:30:25 GMT' => ${currY}121000:30:25 160 161'12/10 5:30' => ${currY}121005:30:00 162 163'12/10 05:30' => ${currY}121005:30:00 164 165'12-10 5:30' => ${currY}121005:30:00 166 167'12.10 05:30' => ${currY}121005:30:00 168 169'12 10 05:30' => ${currY}121005:30:00 170 171'2 29 92' => 1992022900:00:00 172 173'2 29 90' => '' 174 175# Tests Date Time 176# Date%Time 177# Date=mmm%dd 178 179Dec/10/1965 => 1965121000:00:00 180 181Decembrie/10/65 => 1965121000:00:00 182 183Dec-10-65 => 1965121000:00:00 184 185'Dec 10 65' => 1965121000:00:00 186 187'DecEMBRIE10 65' => 1965121000:00:00 188 189'Decembrie/10/65 5:30:25' => 1965121005:30:25 190 191'Dec/10/65/5:30 pm' => 1965121017:30:00 192 193'Dec/10/65/5:30 pm GMT' => 1965121012:30:00 194 195'Dec/10/65 la 5:30:25' => 1965121005:30:25 196 197'Dec-10-1965 5:30:25' => 1965121005:30:25 198 199'Decembrie-10-65 5:30:25' => 1965121005:30:25 200 201'Dec-10-65-5:30 pm' => 1965121017:30:00 202 203'Dec-10-65 la 5:30:25' => 1965121005:30:25 204 205'Dec 10 65 5:30:25' => 1965121005:30:25 206 207'Dec 10 65 5:30 pm' => 1965121017:30:00 208 209'Decembrie 10 65 la 5:30:25' => 1965121005:30:25 210 211'Dec 10 1965 la 5:30:25' => 1965121005:30:25 212 213'Dec-10-1965 05:61' => '' 214 215'Dec-10-1965 05:30:61' => '' 216 217Decembrie/10 => ${currY}121000:00:00 218 219'Dec/10 05:30' => ${currY}121005:30:00 220 221'Dec/10 la 05:30:25' => ${currY}121005:30:25 222 223'Dec/10 la 05:30:25 GMT' => ${currY}121000:30:25 224 225'Dec/10 5:30' => ${currY}121005:30:00 226 227'Dec/10 05:30' => ${currY}121005:30:00 228 229'Dec-10 5:30' => ${currY}121005:30:00 230 231'Dec-10 05:30' => ${currY}121005:30:00 232 233'Decembrie10 05:30' => ${currY}121005:30:00 234 235'DeC intii 1965' => 1965120100:00:00 236 237# Tests Date Time 238# Date%Time 239# Date=dd%mmm 240 24110/Dec/1965 => 1965121000:00:00 242 24310/Decembrie/65 => 1965121000:00:00 244 24510-Dec-65 => 1965121000:00:00 246 247'10 Dec 65' => 1965121000:00:00 248 249'10/Decembrie/65 5:30:25' => 1965121005:30:25 250 251'10/Dec/65/5:30 pm' => 1965121017:30:00 252 253'10/Dec/65/5:30 pm GMT' => 1965121012:30:00 254 255'10/Dec/65 la 5:30:25' => 1965121005:30:25 256 257'10-Dec-1965 5:30:25' => 1965121005:30:25 258 259'10-Decembrie-65 5:30:25' => 1965121005:30:25 260 261'10-Dec-65-5:30 pm' => 1965121017:30:00 262 263'10-Dec-65 la 5:30:25' => 1965121005:30:25 264 265'10 Dec 65 5:30:25' => 1965121005:30:25 266 267'10 Dec 65 5:30 pm' => 1965121017:30:00 268 269'10Decembrie 65 la 5:30:25' => 1965121005:30:25 270 271'10 Dec 1965 la 5:30:25' => 1965121005:30:25 272 273'10Dec 1965 la 5:30:25' => 1965121005:30:25 274 275'10 Dec1965 la 5:30:25' => 1965121005:30:25 276 277'10Dec1965 la 5:30:25' => 1965121005:30:25 278 279'10-Dec-1965 05:61' => '' 280 281'10-Dec-1965 05:30:61' => '' 282 28310/Decembrie => ${currY}121000:00:00 284 285'10/Dec 05:30' => ${currY}121005:30:00 286 287'10/Dec la 05:30:25' => ${currY}121005:30:25 288 289'10-Dec la 05:30:25 GMT' => ${currY}121000:30:25 290 291'10-Dec 5:30' => ${currY}121005:30:00 292 293'10/Dec 05:30' => ${currY}121005:30:00 294 295'10Decembrie 05:30' => ${currY}121005:30:00 296 297'Intii DeC 65' => 1965120100:00:00 298 299# Tests time only formats 5:30 => ${todaydate}05:30:00 300 3015:30:02 => ${todaydate}05:30:02 302 30315:30:00 => ${todaydate}15:30:00 304 305# Tests TimeDate Time%Date '5:30 pm 12/10/65' => 1965121017:30:00 306 307'5:30 pm GMT 12/10/65' => 1965121012:30:00 308 3095:30:25/12/10/65 => 1965121005:30:25 310 311'5:30:25 12-10-1965' => 1965121005:30:25 312 313'5:30:25 12-10-65' => 1965121005:30:25 314 315'5:30 pm 12-10-65' => 1965121017:30:00 316 3175:30:25/12-10-65 => 1965121005:30:25 318 319'5:30:25 12 10 65' => 1965121005:30:25 320 321'5:30 pm 12 10 65' => 1965121017:30:00 322 323'5:30 pm GMT 12 10 65' => 1965121012:30:00 324 325'5:30:25 12 10 1965' => 1965121005:30:25 326 327'05:61 12-10-1965' => '' 328 329'05:30:61 12-10-1965' => '' 330 331'05:30 12/10' => ${currY}121005:30:00 332 33305:30/12/10 => ${currY}121005:30:00 334 335'05:30:25 12/10' => ${currY}121005:30:25 336 33705:30:25/12-10 => ${currY}121005:30:25 338 339'05:30:25 GMT 12/10' => ${currY}121000:30:25 340 341'5:30 12/10' => ${currY}121005:30:00 342 343'05:30 12/10' => ${currY}121005:30:00 344 345'5:30 12-10' => ${currY}121005:30:00 346 347'05:30 12-10' => ${currY}121005:30:00 348 349'05:30 12 10' => ${currY}121005:30:00 350 351# Tests TimeDate 352# Time%Date 353# Date=mmm%dd, dd%mmm 354 355'4:50 DeC 10' => ${currY}121004:50:00 356 357'4:50 DeCembrie 10' => ${currY}121004:50:00 358 359'4:50:40 DeC 10' => ${currY}121004:50:40 360 361'4:50:42 DeCembrie 10' => ${currY}121004:50:42 362 363'4:50 10 DeC' => ${currY}121004:50:00 364 365'4:50 10 DeCembrie' => ${currY}121004:50:00 366 367'4:50 10DeC' => ${currY}121004:50:00 368 369'4:50 10DeCembrie' => ${currY}121004:50:00 370 371'4:50:51 10 DeC' => ${currY}121004:50:51 372 373'4:50:52 10 DeCembrie' => ${currY}121004:50:52 374 375'4:50:53 10DeC' => ${currY}121004:50:53 376 377'4:50:54 10DeCembrie' => ${currY}121004:50:54 378 3794:50:54DeCembrie10 => ${currY}121004:50:54 380 3814:50:54DeCembrie10/65 => 1965121004:50:54 382 3834:50:54DeCembrie1965 => 1965120104:50:54 384 385'Sept 1995' => 1995090100:00:00 386 387'1995 septembrie' => 1995090100:00:00 388 389'5:30 DeC 1' => ${currY}120105:30:00 390 391'05:30 DeC 10' => ${currY}121005:30:00 392 393'05:30:11 DeC 10' => ${currY}121005:30:11 394 395'5:30 DeCembrie 1' => ${currY}120105:30:00 396 397'05:30 DeCembrie 10' => ${currY}121005:30:00 398 399'05:30:12 DeCembrie 10' => ${currY}121005:30:12 400 401# Test ctime formats 'DeCembrie 10 05:30:12 1996' => 1996121005:30:12 402 403'DeC10 05:30:12 96' => 1996121005:30:12 404 405# Test some tricky timezone conversions 406 407'Febr 28 1997 23:00-0900' => 1997030103:00:00 408 409'Febr 27 1997 23:00-0900' => 1997022803:00:00 410 411'Febr 01 1997 01:00-0100' => 1997013121:00:00 412 413'Febr 02 1997 01:00-0100' => 1997020121:00:00 414 415'Febr 02 1997 01:00+0100' => 1997020119:00:00 416 417'Febr 02 1997 01:00+01' => 1997020119:00:00 418 419'Febr 02 1997 01:00+01:00' => 1997020119:00:00 420 42119970202010000+0100 => 1997020119:00:00 422 423# More tests... 'ultima zi din octombrie 1997' => 1997103100:00:00 424 425'epoch 400000' => 1970010510:06:40 426 427'19980102030405 EST' => 1998010203:04:05 428 42919980102030405E => 1998010203:04:05 430 431'Luni, 19 ian 1998 08:11:34 +1030' => 1998011816:41:34 432 433'Marti, 26 Mai 1998 13:23:15 -0500 (EST)' => 1998052613:23:15 434 435Dec101965 => 1965121000:00:00 436 43710Dec1965 => 1965121000:00:00 438 439101965Dec => 1965121000:00:00 440 441"; 442 443$::ti->tests(func => \&ParseDate, 444 tests => $tests); 445$::ti->done_testing(); 446 447#Local Variables: 448#mode: cperl 449#indent-tabs-mode: nil 450#cperl-indent-level: 3 451#cperl-continued-statement-offset: 2 452#cperl-continued-brace-offset: 0 453#cperl-brace-offset: 0 454#cperl-brace-imaginary-offset: 0 455#cperl-label-offset: 0 456#End: 457