@@ -160,7 +160,7 @@ public function testGetWeekOfMonth()
160160 $ jDate = new Jalalian (1401 , 3 , 7 );
161161 $ this ->assertEquals ($ jDate ->getWeekOfMonth (), 2 );
162162 }
163-
163+
164164 public function testGetFirstDayOfWeek ()
165165 {
166166 $ jDate = new Jalalian (1401 , 1 , 23 );
@@ -229,4 +229,145 @@ public function testGetLastMonth()
229229 $ jDate = new Jalalian (1401 , 6 , 8 );
230230 $ this ->assertEquals ($ jDate ->getLastMonth ()->format ('Y-m-d ' ), '1401-05-08 ' );
231231 }
232+
233+ public function testGetFirstDayOfQuarter ()
234+ {
235+ $ jDate = new Jalalian (1402 , 1 , 25 );
236+ $ this ->assertEquals ('1402-01-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
237+
238+ $ jDate = new Jalalian (1402 , 2 , 25 );
239+ $ this ->assertEquals ('1402-01-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
240+
241+ $ jDate = new Jalalian (1402 , 3 , 25 );
242+ $ this ->assertEquals ('1402-01-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
243+
244+ $ jDate = new Jalalian (1402 , 4 , 25 );
245+ $ this ->assertEquals ('1402-04-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
246+
247+ $ jDate = new Jalalian (1402 , 5 , 25 );
248+ $ this ->assertEquals ('1402-04-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
249+
250+ $ jDate = new Jalalian (1402 , 6 , 25 );
251+ $ this ->assertEquals ('1402-04-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
252+
253+ $ jDate = new Jalalian (1402 , 7 , 25 );
254+ $ this ->assertEquals ('1402-07-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
255+
256+ $ jDate = new Jalalian (1402 , 8 , 25 );
257+ $ this ->assertEquals ('1402-07-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
258+
259+ $ jDate = new Jalalian (1402 , 9 , 25 );
260+ $ this ->assertEquals ('1402-07-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
261+
262+ $ jDate = new Jalalian (1402 , 10 , 25 );
263+ $ this ->assertEquals ('1402-10-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
264+
265+ $ jDate = new Jalalian (1402 , 11 , 19 );
266+ $ this ->assertEquals ('1402-10-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
267+
268+ $ jDate = new Jalalian (1402 , 12 , 25 );
269+ $ this ->assertEquals ('1402-10-01 ' , $ jDate ->getFirstDayOfQuarter ()->format ('Y-m-d ' ));
270+
271+ }
272+
273+ public function testGetEndDayOfWeek ()
274+ {
275+ /*
276+ * --------------------------------
277+ * Day 1402 (March 2024)
278+ * --------------------------------
279+ * Sat Sun Mon Tue Wed Thu Fri
280+ * --------------------------------
281+ * 1
282+ * 2 3 4 5 6 7 8
283+ * 9 10 11 12 13 14 15
284+ * 16 17 18 19 20 21 22
285+ * 23 24 25 26 27 28 29
286+ * 30
287+ * -------------------------------
288+ */
289+
290+ $ jDate = new Jalalian (1402 , 10 , 25 );
291+ $ this ->assertEquals ('1402-10-29 ' , $ jDate ->getEndDayOfWeek ()->format ('Y-m-d ' ));
292+
293+ $ jDate = new Jalalian (1402 , 10 , 29 );
294+ $ this ->assertEquals ('1402-10-29 ' , $ jDate ->getEndDayOfWeek ()->format ('Y-m-d ' ));
295+
296+ $ jDate = new Jalalian (1402 , 10 , 23 );
297+ $ this ->assertEquals ('1402-10-29 ' , $ jDate ->getEndDayOfWeek ()->format ('Y-m-d ' ));
298+
299+ $ jDate = new Jalalian (1402 , 12 , 29 );
300+ $ this ->assertEquals ('1403-01-03 ' , $ jDate ->getEndDayOfWeek ()->format ('Y-m-d ' ));
301+
302+ }
303+
304+ public function testGetEndDayOfMonth ()
305+ {
306+ /*
307+ * --------------------------------
308+ * Day 1402 (March 2024)
309+ * --------------------------------
310+ * Sat Sun Mon Tue Wed Thu Fri
311+ * --------------------------------
312+ * 1
313+ * 2 3 4 5 6 7 8
314+ * 9 10 11 12 13 14 15
315+ * 16 17 18 19 20 21 22
316+ * 23 24 25 26 27 28 29
317+ * 30
318+ * -------------------------------
319+ */
320+
321+ $ jDate = new Jalalian (1402 , 10 , 25 );
322+ $ this ->assertEquals ('1402-10-30 ' , $ jDate ->getEndDayOfMonth ()->format ('Y-m-d ' ));
323+
324+ $ jDate = new Jalalian (1402 , 04 , 12 );
325+ $ this ->assertEquals ('1402-04-31 ' , $ jDate ->getEndDayOfMonth ()->format ('Y-m-d ' ));
326+
327+ $ jDate = new Jalalian (1402 , 12 , 25 );
328+ $ this ->assertEquals ('1402-12-29 ' , $ jDate ->getEndDayOfMonth ()->format ('Y-m-d ' ));
329+ }
330+
331+ public function testGetEndDayOfYear ()
332+ {
333+ $ jDate = new Jalalian (1402 , 10 , 25 );
334+ $ this ->assertEquals ('1402-12-29 ' , $ jDate ->getEndDayOfYear ()->format ('Y-m-d ' ));
335+
336+ // LeapYear
337+ $ jDate = new Jalalian (1403 , 10 , 25 );
338+ $ this ->assertEquals ('1403-12-30 ' , $ jDate ->getEndDayOfYear ()->format ('Y-m-d ' ));
339+ }
340+
341+ public function testGetEndDayOfQuarter ()
342+ {
343+ $ jDate = new Jalalian (1402 , 10 , 25 );
344+ $ this ->assertEquals ('1402-12-29 ' , $ jDate ->getEndDayOfQuarter ()->format ('Y-m-d ' ));
345+
346+ $ jDate = new Jalalian (1402 , 2 , 25 );
347+ $ this ->assertEquals ('1402-03-31 ' , $ jDate ->getEndDayOfQuarter ()->format ('Y-m-d ' ));
348+
349+
350+ $ jDate = new Jalalian (1402 , 6 , 01 );
351+ $ this ->assertEquals ('1402-06-31 ' , $ jDate ->getEndDayOfQuarter ()->format ('Y-m-d ' ));
352+
353+
354+ $ jDate = new Jalalian (1402 , 9 , 01 );
355+ $ this ->assertEquals ('1402-09-30 ' , $ jDate ->getEndDayOfQuarter ()->format ('Y-m-d ' ));
356+ }
357+
358+ public function testGetQuarter ()
359+ {
360+ $ jDate = new Jalalian (1402 , 10 , 25 );
361+ $ this ->assertEquals (4 , $ jDate ->getQuarter ());
362+
363+ $ jDate = new Jalalian (1402 , 1 , 01 );
364+ $ this ->assertEquals (1 , $ jDate ->getQuarter ());
365+
366+
367+ $ jDate = new Jalalian (1402 , 05 , 24 );
368+ $ this ->assertEquals (2 , $ jDate ->getQuarter ());
369+
370+ $ jDate = new Jalalian (1402 , 7 , 23 );
371+ $ this ->assertEquals (3 , $ jDate ->getQuarter ());
372+ }
232373}
0 commit comments