1#!/usr/bin/perl 2 3use warnings; 4use strict; 5use Test::Inter; 6$::ti = new Test::Inter $0; 7require "tests.pl"; 8 9my $obj = new Date::Manip::Delta; 10$obj->config("forcedate","now,America/New_York"); 11 12sub test { 13 my(@test)=@_; 14 my $err = $obj->parse(@test); 15 if ($err) { 16 $err = $obj->err(); 17 return ($err); 18 } else { 19 my @val = $obj->value(); 20 return (@val,($$obj{"data"}{"mode"} eq 'business' ? 1 : 0)); 21 } 22} 23 24my $tests=" 25 26# Colon format 27 281:2:3:4:5:6:7 => 1 2 3 4 5 6 7 0 29 30'in 1:2:3:4:5:6:7' => '[parse] Invalid delta string' 31 32-1:2:3:4:5:6:7 => -1 -2 -3 -4 -5 -6 -7 0 33 34'-1:2:3:4:5:6:7 exactly' => -1 -2 -3 -4 -5 -6 -7 0 35 36'-1:2:3:4:5:6:7 business' => -1 -2 -3 -4 -5 -6 -7 1 37 38-1::3:4:5:6:7 => -1 0 -3 -4 -5 -6 -7 0 39 40# Test normalization of deltas 41 42+1:+1:+1:+1 => 0 0 0 1 1 1 1 0 43 44+1:+1:+1:-1 => 0 0 0 1 1 0 59 0 45 46+1:+1:-1:+1 => 0 0 0 1 0 59 1 0 47 48+1:-1:+1:+1 => 0 0 0 0 23 1 1 0 49 50+1:+1:-1:-1 => 0 0 0 1 0 58 59 0 51 52+1:-1:+1:-1 => 0 0 0 0 23 0 59 0 53 54+1:-1:-1:+1 => 0 0 0 0 22 59 1 0 55 56-0:1:+0:0:0:0:0 => 0 -1 0 0 0 0 0 0 57 58-0:0:1:+0:-0:0:0 => 0 0 -1 0 0 0 0 0 59 60+35:-10:0:0:0:15:0 => 34 2 0 0 0 -15 0 0 61 62# Expanded format 63 64'+ business 4 week 3 day' => 0 0 4 3 0 0 0 1 65 66'+ 15mn' => 0 0 0 0 0 15 0 0 67 68'+ 15 mn' => 0 0 0 0 0 15 0 0 69 70'15 mn' => 0 0 0 0 0 15 0 0 71 72'+15 mn' => 0 0 0 0 0 15 0 0 73 74+15mn => 0 0 0 0 0 15 0 0 75 76'+ 35 y 10 month, 15mn' => 35 10 0 0 0 15 0 0 77 78'+ 35 y 10m 15mn' => 35 10 0 0 0 15 0 0 79 80'+ 35 y, -10 month 15mn' => 34 2 0 0 0 -15 0 0 81 82'+35x 10 month' => '[parse] Invalid delta string' 83 84'two weeks ago' => 0 0 -2 0 0 0 0 0 85 86"; 87 88$::ti->tests(func => \&test, 89 tests => $tests); 90$::ti->done_testing(); 91 92#Local Variables: 93#mode: cperl 94#indent-tabs-mode: nil 95#cperl-indent-level: 3 96#cperl-continued-statement-offset: 2 97#cperl-continued-brace-offset: 0 98#cperl-brace-offset: 0 99#cperl-brace-imaginary-offset: 0 100#cperl-label-offset: 0 101#End: 102