#!/usr/bin/perl -w # $Id: gen_tests,v 1.6 2006-08-19 03:32:18+10 sh1517 Exp sh1517 $ # $Log: gen_tests,v $ # Revision 1.6 2006-08-19 03:32:18+10 sh1517 # 1 Add some tests for the at style absolute times. # # Revision 1.5 2006-08-19 00:55:50+10 sh1517 # 1 Add tests for thisyear, lastyear, thisweek, lastweek, last_n_foo. # # Revision 1.4 2006-08-18 12:56:54+10 sh1517 # 1 Add tests for 'yesterday' and 'last31days'. # # Revision 1.3 2006-08-18 12:28:07+10 sh1517 # 1 Add some more tests ... # # Revision 1.2 2006-08-18 09:13:11+10 sh1517 # 1 Add tests for named month (MMM YYYY). # # Revision 1.1 2006-08-18 09:06:57+10 sh1517 # Initial revision # use strict ; use Time::Local ; my (@tests, $plan) ; print < 100. # [ 'last_n_days',123, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 31, 2, 106], [0, 0, 0, 1, 7, 106]) ], # [ 'last_n_days',230, '[0, 0, 0, 18, 7, 106]', valid_date_range([0, 0, 0, 31,11, 105], [0, 0, 0, 18, 7, 106]) ], [ 'last_n_hours', 1, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 2, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,22, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 3, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,21, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 4, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,20, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 5, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,19, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 6, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,18, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 7, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,17, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 8, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,16, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours', 9, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,15, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',10, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,14, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',11, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,13, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',12, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,12, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',23, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 1, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',24, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',25, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 30, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_hours',168, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 25, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last1hour','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last2hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,22, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last3hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,21, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last4hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,20, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last5hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,19, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last6hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,18, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last7hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,17, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last8hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,16, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__', 'last9hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,15, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last10hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,14, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last11hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,13, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last12hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,12, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last23hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 1, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last24hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last25hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 30, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last168hours','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 25, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_mins', 1, '[0, 0, 0, 1, 7, 106]', valid_date_range([0,59,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_mins',60, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ 'last_n_mins',24*60, '[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last1min','[0, 0, 0, 1, 7, 106]', valid_date_range([0,59,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last60mins','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0,23, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','last1440mins','[0, 0, 0, 1, 7, 106]', valid_date_range([0, 0, 0, 31, 6, 106], [0, 0, 0, 1, 7, 106]) ], [ '__DEFAULT__','Jan 2006','[localtime]', valid_date_range([0, 0, 0, 1, 0, 106], [59, 59, 23, 31, 0, 106]) ], [ '__DEFAULT__','Feb 2006','[localtime]', valid_date_range([0, 0, 0, 1, 1, 106], [59, 59, 23, 28, 1, 106]) ], [ '__DEFAULT__','Mar 2006','[localtime]', valid_date_range([0, 0, 0, 1, 2, 106], [59, 59, 23, 31, 2, 106]) ], [ '__DEFAULT__','Apr 2006','[localtime]', valid_date_range([0, 0, 0, 1, 3, 106], [59, 59, 23, 30, 3, 106]) ], [ '__DEFAULT__','May 2006','[localtime]', valid_date_range([0, 0, 0, 1, 4, 106], [59, 59, 23, 31, 4, 106]) ], [ '__DEFAULT__','Jun 2006','[localtime]', valid_date_range([0, 0, 0, 1, 5, 106], [59, 59, 23, 30, 5, 106]) ], [ '__DEFAULT__','Jul 2006','[localtime]', valid_date_range([0, 0, 0, 1, 6, 106], [59, 59, 23, 31, 6, 106]) ], [ '__DEFAULT__','Aug 2006','[localtime]', valid_date_range([0, 0, 0, 1, 7, 106], [59, 59, 23, 31, 7, 106]) ], [ '__DEFAULT__','Sep 2006','[localtime]', valid_date_range([0, 0, 0, 1, 8, 106], [59, 59, 23, 30, 8, 106]) ], [ '__DEFAULT__','Oct 2006','[localtime]', valid_date_range([0, 0, 0, 1, 9, 106], [59, 59, 23, 31, 9, 106]) ], [ '__DEFAULT__','Nov 2006','[localtime]', valid_date_range([0, 0, 0, 1,10, 106], [59, 59, 23, 30,10, 106]) ], [ '__DEFAULT__','Dec 2006','[localtime]', valid_date_range([0, 0, 0, 1,11, 106], [59, 59, 23, 31,11, 106]) ], [ '__DEFAULT__','Jan 2000','[localtime]', valid_date_range([0, 0, 0, 1, 0, 100], [59, 59, 23, 31, 0, 100]) ], [ '__DEFAULT__','Feb 2000','[localtime]', valid_date_range([0, 0, 0, 1, 1, 100], [59, 59, 23, 29, 1, 100]) ], [ '__DEFAULT__','Mar 2000','[localtime]', valid_date_range([0, 0, 0, 1, 2, 100], [59, 59, 23, 31, 2, 100]) ], [ '__DEFAULT__','Apr 2000','[localtime]', valid_date_range([0, 0, 0, 1, 3, 100], [59, 59, 23, 30, 3, 100]) ], [ '__DEFAULT__','May 2000','[localtime]', valid_date_range([0, 0, 0, 1, 4, 100], [59, 59, 23, 31, 4, 100]) ], [ '__DEFAULT__','Jun 2000','[localtime]', valid_date_range([0, 0, 0, 1, 5, 100], [59, 59, 23, 30, 5, 100]) ], [ '__DEFAULT__','Jul 2000','[localtime]', valid_date_range([0, 0, 0, 1, 6, 100], [59, 59, 23, 31, 6, 100]) ], [ '__DEFAULT__','Aug 2000','[localtime]', valid_date_range([0, 0, 0, 1, 7, 100], [59, 59, 23, 31, 7, 100]) ], [ '__DEFAULT__','Sep 2000','[localtime]', valid_date_range([0, 0, 0, 1, 8, 100], [59, 59, 23, 30, 8, 100]) ], [ '__DEFAULT__','Oct 2000','[localtime]', valid_date_range([0, 0, 0, 1, 9, 100], [59, 59, 23, 31, 9, 100]) ], [ '__DEFAULT__','Nov 2000','[localtime]', valid_date_range([0, 0, 0, 1,10, 100], [59, 59, 23, 30,10, 100]) ], [ '__DEFAULT__','Dec 2000','[localtime]', valid_date_range([0, 0, 0, 1,11, 100], [59, 59, 23, 31,11, 100]) ], [ '__DEFAULT__','Jan 2004','[localtime]', valid_date_range([0, 0, 0, 1, 0, 104], [59, 59, 23, 31, 0, 104]) ], [ '__DEFAULT__','Feb 2004','[localtime]', valid_date_range([0, 0, 0, 1, 1, 104], [59, 59, 23, 29, 1, 104]) ], [ '__DEFAULT__','Mar 2004','[localtime]', valid_date_range([0, 0, 0, 1, 2, 104], [59, 59, 23, 31, 2, 104]) ], [ '__DEFAULT__','Apr 2004','[localtime]', valid_date_range([0, 0, 0, 1, 3, 104], [59, 59, 23, 30, 3, 104]) ], [ '__DEFAULT__','May 2004','[localtime]', valid_date_range([0, 0, 0, 1, 4, 104], [59, 59, 23, 31, 4, 104]) ], [ '__DEFAULT__','Jun 2004','[localtime]', valid_date_range([0, 0, 0, 1, 5, 104], [59, 59, 23, 30, 5, 104]) ], [ '__DEFAULT__','Jul 2004','[localtime]', valid_date_range([0, 0, 0, 1, 6, 104], [59, 59, 23, 31, 6, 104]) ], [ '__DEFAULT__','Aug 2004','[localtime]', valid_date_range([0, 0, 0, 1, 7, 104], [59, 59, 23, 31, 7, 104]) ], [ '__DEFAULT__','Sep 2004','[localtime]', valid_date_range([0, 0, 0, 1, 8, 104], [59, 59, 23, 30, 8, 104]) ], [ '__DEFAULT__','Oct 2004','[localtime]', valid_date_range([0, 0, 0, 1, 9, 104], [59, 59, 23, 31, 9, 104]) ], [ '__DEFAULT__','Nov 2004','[localtime]', valid_date_range([0, 0, 0, 1,10, 104], [59, 59, 23, 30,10, 104]) ], [ '__DEFAULT__','Dec 2004','[localtime]', valid_date_range([0, 0, 0, 1,11, 104], [59, 59, 23, 31,11, 104]) ], # XXX # The 'time-stamp/at-format date' tags start _from_ the value of the selector tag (the time stamp or at-format date) and go # _to_ the struct tm value .... # (Yes. It is sort of like the more common usage where the selector tag says where to start wrt the end time). [ '__DEFAULT__','21:09', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 7, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','2109', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 7, 7, 106], [59, 59, 23, 7, 7, 106]) ], # XXX # Only the Nagios::Report constructor deals with time-stamp time periods by calling the __DEFAULT__ callback. # [ '"21:09"', '21:09', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 7, 7, 106], [59, 59, 23, 7, 7, 106]) ], # XXX # Easy to get confused between printed dates (1.8.06) and struct tm months (7 in this case). [ '__DEFAULT__','1.8.06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 0, 0, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','1.8.2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 0, 0, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','21:09 1.8.06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','2109 1.8.06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','21:09 1.8.2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','2109 1.8.2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], # I hope this makes someone happy apart from the author of 'at' and users of MS Excel. The common AU date format is dd/mm/yy. # The dates below are in August, not January. [ '__DEFAULT__','8/1/06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 0, 0, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','8/1/2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 0, 0, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','21:09 8/1/06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','2109 8/1/06', '[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','21:09 8/1/2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], [ '__DEFAULT__','2109 8/1/2006','[59,59,23, 7, 7, 106]', valid_date_range([0, 9,21, 1, 7, 106], [59, 59, 23, 7, 7, 106]) ], ) ; $plan = scalar @tests ; print < $plan } MORE_PREAMBLE for my $t (@tests) { print <[0]}->( '$t->[1]', $t->[2] )), "$t->[3]" ) ; END_TEST }