1+ <?php
2+
3+ use MaplePHP \DTO \Format \Arr ;
4+ use MaplePHP \DTO \Traverse ;
5+
6+ $ unit = new MaplePHP \Unitary \Unit ();
7+
8+ // Begin by adding a test case
9+ $ unit ->case ("MaplePHP DTO Clock " , callback: function () {
10+ $ obj = Traverse::value ([
11+ "date " => "2023-05-21 14:35:12 " ,
12+ "birth " => "1988-08-21 14:35:12 " ,
13+ ]);
14+
15+ $ obj ->date ->clock ()::setDefaultTimezone ("Europe/Stockholm " );
16+
17+ $ this ->add ($ obj ->date ->clock ()->format ("Y/m/d " ), [
18+ "equal " => '2023/05/21 '
19+ ], "format: Failed " );
20+
21+ $ this ->add ($ obj ->date ->clock ()->format ("M " , "sv_SE " ), [
22+ "equal " => 'maj '
23+ ], "format SV_se: Failed " );
24+
25+ $ this ->add ($ obj ->date ->clock ()->setLocale ("fr_FR " )->format ("M " ), [
26+ "equal " => 'mai '
27+ ], "setLocale fr_FR: Failed " );
28+
29+ $ this ->add ($ obj ->date ->clock ()->setLocale ("fr_FR " )->format ("M " ), [
30+ "equal " => 'mai '
31+ ], "setLocale fr_FR: Failed " );
32+
33+ $ this ->add ($ obj ->date ->clock ()->dateTime (), [
34+ "equal " => '2023-05-21 16:35:12 '
35+ ], "dateTime: Failed " );
36+
37+ $ this ->add ($ obj ->date ->clock ()->date (), [
38+ "equal " => '2023-05-21 '
39+ ], "date: Failed " );
40+
41+ $ this ->add ($ obj ->date ->clock ()->time (), [
42+ "equal " => '16:35 '
43+ ], "time: Failed " );
44+
45+ $ this ->add ($ obj ->date ->clock ()->timestamp (), [
46+ "equal " => '1684679712 '
47+ ], "timestamp: Failed " );
48+
49+ $ this ->add ($ obj ->date ->clock ()->year (), [
50+ "equal " => '2023 '
51+ ], "year: Failed " );
52+
53+ $ this ->add ($ obj ->date ->clock ()->year (true ), [
54+ "equal " => '23 '
55+ ], "year (shorthand): Failed " );
56+
57+ $ this ->add ($ obj ->date ->clock ()->month (), [
58+ "equal " => '05 '
59+ ], "month: Failed " );
60+
61+ $ this ->add ($ obj ->date ->clock ()->monthName (), [
62+ "equal " => 'May '
63+ ], "monthName: Failed " );
64+
65+ $ this ->add ($ obj ->birth ->clock ()->shortMonthName (), [
66+ "equal " => 'Aug '
67+ ], "shortMonthName: Failed " );
68+
69+ $ this ->add ($ obj ->date ->clock ()->day (), [
70+ "equal " => '21 '
71+ ], "day: Failed " );
72+
73+ $ this ->add ($ obj ->date ->clock ()->dayOfWeek (), [
74+ "equal " => 7
75+ ], "dayOfWeek: Failed " );
76+
77+ $ this ->add ($ obj ->date ->clock ()->weekday (), [
78+ "equal " => "Sunday "
79+ ], "weekday: Failed " );
80+
81+ $ this ->add ($ obj ->date ->clock ()->shortWeekday (), [
82+ "equal " => "Sun "
83+ ], "shortWeekday: Failed " );
84+
85+ $ this ->add ($ obj ->date ->clock ()->seconds (), [
86+ "equal " => '12 '
87+ ], "seconds: Failed " );
88+
89+ $ this ->add ($ obj ->date ->clock ()->isLeapYear (), [
90+ "equal " => false
91+ ], "isLeapYear: Failed " );
92+
93+ $ this ->add ($ obj ->date ->clock ()->weekNumber (), [
94+ "equal " => 20
95+ ], "weekNumber: Failed " );
96+
97+ $ this ->add ($ obj ->date ->clock ()->iso (), [
98+ "equal " => "2023-05-21T16:35:12+02:00 "
99+ ], "iso: Failed " );
100+
101+ $ this ->add ($ obj ->date ->clock ()->rfc (), [
102+ "equal " => "Sun, 21 May 2023 16:35:12 +0200 "
103+ ], "rfc: Failed " );
104+
105+ $ this ->add ($ obj ->date ->clock ()->time12Hour (), [
106+ "equal " => "04:35 PM "
107+ ], "time12Hour: Failed " );
108+
109+ $ this ->add ($ obj ->date ->clock ()->diffInDays (), [
110+ "lessThan " => 0
111+ ], "diffInDays: Failed " );
112+
113+ $ this ->add ($ obj ->date ->clock ()->isToday (), [
114+ "equal " => false
115+ ], "isToday: Failed " );
116+
117+ $ this ->add ($ obj ->date ->clock ()->timezone (), [
118+ "equal " => "Europe/Stockholm "
119+ ], "timezone|setDefaultTimezone: Failed " );
120+
121+ $ this ->add ($ obj ->date ->clock ()->setTimezone ("UTC " )->timezone (), [
122+ "equal " => "UTC "
123+ ], "setTimezone: Failed " );
124+
125+
126+ // ALWAYS CALL AT THE END
127+ $ obj ->date ->clock ()::setDefaultLocale ("fi_FI " );
128+ $ this ->add ($ obj ->date ->clock ()->format ("M " ), [
129+ "equal " => 'toukokuu '
130+ ], "setDefaultLocale fi_FI: Failed " );
131+
132+ });
0 commit comments