@@ -370,4 +370,60 @@ public function testGetQuarter()
370370 $ jDate = new Jalalian (1402 , 7 , 23 );
371371 $ this ->assertEquals (3 , $ jDate ->getQuarter ());
372372 }
373+
374+ public function testdiff ()
375+ {
376+ $ jDate = new Jalalian (1401 , 6 , 26 );
377+
378+ //same day
379+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 6 , 26 )), [0 , 0 , 0 ]);
380+
381+ //year before
382+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 6 , 25 )), [0 , 0 , 1 ]);
383+
384+ //day after
385+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 6 , 27 )), [0 , 0 , 1 ]);
386+
387+ //same montt, same year, before
388+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 6 , 24 )), [0 , 0 , 2 ]);
389+
390+ //same month, same year, after
391+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 6 , 28 )), [0 , 0 , 2 ]);
392+
393+ //same year, before, smaller day
394+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 4 , 12 )), [0 , 2 , 14 ]);
395+
396+ //same year, before, greater day
397+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 4 , 27 )), [0 , 1 , 30 ]);
398+
399+ //same year, after, smaller day
400+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 9 , 10 )), [0 , 2 , 15 ]);
401+
402+ //same year, after, greater day
403+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1401 , 10 , 28 )), [0 , 4 , 2 ]);
404+
405+ //previous year, smaller month, smaller day
406+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1389 , 4 , 12 )), [12 , 2 , 14 ]);
407+
408+ //previous year, smaller month, greater day
409+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1395 , 4 , 29 )), [6 , 1 , 28 ]);
410+
411+ //previous year, greater month, smaller day
412+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1395 , 9 , 10 )), [5 , 9 , 16 ]);
413+
414+ //previous year, greater month, greater day
415+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1395 , 9 , 30 )), [5 , 8 , 26 ]);
416+
417+ //greater year, smaller month, smaller day
418+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1402 , 4 , 12 )), [0 , 9 , 17 ]);
419+
420+ //greater year, smaller month, greater day
421+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1403 , 4 , 29 )), [1 , 10 , 3 ]);
422+
423+ //greater year, greater month, smaller day
424+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1405 , 9 , 10 )), [4 , 2 , 15 ]);
425+
426+ //greater year, greater month, greater day
427+ $ this ->assertEquals ($ jDate ->diff (new Jalalian (1405 , 9 , 30 )), [4 , 3 , 4 ]);
428+ }
373429}
0 commit comments