@@ -182,27 +182,22 @@ test_native_universal_time() ->
182182 ok .
183183
184184test_integer_time_unit () ->
185- % % integer 1 = parts per second, equivalent to second
186185 S = erlang :system_time (second ),
187186 S1 = erlang :system_time (1 ),
188187 true = abs (S1 - S ) =< 1 ,
189188
190- % % integer 1000 = parts per second, equivalent to millisecond
191189 Ms = erlang :system_time (millisecond ),
192190 Ms1 = erlang :system_time (1000 ),
193191 true = abs (Ms1 - Ms ) =< 1 ,
194192
195- % % integer 1000000 = parts per second, equivalent to microsecond
196193 Us = erlang :system_time (microsecond ),
197194 Us1 = erlang :system_time (1000000 ),
198195 true = abs (Us1 - Us ) =< 1000 ,
199196
200- % % integer 1000000000 = parts per second, equivalent to nanosecond
201197 Ns = erlang :system_time (nanosecond ),
202198 Ns1 = erlang :system_time (1000000000 ),
203199 true = abs (Ns1 - Ns ) =< 1000000 ,
204200
205- % % verify values are positive
206201 true = S1 > 0 ,
207202 true = Ms1 > 0 ,
208203 true = Us1 > 0 ,
@@ -216,24 +211,20 @@ test_non_power_of_10_integer_time_unit() ->
216211 ok .
217212
218213test_integer_unit_universal_time () ->
219- % % integer 1 = seconds
220214 {{1970 , 1 , 1 }, {0 , 0 , 0 }} = calendar :system_time_to_universal_time (0 , 1 ),
221215 {{1970 , 1 , 1 }, {0 , 0 , 1 }} = calendar :system_time_to_universal_time (1 , 1 ),
222216 {{2023 , 7 , 8 }, {20 , 19 , 39 }} = calendar :system_time_to_universal_time (1688847579 , 1 ),
223217
224- % % integer 1000 = milliseconds
225218 {{1970 , 1 , 1 }, {0 , 0 , 0 }} = calendar :system_time_to_universal_time (0 , 1000 ),
226219 {{1970 , 1 , 1 }, {0 , 0 , 1 }} = calendar :system_time_to_universal_time (1000 , 1000 ),
227220 {{1970 , 1 , 1 }, {0 , 0 , 1 }} = calendar :system_time_to_universal_time (1001 , 1000 ),
228221 {{1969 , 12 , 31 }, {23 , 59 , 59 }} = calendar :system_time_to_universal_time (- 1 , 1000 ),
229222 {{1969 , 12 , 31 }, {23 , 59 , 58 }} = calendar :system_time_to_universal_time (- 1001 , 1000 ),
230223
231- % % integer 1000000 = microseconds
232224 {{1970 , 1 , 1 }, {0 , 0 , 0 }} = calendar :system_time_to_universal_time (0 , 1000000 ),
233225 {{1970 , 1 , 1 }, {0 , 0 , 1 }} = calendar :system_time_to_universal_time (1000000 , 1000000 ),
234226 {{1969 , 12 , 31 }, {23 , 59 , 59 }} = calendar :system_time_to_universal_time (- 1 , 1000000 ),
235227
236- % % integer 256 and 48000 = arbitrary parts per second
237228 {{1970 , 1 , 1 }, {0 , 0 , 0 }} = calendar :system_time_to_universal_time (255 , 256 ),
238229 {{1970 , 1 , 1 }, {0 , 0 , 1 }} = calendar :system_time_to_universal_time (256 , 256 ),
239230 {{1969 , 12 , 31 }, {23 , 59 , 59 }} = calendar :system_time_to_universal_time (- 1 , 256 ),
@@ -256,11 +247,20 @@ test_bad_integer_unit_universal_time() ->
256247 ok = expect (
257248 fun () -> calendar :system_time_to_universal_time (0 , not_a_time_unit ) end , badarg
258249 ),
259- ok = expect (
260- fun () -> calendar :system_time_to_universal_time (9223372036854775807 , 1 ) end , badarg
261- ),
250+ ok = test_atomvm_integer_unit_overflow (),
262251 ok .
263252
253+ test_atomvm_integer_unit_overflow () ->
254+ case erlang :system_info (machine ) of
255+ " ATOM" ->
256+ expect (
257+ fun () -> calendar :system_time_to_universal_time (9223372036854775807 , 1 ) end ,
258+ badarg
259+ );
260+ _ ->
261+ ok
262+ end .
263+
264264test_integer_parts_per_second_ratio (PartsPerSecond ) ->
265265 Seconds = erlang :system_time (second ),
266266 Parts = erlang :system_time (PartsPerSecond ),
0 commit comments