3 use PHPUnit\Framework\TestCase;
9 $bankingLibrary=
"/var/www/html/banking/library";
10 require_once(
"$bankingLibrary/hcuTransferScheduled.i");
13 function test_FirstDayOfMonth() {
14 $frequency =
"FirstDayOfMonth";
15 $frequencyTrigger = TxNextInterval(
"09/07/2016", $frequency, 0);
16 $this->assertEquals($frequencyTrigger,
"10/01/2016");
18 $frequencyTrigger = TxNextInterval(
"09/07/2016", $frequency, 3);
19 $this->assertEquals($frequencyTrigger,
"01/01/2017");
21 $frequencyTrigger = TxNextInterval(
"09/07/2016", $frequency, 13);
22 $this->assertEquals($frequencyTrigger,
"11/01/2017");
24 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 0);
25 $this->assertEquals($frequencyTrigger,
"03/01/2016");
27 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 4);
28 $this->assertEquals($frequencyTrigger,
"07/01/2016");
30 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 8);
31 $this->assertEquals($frequencyTrigger,
"11/01/2016");
33 $frequencyTrigger = TxNextInterval(
"02/01/2018", $frequency, 23);
34 $this->assertEquals($frequencyTrigger,
"01/01/2020");
36 $frequencyTrigger = TxNextInterval(
"11/01/2019", $frequency, 1);
37 $this->assertEquals($frequencyTrigger,
"12/01/2019");
40 function test_LastDayOfMonth() {
41 $frequency =
"LastDayOfMonth";
42 $frequencyTrigger = TxNextInterval(
"09/07/2016", $frequency, 2);
43 $this->assertEquals($frequencyTrigger,
"11/30/2016");
45 $frequencyTrigger = TxNextInterval(
"2/23/2016", $frequency, 0);
46 $this->assertEquals($frequencyTrigger,
"02/29/2016");
47 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
49 $frequencyTrigger = TxNextInterval(
"2/23/2017", $frequency, 0);
50 $this->assertEquals($frequencyTrigger,
"02/28/2017");
51 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
53 $frequencyTrigger = TxNextInterval(
"1/23/2016", $frequency, 1);
54 $this->assertEquals($frequencyTrigger,
"02/29/2016");
55 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
57 $frequencyTrigger = TxNextInterval(
"11/23/2016", $frequency, 3);
58 $this->assertEquals($frequencyTrigger,
"02/28/2017");
59 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
61 $frequencyTrigger = TxNextInterval(
"2/23/2016", $frequency, 12);
62 $this->assertEquals($frequencyTrigger,
"02/28/2017");
65 function test_FirstFifteenth() {
66 $frequency =
"FirstFifteenth";
67 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 0);
68 $this->assertEquals($frequencyTrigger,
"01/01/2017");
70 $frequencyTrigger = TxNextInterval(
"02/06/2017", $frequency, 0);
71 $this->assertEquals($frequencyTrigger,
"02/15/2017");
73 $frequencyTrigger = TxNextInterval(
"03/16/2017", $frequency, 0);
74 $this->assertEquals($frequencyTrigger,
"04/01/2017");
76 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 3);
77 $this->assertEquals($frequencyTrigger,
"02/15/2017");
79 $frequencyTrigger = TxNextInterval(
"02/06/2017", $frequency, 10);
80 $this->assertEquals($frequencyTrigger,
"07/15/2017");
82 $frequencyTrigger = TxNextInterval(
"11/18/2017", $frequency, 7);
83 $this->assertEquals($frequencyTrigger,
"03/15/2018");
86 function test_FifteenthLast() {
87 $frequency =
"FifteenthLast";
88 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 0);
89 $this->assertEquals($frequencyTrigger,
"01/15/2017");
91 $frequencyTrigger = TxNextInterval(
"02/16/2017", $frequency, 0);
92 $this->assertEquals($frequencyTrigger,
"02/28/2017");
94 $frequencyTrigger = TxNextInterval(
"02/16/2016", $frequency, 0);
95 $this->assertEquals($frequencyTrigger,
"02/29/2016");
96 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
98 $frequencyTrigger = TxNextInterval(
"02/23/2016", $frequency, 24);
99 $this->assertEquals($frequencyTrigger,
"02/28/2017");
100 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
102 $frequencyTrigger = TxNextInterval(
"02/06/2017", $frequency, 10);
103 $this->assertEquals($frequencyTrigger,
"07/15/2017");
105 $frequencyTrigger = TxNextInterval(
"11/18/2017", $frequency, 7);
106 $this->assertEquals($frequencyTrigger,
"03/15/2018");
109 function test_Weekly() {
110 $frequency =
"Weekly";
111 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 0);
112 $this->assertEquals($frequencyTrigger,
"01/01/2017");
114 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 1);
115 $this->assertEquals($frequencyTrigger,
"01/08/2017");
117 $frequencyTrigger = TxNextInterval(
"04/29/2016", $frequency, 3);
118 $this->assertEquals($frequencyTrigger,
"05/20/2016");
120 $frequencyTrigger = TxNextInterval(
"12/21/2015", $frequency, 10);
121 $this->assertEquals($frequencyTrigger,
"02/29/2016");
122 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
124 $frequencyTrigger = TxNextInterval(
"11/05/2016", $frequency, 5);
125 $this->assertEquals($frequencyTrigger,
"12/10/2016");
128 function test_BiWeekly() {
129 $frequency =
"BiWeekly";
130 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 0);
131 $this->assertEquals($frequencyTrigger,
"01/01/2017");
133 $frequencyTrigger = TxNextInterval(
"01/01/2017", $frequency, 1);
134 $this->assertEquals($frequencyTrigger,
"01/15/2017");
136 $frequencyTrigger = TxNextInterval(
"04/29/2016", $frequency, 3);
137 $this->assertEquals($frequencyTrigger,
"06/10/2016");
139 $frequencyTrigger = TxNextInterval(
"12/21/2015", $frequency, 5);
140 $this->assertEquals($frequencyTrigger,
"02/29/2016");
141 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
143 $frequencyTrigger = TxNextInterval(
"11/05/2016", $frequency, 8);
144 $this->assertEquals($frequencyTrigger,
"02/25/2017");
147 function test_WeekDayOfMonth() {
148 $frequency =
"WeekDayOfMonth";
149 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
150 $this->assertEquals($frequencyTrigger,
"01/01/2016");
152 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 1);
153 $this->assertEquals($frequencyTrigger,
"02/05/2016");
154 $this->assertNotEquals($frequencyTrigger,
"03/04/2016");
156 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 2);
157 $this->assertEquals($frequencyTrigger,
"03/04/2016");
159 $frequencyTrigger = TxNextInterval(
"01/30/2016", $frequency, 0);
160 $this->assertEquals($frequencyTrigger,
"01/30/2016");
162 $frequencyTrigger = TxNextInterval(
"01/30/2016", $frequency, 1);
163 $this->assertEquals($frequencyTrigger,
"02/27/2016");
164 $this->assertNotEquals($frequencyTrigger,
"03/26/2016");
166 $frequencyTrigger = TxNextInterval(
"01/30/2016", $frequency, 2);
167 $this->assertEquals($frequencyTrigger,
"03/26/2016");
169 $frequencyTrigger = TxNextInterval(
"09/30/2016", $frequency, 5);
170 $this->assertEquals($frequencyTrigger,
"02/24/2017");
171 $this->assertNotEquals($frequencyTrigger,
"03/31/2017");
174 function test_Monthly() {
175 $frequency =
"Monthly";
176 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
177 $this->assertEquals($frequencyTrigger,
"01/01/2016");
179 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 3);
180 $this->assertEquals($frequencyTrigger,
"04/01/2016");
182 $frequencyTrigger = TxNextInterval(
"11/30/2015", $frequency, 3);
183 $this->assertEquals($frequencyTrigger,
"02/29/2016");
184 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
186 $frequencyTrigger = TxNextInterval(
"11/30/2015", $frequency, 15);
187 $this->assertEquals($frequencyTrigger,
"02/28/2017");
188 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
190 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 1);
191 $this->assertEquals($frequencyTrigger,
"04/30/2016");
193 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 12);
194 $this->assertEquals($frequencyTrigger,
"03/31/2017");
197 function test_Every2months() {
198 $frequency =
"Every2Months";
199 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
200 $this->assertEquals($frequencyTrigger,
"01/01/2016");
202 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 3);
203 $this->assertEquals($frequencyTrigger,
"07/01/2016");
205 $frequencyTrigger = TxNextInterval(
"12/30/2015", $frequency, 1);
206 $this->assertEquals($frequencyTrigger,
"02/29/2016");
207 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
209 $frequencyTrigger = TxNextInterval(
"12/30/2015", $frequency, 7);
210 $this->assertEquals($frequencyTrigger,
"02/28/2017");
211 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
213 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 1);
214 $this->assertEquals($frequencyTrigger,
"05/31/2016");
216 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 6);
217 $this->assertEquals($frequencyTrigger,
"03/31/2017");
220 function test_Quarterly() {
221 $frequency =
"Quarterly";
222 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
223 $this->assertEquals($frequencyTrigger,
"01/01/2016");
225 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 3);
226 $this->assertEquals($frequencyTrigger,
"10/01/2016");
228 $frequencyTrigger = TxNextInterval(
"11/30/2015", $frequency, 1);
229 $this->assertEquals($frequencyTrigger,
"02/29/2016");
230 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
232 $frequencyTrigger = TxNextInterval(
"11/30/2015", $frequency, 5);
233 $this->assertEquals($frequencyTrigger,
"02/28/2017");
234 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
236 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 1);
237 $this->assertEquals($frequencyTrigger,
"06/30/2016");
239 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 12);
240 $this->assertEquals($frequencyTrigger,
"03/31/2019");
243 function test_SemiAnnually() {
244 $frequency =
"SemiAnnually";
245 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
246 $this->assertEquals($frequencyTrigger,
"01/01/2016");
248 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 3);
249 $this->assertEquals($frequencyTrigger,
"07/01/2017");
251 $frequencyTrigger = TxNextInterval(
"08/30/2015", $frequency, 1);
252 $this->assertEquals($frequencyTrigger,
"02/29/2016");
253 $this->assertNotEquals($frequencyTrigger,
"02/28/2016");
255 $frequencyTrigger = TxNextInterval(
"08/30/2015", $frequency, 3);
256 $this->assertEquals($frequencyTrigger,
"02/28/2017");
257 $this->assertNotEquals($frequencyTrigger,
"02/29/2017");
259 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 8);
260 $this->assertEquals($frequencyTrigger,
"03/31/2020");
262 $frequencyTrigger = TxNextInterval(
"03/31/2016", $frequency, 11);
263 $this->assertEquals($frequencyTrigger,
"09/30/2021");
266 function test_Annually() {
267 $frequency =
"Annually";
268 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
269 $this->assertEquals($frequencyTrigger,
"01/01/2016");
271 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 1);
272 $this->assertEquals($frequencyTrigger,
"02/28/2017");
274 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 3);
275 $this->assertEquals($frequencyTrigger,
"02/28/2019");
277 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 4);
278 $this->assertEquals($frequencyTrigger,
"02/29/2020");
280 $frequencyTrigger = TxNextInterval(
"09/23/2017", $frequency, 4);
281 $this->assertEquals($frequencyTrigger,
"09/23/2021");
283 $frequencyTrigger = TxNextInterval(
"12/15/2015", $frequency, 14);
284 $this->assertEquals($frequencyTrigger,
"12/15/2029");
287 function test_OneTime() {
288 $frequency =
"OneTime";
289 $frequencyTrigger = TxNextInterval(
"01/01/2016", $frequency, 0);
290 $this->assertEquals($frequencyTrigger,
"01/01/2016");
292 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 1);
293 $this->assertEquals($frequencyTrigger,
"03/01/2016");
295 $frequencyTrigger = TxNextInterval(
"02/29/2016", $frequency, 3);
296 $this->assertEquals($frequencyTrigger,
"03/01/2016");
300 function test_NextInterval()
302 $frequencyAry = array(
318 $frequencyData = array(
320 "input"=>
"01/01/2017",
321 "expected"=>array(
"01/01/2017",
"01/02/2017",
"01/02/2017",
"01/02/2017",
"01/02/2017",
"01/02/2017")
323 "FirstDayOfMonth"=>array(
324 "input"=>
"01/04/2017",
325 "expected"=>array(
"02/01/2017",
"03/01/2017",
"04/01/2017",
"05/01/2017",
"06/01/2017",
"07/01/2017")
327 "LastDayOfMonth"=>array(
328 "input"=>
"01/10/2016",
329 "expected"=>array(
"01/31/2016",
"02/29/2016",
"03/31/2016",
"04/30/2016",
"05/31/2016",
"06/30/2016")
331 "FirstFifteenth"=>array(
332 "input"=>
"01/10/2017",
333 "expected"=>array(
"01/15/2017",
"02/01/2017",
"02/15/2017",
"03/01/2017",
"03/15/2017",
"04/01/2017")
335 "FifteenthLast"=>array(
336 "input"=>
"01/10/2017",
337 "expected"=>array(
"01/15/2017",
"01/31/2017",
"02/15/2017",
"02/28/2017",
"03/15/2017",
"03/31/2017")
340 "input"=>
"01/10/2017",
341 "expected"=>array(
"01/10/2017",
"01/17/2017",
"01/24/2017",
"01/31/2017",
"02/07/2017",
"02/14/2017")
344 "input"=>
"01/10/2017",
345 "expected"=>array(
"01/10/2017",
"01/24/2017",
"02/07/2017",
"02/21/2017",
"03/07/2017",
"03/21/2017")
347 "WeekDayOfMonth"=>array(
348 "input"=>
"01/10/2017",
349 "expected"=>array(
"01/10/2017",
"02/14/2017",
"03/14/2017",
"04/11/2017",
"05/09/2017",
"06/13/2017")
352 "input"=>
"01/10/2017",
353 "expected"=>array(
"01/10/2017",
"02/10/2017",
"03/10/2017",
"04/10/2017",
"05/10/2017",
"06/10/2017")
355 "Every2Months"=>array(
356 "input"=>
"01/10/2017",
357 "expected"=>array(
"01/10/2017",
"03/10/2017",
"05/10/2017",
"07/10/2017",
"09/10/2017",
"11/10/2017")
360 "input"=>
"01/10/2017",
361 "expected"=>array(
"01/10/2017",
"04/10/2017",
"07/10/2017",
"10/10/2017",
"01/10/2018",
"04/10/2018")
363 "SemiAnnually"=>array(
364 "input"=>
"01/10/2017",
365 "expected"=>array(
"01/10/2017",
"07/10/2017",
"01/10/2018",
"07/10/2018",
"01/10/2019",
"07/10/2019")
368 "input"=>
"01/10/2017",
369 "expected"=>array(
"01/10/2017",
"01/10/2018",
"01/10/2019",
"01/10/2020",
"01/10/2021",
"01/10/2022")
374 foreach ($frequencyAry as $frequency) {
377 $frequencyInput = $frequencyData[$frequency][
'input'];
378 $frequencyDates = $frequencyData[$frequency][
'expected'];
381 foreach ($frequencyDates as $date) {
382 $nextDate = TxNextInterval($frequencyInput, $frequency, $frequencyCount);
383 $this->assertEquals($nextDate, $date);