Skip to content

Commit b981fc1

Browse files
committed
Added test
1 parent 9c7c420 commit b981fc1

File tree

1 file changed

+197
-0
lines changed

1 file changed

+197
-0
lines changed
Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
--TEST--
2+
Tests for DateTime[Immutable]::[get|set]Microseconds
3+
--FILE--
4+
<?php
5+
6+
class MyDateTime extends DateTime {};
7+
class MyDateTimeImmutable extends DateTimeImmutable {};
8+
9+
$microsecondsList = array(
10+
0,
11+
999999,
12+
-1,
13+
1000000
14+
);
15+
16+
$dt = new DateTime('2023-04-05T06:07:08.901234+00:00');
17+
$dti = new DateTimeImmutable('2023-04-05T06:07:08.901234+00:00');
18+
$myDt = new MyDateTime('2023-04-05T06:07:08.901234+00:00');
19+
$myDti = new MyDateTimeImmutable('2023-04-05T06:07:08.901234+00:00');
20+
21+
echo 'DateTime::getMicroseconds(): ' . var_export($dt->getMicroseconds(), true) . "\n";
22+
var_dump($dt);
23+
24+
echo 'DateTimeImmutable::getMicroseconds(): ' . var_export($dti->getMicroseconds(), true) . "\n";
25+
var_dump($dti);
26+
27+
echo 'MyDateTime::getMicroseconds(): ' . var_export($myDt->getMicroseconds(), true) . "\n";
28+
var_dump($myDt);
29+
30+
echo 'MyDateTimeImmutable::getMicroseconds(): ' . var_export($myDti->getMicroseconds(), true) . "\n";
31+
var_dump($myDti);
32+
33+
foreach ($microsecondsList as $microseconds) {
34+
echo "##################################\n";
35+
36+
echo 'DateTime::setMicroseconds('.var_export($microseconds, true).'):';
37+
try {
38+
var_dump($dt->setMicroseconds($microseconds));
39+
} catch (Throwable $e) {
40+
echo get_class($e) . ' ' . $e->getMessage() . "\n";
41+
}
42+
echo 'DateTime::getMicroseconds(): ' . var_export($dt->getMicroseconds(), true) . "\n";
43+
44+
echo 'DateTimeImmutable::setMicroseconds('.var_export($microseconds, true).'):';
45+
try {
46+
var_dump($dti->setMicroseconds($microseconds));
47+
} catch (Throwable $e) {
48+
echo get_class($e) . ' ' . $e->getMessage() . "\n";
49+
}
50+
echo 'DateTimeImmutable::getMicroseconds(): ' . var_export($dti->getMicroseconds(), true) . "\n";
51+
52+
echo 'MyDateTime::setMicroseconds('.var_export($microseconds, true).'):';
53+
try {
54+
var_dump($myDt->setMicroseconds($microseconds));
55+
} catch (Throwable $e) {
56+
echo get_class($e) . ' ' . $e->getMessage() . "\n";
57+
}
58+
echo 'MyDateTime::getMicroseconds(): ' . var_export($myDt->getMicroseconds(), true) . "\n";
59+
60+
echo 'MyDateTimeImmutable::setMicroseconds('.var_export($microseconds, true).'):';
61+
try {
62+
var_dump($myDti->setMicroseconds($microseconds));
63+
} catch (Throwable $e) {
64+
echo get_class($e) . ' ' . $e->getMessage() . "\n";
65+
}
66+
echo 'MyDateTimeImmutable::getMicroseconds(): ' . var_export($myDti->getMicroseconds(), true) . "\n";
67+
}
68+
69+
--EXPECTF--
70+
DateTime::getMicroseconds(): 901234
71+
object(DateTime)#%d (3) {
72+
["date"]=>
73+
string(26) "2023-04-05 06:07:08.901234"
74+
["timezone_type"]=>
75+
int(1)
76+
["timezone"]=>
77+
string(6) "+00:00"
78+
}
79+
DateTimeImmutable::getMicroseconds(): 901234
80+
object(DateTimeImmutable)#%d (3) {
81+
["date"]=>
82+
string(26) "2023-04-05 06:07:08.901234"
83+
["timezone_type"]=>
84+
int(1)
85+
["timezone"]=>
86+
string(6) "+00:00"
87+
}
88+
MyDateTime::getMicroseconds(): 901234
89+
object(MyDateTime)#%d (3) {
90+
["date"]=>
91+
string(26) "2023-04-05 06:07:08.901234"
92+
["timezone_type"]=>
93+
int(1)
94+
["timezone"]=>
95+
string(6) "+00:00"
96+
}
97+
MyDateTimeImmutable::getMicroseconds(): 901234
98+
object(MyDateTimeImmutable)#%d (3) {
99+
["date"]=>
100+
string(26) "2023-04-05 06:07:08.901234"
101+
["timezone_type"]=>
102+
int(1)
103+
["timezone"]=>
104+
string(6) "+00:00"
105+
}
106+
##################################
107+
DateTime::setMicroseconds(0):object(DateTime)#%d (3) {
108+
["date"]=>
109+
string(26) "2023-04-05 06:07:08.000000"
110+
["timezone_type"]=>
111+
int(1)
112+
["timezone"]=>
113+
string(6) "+00:00"
114+
}
115+
DateTime::getMicroseconds(): 0
116+
DateTimeImmutable::setMicroseconds(0):object(DateTimeImmutable)#%d (3) {
117+
["date"]=>
118+
string(26) "2023-04-05 06:07:08.000000"
119+
["timezone_type"]=>
120+
int(1)
121+
["timezone"]=>
122+
string(6) "+00:00"
123+
}
124+
DateTimeImmutable::getMicroseconds(): 901234
125+
MyDateTime::setMicroseconds(0):object(MyDateTime)#%d (3) {
126+
["date"]=>
127+
string(26) "2023-04-05 06:07:08.000000"
128+
["timezone_type"]=>
129+
int(1)
130+
["timezone"]=>
131+
string(6) "+00:00"
132+
}
133+
MyDateTime::getMicroseconds(): 0
134+
MyDateTimeImmutable::setMicroseconds(0):object(MyDateTimeImmutable)#%d (3) {
135+
["date"]=>
136+
string(26) "2023-04-05 06:07:08.000000"
137+
["timezone_type"]=>
138+
int(1)
139+
["timezone"]=>
140+
string(6) "+00:00"
141+
}
142+
MyDateTimeImmutable::getMicroseconds(): 901234
143+
##################################
144+
DateTime::setMicroseconds(999999):object(DateTime)#%d (3) {
145+
["date"]=>
146+
string(26) "2023-04-05 06:07:08.999999"
147+
["timezone_type"]=>
148+
int(1)
149+
["timezone"]=>
150+
string(6) "+00:00"
151+
}
152+
DateTime::getMicroseconds(): 999999
153+
DateTimeImmutable::setMicroseconds(999999):object(DateTimeImmutable)#%d (3) {
154+
["date"]=>
155+
string(26) "2023-04-05 06:07:08.999999"
156+
["timezone_type"]=>
157+
int(1)
158+
["timezone"]=>
159+
string(6) "+00:00"
160+
}
161+
DateTimeImmutable::getMicroseconds(): 901234
162+
MyDateTime::setMicroseconds(999999):object(MyDateTime)#%d (3) {
163+
["date"]=>
164+
string(26) "2023-04-05 06:07:08.999999"
165+
["timezone_type"]=>
166+
int(1)
167+
["timezone"]=>
168+
string(6) "+00:00"
169+
}
170+
MyDateTime::getMicroseconds(): 999999
171+
MyDateTimeImmutable::setMicroseconds(999999):object(MyDateTimeImmutable)#%d (3) {
172+
["date"]=>
173+
string(26) "2023-04-05 06:07:08.999999"
174+
["timezone_type"]=>
175+
int(1)
176+
["timezone"]=>
177+
string(6) "+00:00"
178+
}
179+
MyDateTimeImmutable::getMicroseconds(): 901234
180+
##################################
181+
DateTime::setMicroseconds(-1):DateRangeError Microseconds must be between 0 and 999999, -1 given
182+
DateTime::getMicroseconds(): 999999
183+
DateTimeImmutable::setMicroseconds(-1):DateRangeError Microseconds must be between 0 and 999999, -1 given
184+
DateTimeImmutable::getMicroseconds(): 901234
185+
MyDateTime::setMicroseconds(-1):DateRangeError Microseconds must be between 0 and 999999, -1 given
186+
MyDateTime::getMicroseconds(): 999999
187+
MyDateTimeImmutable::setMicroseconds(-1):DateRangeError Microseconds must be between 0 and 999999, -1 given
188+
MyDateTimeImmutable::getMicroseconds(): 901234
189+
##################################
190+
DateTime::setMicroseconds(1000000):DateRangeError Microseconds must be between 0 and 999999, 1000000 given
191+
DateTime::getMicroseconds(): 999999
192+
DateTimeImmutable::setMicroseconds(1000000):DateRangeError Microseconds must be between 0 and 999999, 1000000 given
193+
DateTimeImmutable::getMicroseconds(): 901234
194+
MyDateTime::setMicroseconds(1000000):DateRangeError Microseconds must be between 0 and 999999, 1000000 given
195+
MyDateTime::getMicroseconds(): 999999
196+
MyDateTimeImmutable::setMicroseconds(1000000):DateRangeError Microseconds must be between 0 and 999999, 1000000 given
197+
MyDateTimeImmutable::getMicroseconds(): 901234

0 commit comments

Comments
 (0)