# # Checking negative dates. What matters is only that you can convert *to* # a negative revolutionary date and then *from* the same date and get # the same result. # That is, we do not check the dates are correct, we check the conversions are consistent. # use DateTime::Calendar::FrenchRevolutionary; use DateTime; sub check { my ($n, $y, $m, $d, $H, $M, $S) = @_; my $date_g1 = DateTime->new(year => $y, month => $m, day => $d , hour => $H, minute => $M, second => $S); my $date_rev = DateTime::Calendar::FrenchRevolutionary->from_object(object => $date_g1); my $date_g2 = DateTime->from_object(object => $date_rev); if ($date_g1 eq $date_g2) { print "ok $n\n" } else { print "not ok $n : expected $date_g1, got $date_g2\n" } } @tests = ([1789, 7, 14, 16, 15, 0] # Storming of the Bastille , [1515, 9, 13, 8, 30, 0] # Battle of Marignan , [1792, 9, 21, 8, 30, 0] # 1 day before the DT-C-FR epoch , [1792, 9, 22, 8, 30, 0] # the DT-C-FR epoch ); printf "1..%d\n", scalar @tests; my $n = 1; foreach (@tests) { check $n++, @$_ }