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 $o = $obj->new_delta();
15   my $err = $o->set(@test);
16   if ($err) {
17      return $o->err();
18   } else {
19      my @val = $o->value();
20      return @val;
21   }
22}
23
24my $tests="
25
26{ delta [ 0 0 0 0 1 20 30 ] }                                  => 0 0 0 0 1 20 30
27
28{ delta [ 0 0 0 0 1 20 30 ] nonorm 1 }                         => 0 0 0 0 1 20 30
29
30{ delta [ 0 0 0 0 1 20 30 ] mode business  type exact }        => 0 0 0 0 1 20 30
31
32{ delta [ 0 0 0 0 1 20 30 ] mode business  type semi }         => 0 0 0 0 1 20 30
33
34{ delta [ 0 0 0 0 1 20 30 ] mode business  type approx }       => 0 0 0 0 1 20 30
35
36{ delta [ 0 0 0 0 1 20 30 ] mode business  type estimated }    => 0 0 0 0 1 20 30
37
38{ delta [ 0 0 0 0 1 20 30 ] mode standard  type exact }        => 0 0 0 0 1 20 30
39
40{ delta [ 0 0 0 0 1 20 30 ] mode standard  type semi }         => 0 0 0 0 1 20 30
41
42{ delta [ 0 0 0 0 1 20 30 ] mode standard  type approx }       => 0 0 0 0 1 20 30
43
44{ delta [ 0 0 0 0 1 20 30 ] mode standard  type estimated }    => 0 0 0 0 1 20 30
45
46#
47
48{ delta [ 0 0 0 0 10 20 30 ] }                                 => 0 0 0 0 10 20 30
49
50{ delta [ 0 0 0 0 10 20 30 ] nonorm 1 }                        => 0 0 0 0 10 20 30
51
52{ delta [ 0 0 0 0 10 20 30 ] mode business  type exact }       => 0 0 0 1 1 20 30
53
54{ delta [ 0 0 0 0 10 20 30 ] mode business  type semi }        => 0 0 0 1 1 20 30
55
56{ delta [ 0 0 0 0 10 20 30 ] mode business  type approx }      => 0 0 0 1 1 20 30
57
58{ delta [ 0 0 0 0 10 20 30 ] mode business  type estimated }   => 0 0 0 1 1 20 30
59
60{ delta [ 0 0 0 0 10 20 30 ] mode standard  type exact }       => 0 0 0 0 10 20 30
61
62{ delta [ 0 0 0 0 10 20 30 ] mode standard  type semi }        => 0 0 0 0 10 20 30
63
64{ delta [ 0 0 0 0 10 20 30 ] mode standard  type approx }      => 0 0 0 0 10 20 30
65
66{ delta [ 0 0 0 0 10 20 30 ] mode standard  type estimated }   => 0 0 0 0 10 20 30
67
68#
69
70{ delta [ 0 0 0 0 75 20 30 ] }                                 => 0 0 0 0 75 20 30
71
72{ delta [ 0 0 0 0 75 20 30 ] nonorm 1 }                        => 0 0 0 0 75 20 30
73
74{ delta [ 0 0 0 0 75 20 30 ] mode business  type exact }       => 0 0 0 8 3 20 30
75
76{ delta [ 0 0 0 0 75 20 30 ] mode business  type semi }        => 0 0 1 3 3 20 30
77
78{ delta [ 0 0 0 0 75 20 30 ] mode business  type approx }      => 0 0 1 3 3 20 30
79
80{ delta [ 0 0 0 0 75 20 30 ] mode business  type estimated }   => 0 0 1 3 3 20 30
81
82{ delta [ 0 0 0 0 75 20 30 ] mode standard  type exact }       => 0 0 0 0 75 20 30
83
84{ delta [ 0 0 0 0 75 20 30 ] mode standard  type semi }        => 0 0 0 3 3 20 30
85
86{ delta [ 0 0 0 0 75 20 30 ] mode standard  type approx }      => 0 0 0 3 3 20 30
87
88{ delta [ 0 0 0 0 75 20 30 ] mode standard  type estimated }   => 0 0 0 3 3 20 30
89
90#
91
92{ delta [ 0 0 0 4 1 20 30 ] }                                  => 0 0 0 4 1 20 30
93
94{ delta [ 0 0 0 4 1 20 30 ] nonorm 1 }                         => 0 0 0 4 1 20 30
95
96{ delta [ 0 0 0 4 1 20 30 ] mode business  type exact }        => 0 0 0 4 1 20 30
97
98{ delta [ 0 0 0 4 1 20 30 ] mode business  type semi }         => 0 0 0 4 1 20 30
99
100{ delta [ 0 0 0 4 1 20 30 ] mode business  type approx }       => 0 0 0 4 1 20 30
101
102{ delta [ 0 0 0 4 1 20 30 ] mode business  type estimated }    => 0 0 0 4 1 20 30
103
104{ delta [ 0 0 0 4 1 20 30 ] mode standard  type exact }
105   =>
106   '[set] Type must be semi/approx/estimated'
107
108{ delta [ 0 0 0 4 1 20 30 ] mode standard  type semi }         => 0 0 0 4 1 20 30
109
110{ delta [ 0 0 0 4 1 20 30 ] mode standard  type approx }       => 0 0 0 4 1 20 30
111
112{ delta [ 0 0 0 4 1 20 30 ] mode standard  type estimated }    => 0 0 0 4 1 20 30
113
114#
115
116{ delta [ 0 0 0 4 10 20 30 ] }                                 => 0 0 0 4 10 20 30
117
118{ delta [ 0 0 0 4 10 20 30 ] nonorm 1 }                        => 0 0 0 4 10 20 30
119
120{ delta [ 0 0 0 4 10 20 30 ] mode business  type exact }       => 0 0 0 5 1 20 30
121
122{ delta [ 0 0 0 4 10 20 30 ] mode business  type semi }        => 0 0 1 0 1 20 30
123
124{ delta [ 0 0 0 4 10 20 30 ] mode business  type approx }      => 0 0 1 0 1 20 30
125
126{ delta [ 0 0 0 4 10 20 30 ] mode business  type estimated }   => 0 0 1 0 1 20 30
127
128{ delta [ 0 0 0 4 10 20 30 ] mode standard  type exact }
129   =>
130   '[set] Type must be semi/approx/estimated'
131
132{ delta [ 0 0 0 4 10 20 30 ] mode standard  type semi }        => 0 0 0 4 10 20 30
133
134{ delta [ 0 0 0 4 10 20 30 ] mode standard  type approx }      => 0 0 0 4 10 20 30
135
136{ delta [ 0 0 0 4 10 20 30 ] mode standard  type estimated }   => 0 0 0 4 10 20 30
137
138#
139
140{ delta [ 0 0 2 4 10 20 30 ] }                                 => 0 0 2 4 10 20 30
141
142{ delta [ 0 0 2 4 10 20 30 ] nonorm 1 }                        => 0 0 2 4 10 20 30
143
144{ delta [ 0 0 2 4 10 20 30 ] mode business  type exact }
145   =>
146   '[set] Type must be semi/approx/estimated'
147
148{ delta [ 0 0 2 4 10 20 30 ] mode business  type semi }        => 0 0 3 0 1 20 30
149
150{ delta [ 0 0 2 4 10 20 30 ] mode business  type approx }      => 0 0 3 0 1 20 30
151
152{ delta [ 0 0 2 4 10 20 30 ] mode business  type estimated }   => 0 0 3 0 1 20 30
153
154{ delta [ 0 0 2 4 10 20 30 ] mode standard  type exact }
155   =>
156   '[set] Type must be semi/approx/estimated'
157
158{ delta [ 0 0 2 4 10 20 30 ] mode standard  type semi }        => 0 0 2 4 10 20 30
159
160{ delta [ 0 0 2 4 10 20 30 ] mode standard  type approx }      => 0 0 2 4 10 20 30
161
162{ delta [ 0 0 2 4 10 20 30 ] mode standard  type estimated }   => 0 0 2 4 10 20 30
163
164#
165
166{ delta [ 0 14 2 4 10 20 30 ] }                                => 1 2 2 4 10 20 30
167
168{ delta [ 0 14 2 4 10 20 30 ] nonorm 1 }                       => 0 14 2 4 10 20 30
169
170{ delta [ 0 14 2 4 10 20 30 ] mode business  type exact }
171   =>
172   '[set] Type must be approx/estimated'
173
174{ delta [ 0 14 2 4 10 20 30 ] mode business  type semi }
175   =>
176   '[set] Type must be approx/estimated'
177
178{ delta [ 0 14 2 4 10 20 30 ] mode business  type approx }     => 1 2 3 0 1 20 30
179
180{ delta [ 0 14 2 4 10 20 30 ] mode business  type estimated }  => 1 2 3 0 1 20 30
181
182{ delta [ 0 14 2 4 10 20 30 ] mode standard  type exact }
183   =>
184   '[set] Type must be approx/estimated'
185
186{ delta [ 0 14 2 4 10 20 30 ] mode standard  type semi }
187   =>
188   '[set] Type must be approx/estimated'
189
190{ delta [ 0 14 2 4 10 20 30 ] mode standard  type approx }     => 1 2 2 4 10 20 30
191
192{ delta [ 0 14 2 4 10 20 30 ] mode standard  type estimated }  => 1 2 2 4 10 20 30
193
194";
195
196$::ti->tests(func  => \&test,
197             tests => $tests);
198$::ti->done_testing();
199
200#Local Variables:
201#mode: cperl
202#indent-tabs-mode: nil
203#cperl-indent-level: 3
204#cperl-continued-statement-offset: 2
205#cperl-continued-brace-offset: 0
206#cperl-brace-offset: 0
207#cperl-brace-imaginary-offset: 0
208#cperl-label-offset: 0
209#End:
210