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