summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Renner <aaron.renner@gmail.com>2019-02-15 11:57:04 -0700
committerJosé Valim <jose.valim@gmail.com>2019-02-15 19:57:04 +0100
commita190c586804f74edaf527f9c32de56e5b5c36f9c (patch)
tree1b91ae6817ef244cad3301aabfd39a6188a71e3b
parentc1bc409cc7d92fe253e67d47d8df77a95a43a5d6 (diff)
downloadelixir-a190c586804f74edaf527f9c32de56e5b5c36f9c.tar.gz
Allow integer time units for DateTime.from_unix!/2 (#8801)
-rw-r--r--lib/elixir/lib/calendar/datetime.ex4
-rw-r--r--lib/elixir/test/elixir/calendar/datetime_test.exs16
2 files changed, 19 insertions, 1 deletions
diff --git a/lib/elixir/lib/calendar/datetime.ex b/lib/elixir/lib/calendar/datetime.ex
index 1744fd11f..34a5b7a08 100644
--- a/lib/elixir/lib/calendar/datetime.ex
+++ b/lib/elixir/lib/calendar/datetime.ex
@@ -160,9 +160,11 @@ defmodule DateTime do
iex> DateTime.from_unix!(1_432_560_368_868_569, :microsecond)
#DateTime<2015-05-25 13:26:08.868569Z>
+ iex> DateTime.from_unix!(143_256_036_886_856, 1024)
+ #DateTime<6403-03-17 07:05:22.320Z>
"""
@spec from_unix!(integer, :native | System.time_unit(), Calendar.calendar()) :: t
- def from_unix!(integer, unit \\ :second, calendar \\ Calendar.ISO) when is_atom(unit) do
+ def from_unix!(integer, unit \\ :second, calendar \\ Calendar.ISO) do
case from_unix(integer, unit, calendar) do
{:ok, datetime} ->
datetime
diff --git a/lib/elixir/test/elixir/calendar/datetime_test.exs b/lib/elixir/test/elixir/calendar/datetime_test.exs
index e023f4bf5..4c0d0e411 100644
--- a/lib/elixir/test/elixir/calendar/datetime_test.exs
+++ b/lib/elixir/test/elixir/calendar/datetime_test.exs
@@ -216,6 +216,14 @@ defmodule DateTimeTest do
}
assert DateTime.from_unix(-1, :microsecond) == {:ok, minus_datetime}
+
+ assert_raise ArgumentError, fn ->
+ DateTime.from_unix(0, :unknown_atom)
+ end
+
+ assert_raise ArgumentError, fn ->
+ DateTime.from_unix(0, "invalid type")
+ end
end
test "from_unix!/2" do
@@ -240,6 +248,14 @@ defmodule DateTimeTest do
assert_raise ArgumentError, fn ->
DateTime.from_unix!(-377_705_116_801)
end
+
+ assert_raise ArgumentError, fn ->
+ DateTime.from_unix!(0, :unknown_atom)
+ end
+
+ assert_raise ArgumentError, fn ->
+ DateTime.from_unix!(0, "invalid type")
+ end
end
test "to_unix/2 works with Unix times back to 0 Gregorian seconds" do