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