From 2a0fb0cdf03418b316bc41b5732215d57073f3db Mon Sep 17 00:00:00 2001 From: sabiwara Date: Fri, 23 May 2025 17:55:59 +0900 Subject: [PATCH 1/4] Add tests for Time.to_iso8601/2 --- lib/elixir/test/elixir/calendar/time_test.exs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/elixir/test/elixir/calendar/time_test.exs b/lib/elixir/test/elixir/calendar/time_test.exs index 4577daf61e0..1435b39271e 100644 --- a/lib/elixir/test/elixir/calendar/time_test.exs +++ b/lib/elixir/test/elixir/calendar/time_test.exs @@ -38,6 +38,18 @@ defmodule TimeTest do end end + test "to_iso8601/2" do + time1 = ~T[23:00:07.005] + assert Time.to_iso8601(time1) == "23:00:07.005" + assert Time.to_iso8601(Map.from_struct(time1)) == "23:00:07.005" + assert Time.to_iso8601(time1, :basic) == "230007.005" + + time2 = ~T[23:00:07.005 Calendar.Holocene] + assert Time.to_iso8601(time2) == "23:00:07.005" + assert Time.to_iso8601(Map.from_struct(time2)) == "23:00:07.005" + assert Time.to_iso8601(time2, :basic) == "230007.005" + end + test "to_string/1" do time = ~T[23:00:07.005] assert to_string(time) == "23:00:07.005" From 86650a66b0609c331b6f8ef1f1a25823bf0d4668 Mon Sep 17 00:00:00 2001 From: sabiwara Date: Fri, 23 May 2025 18:01:33 +0900 Subject: [PATCH 2/4] Add tests for Time.compare/2 with different calendars --- lib/elixir/test/elixir/calendar/time_test.exs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/elixir/test/elixir/calendar/time_test.exs b/lib/elixir/test/elixir/calendar/time_test.exs index 1435b39271e..b58e370e252 100644 --- a/lib/elixir/test/elixir/calendar/time_test.exs +++ b/lib/elixir/test/elixir/calendar/time_test.exs @@ -77,6 +77,11 @@ defmodule TimeTest do assert Time.compare(time1, time2) == :eq assert Time.compare(time1, time3) == :lt assert Time.compare(time3, time2) == :gt + + time1_holocene = ~T[01:01:01.005 Calendar.Holocene] + assert Time.compare(time1_holocene, time1) == :eq + assert Time.compare(time1_holocene, time2) == :eq + assert Time.compare(time1_holocene, time3) == :lt end test "before?/2 and after?/2" do From c9b74a0b80bcaa16be71a0a5e6bc5e364e6a402d Mon Sep 17 00:00:00 2001 From: sabiwara Date: Fri, 23 May 2025 18:07:43 +0900 Subject: [PATCH 3/4] Add tests for Time.diff/3 --- lib/elixir/test/elixir/calendar/time_test.exs | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/elixir/test/elixir/calendar/time_test.exs b/lib/elixir/test/elixir/calendar/time_test.exs index b58e370e252..65c82a4048c 100644 --- a/lib/elixir/test/elixir/calendar/time_test.exs +++ b/lib/elixir/test/elixir/calendar/time_test.exs @@ -95,6 +95,26 @@ defmodule TimeTest do assert not Time.after?(time1, time2) end + test "diff/3" do + time1 = ~T[05:02:01.234] + time2 = ~T[10:00:04.123] + time1_holocene = ~T[05:02:01.234 Calendar.Holocene] + + assert Time.diff(time1, time2) == -17883 + assert Time.diff(time1, time2, :hour) == -4 + assert Time.diff(time1, time2, :minute) == -298 + assert Time.diff(time1, time2, :second) == -17883 + assert Time.diff(time1, time2, :millisecond) == -17_882_889 + assert Time.diff(time1, time2, :microsecond) == -17_882_889_000 + + assert Time.diff(time1_holocene, time2) == -17883 + assert Time.diff(time1_holocene, time2, :hour) == -4 + assert Time.diff(time1_holocene, time2, :minute) == -298 + assert Time.diff(time1_holocene, time2, :second) == -17883 + assert Time.diff(time1_holocene, time2, :millisecond) == -17_882_889 + assert Time.diff(time1_holocene, time2, :microsecond) == -17_882_889_000 + end + test "truncate/2" do assert Time.truncate(~T[01:01:01.123456], :microsecond) == ~T[01:01:01.123456] From 97c5378cdde32f358075251626bdd5a5c9b37727 Mon Sep 17 00:00:00 2001 From: sabiwara Date: Fri, 23 May 2025 18:11:39 +0900 Subject: [PATCH 4/4] Test Time.shift/2 with invalid values --- lib/elixir/test/elixir/calendar/time_test.exs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/elixir/test/elixir/calendar/time_test.exs b/lib/elixir/test/elixir/calendar/time_test.exs index 65c82a4048c..2818e755117 100644 --- a/lib/elixir/test/elixir/calendar/time_test.exs +++ b/lib/elixir/test/elixir/calendar/time_test.exs @@ -165,5 +165,13 @@ defmodule TimeTest do assert_raise ArgumentError, "cannot shift time by date scale unit. Expected :hour, :minute, :second, :microsecond", fn -> Time.shift(time, %Duration{day: 1}) end + + assert_raise ArgumentError, + "unsupported value nil for :minute. Expected an integer", + fn -> Time.shift(time, minute: nil) end + + assert_raise ArgumentError, + ~r/unsupported value 1 for :microsecond. Expected a tuple \{ms, precision\}/, + fn -> Time.shift(time, microsecond: 1) end end end