@@ -91,6 +91,10 @@ defmodule DateTest do
9191 assert Date . compare ( date4 , date5 ) == :gt
9292 assert Date . compare ( date5 , date4 ) == :lt
9393 assert Date . compare ( date5 , date5 ) == :eq
94+
95+ assert_raise ArgumentError ,
96+ ~r/ cannot compare .*\n \n .* their calendars have incompatible day rollover moments/ ,
97+ fn -> Date . compare ( date1 , % { date2 | calendar: FakeCalendar } ) end
9498 end
9599
96100 test "before?/2 and after?/2" do
@@ -180,10 +184,14 @@ defmodule DateTest do
180184 |> Date . convert! ( Calendar.Holocene )
181185 |> Date . convert! ( Calendar.ISO ) == ~D[ 2000-01-01]
182186
183- assert Date . convert ( ~D[ 2016-02-03] , FakeCalendar ) == { :error , :incompatible_calendars }
184-
185187 assert Date . convert ( ~N[ 2000-01-01 00:00:00] , Calendar.Holocene ) ==
186188 { :ok , Calendar.Holocene . date ( 12000 , 01 , 01 ) }
189+
190+ assert Date . convert ( ~D[ 2016-02-03] , FakeCalendar ) == { :error , :incompatible_calendars }
191+
192+ assert_raise ArgumentError ,
193+ "cannot convert ~D[2016-02-03] to target calendar FakeCalendar, reason: :incompatible_calendars" ,
194+ fn -> Date . convert! ( ~D[ 2016-02-03] , FakeCalendar ) end
187195 end
188196
189197 test "add/2" do
@@ -214,6 +222,10 @@ defmodule DateTest do
214222 date2 = Calendar.Holocene . date ( 12000 , 01 , 14 )
215223 assert Date . diff ( date1 , date2 ) == - 13
216224 assert Date . diff ( date2 , date1 ) == 13
225+
226+ assert_raise ArgumentError ,
227+ ~r/ cannot calculate the difference between .* because their calendars are not compatible/ ,
228+ fn -> Date . diff ( date1 , % { date2 | calendar: FakeCalendar } ) end
217229 end
218230
219231 test "shift/2" do
@@ -249,6 +261,10 @@ defmodule DateTest do
249261 "unknown unit :months. Expected :year, :month, :week, :day" ,
250262 fn -> Date . shift ( ~D[ 2012-01-01] , months: 12 ) end
251263
264+ assert_raise ArgumentError ,
265+ "unsupported value nil for :day. Expected an integer" ,
266+ fn -> Date . shift ( ~D[ 2012-02-29] , year: 1 , day: nil ) end
267+
252268 assert_raise ArgumentError ,
253269 "cannot shift date by time scale unit. Expected :year, :month, :week, :day" ,
254270 fn -> Date . shift ( ~D[ 2012-02-29] , % Duration { second: 86400 } ) end
@@ -266,4 +282,18 @@ defmodule DateTest do
266282 Date . shift ( date , month: 1 )
267283 end
268284 end
285+
286+ test "utc_today/1" do
287+ date = Date . utc_today ( )
288+ assert date . year > 2020
289+ assert date . calendar == Calendar.ISO
290+
291+ date = Date . utc_today ( Calendar.ISO )
292+ assert date . year > 2020
293+ assert date . calendar == Calendar.ISO
294+
295+ date = Date . utc_today ( Calendar.Holocene )
296+ assert date . year > 12020
297+ assert date . calendar == Calendar.Holocene
298+ end
269299end
0 commit comments