1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433
|
# test new xtic code
use Chart::Strip;
use strict;
my $MK = 0;
my $H = 3600;
my $D = $H * 24;
my @t;
eval {
# tests assume US/eastern, en_us. skip if we can't make compat.
require POSIX;
POSIX->import();
$ENV{TZ} = 'EST5EDT';
setlocale( LC_ALL(), "C" );
tzset();
if( localtime(1151726400) ne 'Sat Jul 1 00:00:00 2006' ){
die "tests not configured for this timezone/locale\n";
}
};
if($@){
print "1..0 # Skipped: cannot make timezone/locale compatible\n";
exit;
}
if( localtime(1175400000) ne 'Sun Apr 1 00:00:00 2007' ){
# the US govmit changed the daylight saving time rules.
# most OSes don't know that
# expect the fallout from this to be much worse than y2k.
print "1..0 # Skipped: OS has out of date daylight saving time rules\n";
exit;
}
# return xtic data for specified time range
sub gen {
my $t0 = shift;
my $dur = shift;
my $c = Chart::Strip->new();
$c->add_data( [ {time => $t0, value => 1},
{time => $t0 + $dur, value => 1}],
{ style => 'line' });
$c->plot();
$c->{grid}{x};
}
sub test {
my $t = shift;
my $mk = shift;
if( !ref $t ){
print "$t\n" if $mk;
return 'ok';
}
my $t0 = $t->{start};
my $dur = $t->{dur};
my $exp = $t->{exp};
$dur = $1 * $D if $dur =~ /(\d+)D/;
$dur = $1 * $H if $dur =~ /(\d+)H/;
my $res = gen( $t0, $dur );
my $err;
$err = 1 if @$res != @$exp;
if( $mk ){
my $pv;
for my $r (@$res){
my $dt = $pv ? $r->[0] - $pv : '';
print "$t->{dur}\t$t0\t$r->[0]\t$r->[1]\t$r->[2]\t$dt\n";
$pv = $r->[0];
}
print "\n";
}
for my $e (@$exp){
my $terr;
my $r = shift @$res;
$terr = 1 unless $e->[0] == $r->[0];
$terr = 1 unless $e->[1] == $r->[1];
$terr = 1 unless $e->[2] eq $r->[2];
$err ||= $terr;
print STDERR "error: @$e != @$r\n"
if $terr;
}
$err ? 'not ok' : 'ok';
}
my $pd = '';
while(<DATA>){
chop;
my @l = split;
my $dur = $l[0];
my $t0 = $l[1];
my $exp = [@l[2,3,4,5]];
if( /^\#/ ){
# preserve comments
push @t, $_;
next;
}
next unless $dur;
if($dur eq $pd){
push @{$t[-1]{exp}}, $exp;
}else{
push @t, { dur => $dur, start => $t0, exp => [$exp] };
}
$pd = $dur;
}
print "1..", scalar @t, "\n" unless $MK;
my $n = 1;
foreach my $t (@t){
my $r = test($t, $MK);
print "$r ", $n++, "\n" unless $MK;
}
# duration start expected result: tic-time, redmark, label, delta(not-used)
__END__
2100D 1151726400 1167627600 0 2007
2100D 1151726400 1199163600 0 2008 31536000
2100D 1151726400 1230786000 0 2009 31622400
2100D 1151726400 1262322000 0 2010 31536000
2100D 1151726400 1293858000 0 2011 31536000
2100D 1151726400 1325394000 0 2012 31536000
1500D 1151726400 1151726400 0 01/Jul
1500D 1151726400 1167627600 0 2007 15901200
1500D 1151726400 1183262400 0 01/Jul 15634800
1500D 1151726400 1199163600 0 2008 15901200
1500D 1151726400 1214884800 0 01/Jul 15721200
1500D 1151726400 1230786000 0 2009 15901200
1500D 1151726400 1246420800 0 01/Jul 15634800
1500D 1151726400 1262322000 0 2010 15901200
1500D 1151726400 1277956800 0 01/Jul 15634800
750D 1151726400 1151726400 0 01/Jul
750D 1151726400 1159675200 0 01/Oct 7948800
750D 1151726400 1167627600 1 2007 7952400
750D 1151726400 1175400000 0 01/Apr 7776000
750D 1151726400 1183262400 0 01/Jul 7858800
750D 1151726400 1191211200 0 01/Oct 7948800
750D 1151726400 1199163600 1 2008 7952400
750D 1151726400 1207022400 0 01/Apr 7862400
750D 1151726400 1214884800 0 01/Jul 7858800
400D 1151726400 1151726400 0 01/Jul
400D 1151726400 1157083200 0 01/Sep 5356800
400D 1151726400 1162357200 0 01/Nov 5274000
400D 1151726400 1167627600 1 2007 5270400
400D 1151726400 1172725200 0 01/Mar 5097600
400D 1151726400 1177992000 0 01/May 5266800
400D 1151726400 1183262400 0 01/Jul 5270400
200D 1151726400 1151726400 0 01/Jul
200D 1151726400 1154404800 0 01/Aug 2678400
200D 1151726400 1157083200 0 01/Sep 2678400
200D 1151726400 1159675200 0 01/Oct 2592000
200D 1151726400 1162357200 0 01/Nov 2682000
200D 1151726400 1164949200 0 01/Dec 2592000
200D 1151726400 1167627600 1 2007 2678400
100D 1151726400 1151726400 0 01/Jul
100D 1151726400 1152936000 0 15/Jul 1209600
100D 1151726400 1154404800 0 01/Aug 1468800
100D 1151726400 1155614400 0 15/Aug 1209600
100D 1151726400 1157083200 0 01/Sep 1468800
100D 1151726400 1158292800 0 15/Sep 1209600
100D 1151726400 1159675200 0 01/Oct 1382400
50D 1151726400 1151726400 1 01/Jul
50D 1151726400 1152331200 0 08/Jul 604800
50D 1151726400 1152936000 0 15/Jul 604800
50D 1151726400 1153540800 0 22/Jul 604800
50D 1151726400 1154404800 1 01/Aug 864000
50D 1151726400 1155009600 0 08/Aug 604800
50D 1151726400 1155614400 0 15/Aug 604800
20D 1151726400 1151726400 1 01/Jul
20D 1151726400 1151899200 0 03/Jul 172800
20D 1151726400 1152072000 0 05/Jul 172800
20D 1151726400 1152244800 0 07/Jul 172800
20D 1151726400 1152417600 0 09/Jul 172800
20D 1151726400 1152590400 0 11/Jul 172800
20D 1151726400 1152763200 0 13/Jul 172800
20D 1151726400 1152936000 0 15/Jul 172800
20D 1151726400 1153108800 0 17/Jul 172800
20D 1151726400 1153281600 0 19/Jul 172800
12D 1151726400 1151726400 0 Sat
12D 1151726400 1151812800 1 02/Jul 86400
12D 1151726400 1151899200 0 Mon 86400
12D 1151726400 1151985600 0 Tue 86400
12D 1151726400 1152072000 0 Wed 86400
12D 1151726400 1152158400 0 Thu 86400
12D 1151726400 1152244800 0 Fri 86400
12D 1151726400 1152331200 0 Sat 86400
12D 1151726400 1152417600 1 09/Jul 86400
12D 1151726400 1152504000 0 Mon 86400
12D 1151726400 1152590400 0 Tue 86400
12D 1151726400 1152676800 0 Wed 86400
6D 1151726400 1151726400 0 Sat
6D 1151726400 1151812800 1 02/Jul 86400
6D 1151726400 1151899200 0 Mon 86400
6D 1151726400 1151985600 0 Tue 86400
6D 1151726400 1152072000 0 Wed 86400
6D 1151726400 1152158400 0 Thu 86400
3D 1151726400 1151726400 1 01/Jul
3D 1151726400 1151748000 0 6:00 21600
3D 1151726400 1151769600 0 12:00 21600
3D 1151726400 1151791200 0 18:00 21600
3D 1151726400 1151812800 1 02/Jul 21600
3D 1151726400 1151834400 0 6:00 21600
3D 1151726400 1151856000 0 12:00 21600
3D 1151726400 1151877600 0 18:00 21600
3D 1151726400 1151899200 1 03/Jul 21600
3D 1151726400 1151920800 0 6:00 21600
3D 1151726400 1151942400 0 12:00 21600
3D 1151726400 1151964000 0 18:00 21600
2D 1151726400 1151726400 1 01/Jul
2D 1151726400 1151740800 0 4:00 14400
2D 1151726400 1151755200 0 8:00 14400
2D 1151726400 1151769600 0 12:00 14400
2D 1151726400 1151784000 0 16:00 14400
2D 1151726400 1151798400 0 20:00 14400
2D 1151726400 1151812800 1 02/Jul 14400
2D 1151726400 1151827200 0 4:00 14400
2D 1151726400 1151841600 0 8:00 14400
2D 1151726400 1151856000 0 12:00 14400
2D 1151726400 1151870400 0 16:00 14400
2D 1151726400 1151884800 0 20:00 14400
18H 1151726400 1151726400 1 01/Jul
18H 1151726400 1151733600 0 2:00 7200
18H 1151726400 1151740800 0 4:00 7200
18H 1151726400 1151748000 0 6:00 7200
18H 1151726400 1151755200 0 8:00 7200
18H 1151726400 1151762400 0 10:00 7200
18H 1151726400 1151769600 0 12:00 7200
18H 1151726400 1151776800 0 14:00 7200
18H 1151726400 1151784000 0 16:00 7200
9H 1151726400 1151726400 1 01/Jul
9H 1151726400 1151730000 0 1:00 3600
9H 1151726400 1151733600 0 2:00 3600
9H 1151726400 1151737200 0 3:00 3600
9H 1151726400 1151740800 0 4:00 3600
9H 1151726400 1151744400 0 5:00 3600
9H 1151726400 1151748000 0 6:00 3600
9H 1151726400 1151751600 0 7:00 3600
9H 1151726400 1151755200 0 8:00 3600
# check near leap year (near 1Mar2004)
6H 1078106400 1078106400 0 21:00
6H 1078106400 1078110000 0 22:00 3600
6H 1078106400 1078113600 0 23:00 3600
6H 1078106400 1078117200 1 01/Mar 3600
6H 1078106400 1078120800 0 1:00 3600
6H 1078106400 1078124400 0 2:00 3600
22H 1078074000 1078074000 0 12:00
22H 1078074000 1078081200 0 14:00 7200
22H 1078074000 1078088400 0 16:00 7200
22H 1078074000 1078095600 0 18:00 7200
22H 1078074000 1078102800 0 20:00 7200
22H 1078074000 1078110000 0 22:00 7200
22H 1078074000 1078117200 1 01/Mar 7200
22H 1078074000 1078124400 0 2:00 7200
22H 1078074000 1078131600 0 4:00 7200
22H 1078074000 1078138800 0 6:00 7200
22H 1078074000 1078146000 0 8:00 7200
14D 1077512400 1077512400 0 Mon
14D 1077512400 1077598800 0 Tue 86400
14D 1077512400 1077685200 0 Wed 86400
14D 1077512400 1077771600 0 Thu 86400
14D 1077512400 1077858000 0 Fri 86400
14D 1077512400 1077944400 0 Sat 86400
14D 1077512400 1078030800 1 29/Feb 86400
14D 1077512400 1078117200 0 Mon 86400
14D 1077512400 1078203600 0 Tue 86400
14D 1077512400 1078290000 0 Wed 86400
14D 1077512400 1078376400 0 Thu 86400
14D 1077512400 1078462800 0 Fri 86400
14D 1077512400 1078549200 0 Sat 86400
14D 1077512400 1078635600 1 07/Mar 86400
20D 1077512400 1077512400 0 23/Feb
20D 1077512400 1077685200 0 25/Feb 172800
20D 1077512400 1077858000 0 27/Feb 172800
20D 1077512400 1078030800 0 29/Feb 172800
20D 1077512400 1078117200 1 01/Mar 86400
20D 1077512400 1078290000 0 03/Mar 172800
20D 1077512400 1078462800 0 05/Mar 172800
20D 1077512400 1078635600 0 07/Mar 172800
20D 1077512400 1078808400 0 09/Mar 172800
20D 1077512400 1078981200 0 11/Mar 172800
20D 1077512400 1079154000 0 13/Mar 172800
# and near non-leap year (near 1Mar2005)
6H 1109642400 1109642400 0 21:00
6H 1109642400 1109646000 0 22:00 3600
6H 1109642400 1109649600 0 23:00 3600
6H 1109642400 1109653200 1 01/Mar 3600
6H 1109642400 1109656800 0 1:00 3600
6H 1109642400 1109660400 0 2:00 3600
22H 1109610000 1109610000 0 12:00
22H 1109610000 1109617200 0 14:00 7200
22H 1109610000 1109624400 0 16:00 7200
22H 1109610000 1109631600 0 18:00 7200
22H 1109610000 1109638800 0 20:00 7200
22H 1109610000 1109646000 0 22:00 7200
22H 1109610000 1109653200 1 01/Mar 7200
22H 1109610000 1109660400 0 2:00 7200
22H 1109610000 1109667600 0 4:00 7200
22H 1109610000 1109674800 0 6:00 7200
22H 1109610000 1109682000 0 8:00 7200
14D 1109048400 1109048400 0 Tue
14D 1109048400 1109134800 0 Wed 86400
14D 1109048400 1109221200 0 Thu 86400
14D 1109048400 1109307600 0 Fri 86400
14D 1109048400 1109394000 0 Sat 86400
14D 1109048400 1109480400 1 27/Feb 86400
14D 1109048400 1109566800 0 Mon 86400
14D 1109048400 1109653200 0 Tue 86400
14D 1109048400 1109739600 0 Wed 86400
14D 1109048400 1109826000 0 Thu 86400
14D 1109048400 1109912400 0 Fri 86400
14D 1109048400 1109998800 0 Sat 86400
14D 1109048400 1110085200 1 06/Mar 86400
14D 1109048400 1110171600 0 Mon 86400
20D 1109048400 1109134800 0 23/Feb
20D 1109048400 1109307600 0 25/Feb 172800
20D 1109048400 1109480400 0 27/Feb 172800
20D 1109048400 1109653200 1 01/Mar 172800
20D 1109048400 1109826000 0 03/Mar 172800
20D 1109048400 1109998800 0 05/Mar 172800
20D 1109048400 1110171600 0 07/Mar 172800
20D 1109048400 1110344400 0 09/Mar 172800
20D 1109048400 1110517200 0 11/Mar 172800
20D 1109048400 1110690000 0 13/Mar 172800
# check near time change (2Apr)
4H 1143954000 1143954000 1 02/Apr
4H 1143954000 1143955800 0 0:30 1800
4H 1143954000 1143957600 0 1:00 1800
4H 1143954000 1143959400 0 1:30 1800
4H 1143954000 1143961200 0 3:00 1800
4H 1143954000 1143963000 0 3:30 1800
4H 1143954000 1143964800 0 4:00 1800
4H 1143954000 1143966600 0 4:30 1800
8H 1143954000 1143954000 1 02/Apr
8H 1143954000 1143957600 0 1:00 3600
8H 1143954000 1143961200 0 3:00 3600
8H 1143954000 1143964800 0 4:00 3600
8H 1143954000 1143968400 0 5:00 3600
8H 1143954000 1143972000 0 6:00 3600
8H 1143954000 1143975600 0 7:00 3600
8H 1143954000 1143979200 0 8:00 3600
2D 1143954000 1143954000 1 02/Apr
2D 1143954000 1143964800 0 4:00 10800
2D 1143954000 1143979200 0 8:00 14400
2D 1143954000 1143993600 0 12:00 14400
2D 1143954000 1144008000 0 16:00 14400
2D 1143954000 1144022400 0 20:00 14400
2D 1143954000 1144036800 1 03/Apr 14400
2D 1143954000 1144051200 0 4:00 14400
2D 1143954000 1144065600 0 8:00 14400
2D 1143954000 1144080000 0 12:00 14400
2D 1143954000 1144094400 0 16:00 14400
2D 1143954000 1144108800 0 20:00 14400
2D 1143954000 1144123200 1 04/Apr 14400
4D 1143954000 1143954000 1 02/Apr
4D 1143954000 1144036800 0 Mon 82800
4D 1143954000 1144123200 0 Tue 86400
4D 1143954000 1144209600 0 Wed 86400
4D 1143954000 1144296000 0 Thu 86400
# check near time change (29Oct)
4H 1162094400 1162094400 1 29/Oct
4H 1162094400 1162096200 0 0:30 1800
4H 1162094400 1162098000 0 1:00 1800
4H 1162094400 1162099800 0 1:30 1800
4H 1162094400 1162101600 0 1:00 1800
4H 1162094400 1162103400 0 1:30 1800
4H 1162094400 1162105200 0 2:00 1800
4H 1162094400 1162107000 0 2:30 1800
8H 1162094400 1162094400 1 29/Oct
8H 1162094400 1162098000 0 1:00 3600
8H 1162094400 1162101600 0 1:00 3600
8H 1162094400 1162105200 0 2:00 3600
8H 1162094400 1162108800 0 3:00 3600
8H 1162094400 1162112400 0 4:00 3600
8H 1162094400 1162116000 0 5:00 3600
8H 1162094400 1162119600 0 6:00 3600
2D 1162094400 1162094400 1 29/Oct
2D 1162094400 1162112400 0 4:00 18000
2D 1162094400 1162126800 0 8:00 14400
2D 1162094400 1162141200 0 12:00 14400
2D 1162094400 1162155600 0 16:00 14400
2D 1162094400 1162170000 0 20:00 14400
2D 1162094400 1162184400 1 30/Oct 14400
2D 1162094400 1162198800 0 4:00 14400
2D 1162094400 1162213200 0 8:00 14400
2D 1162094400 1162227600 0 12:00 14400
2D 1162094400 1162242000 0 16:00 14400
2D 1162094400 1162256400 0 20:00 14400
4D 1162094400 1162094400 1 29/Oct
4D 1162094400 1162184400 0 Mon 90000
4D 1162094400 1162270800 0 Tue 86400
4D 1162094400 1162357200 0 Wed 86400
|