Skip to content

Commit a461e3b

Browse files
author
Christopher Doris
committed
test(numpydates): add tests for isnan
1 parent 2c89e08 commit a461e3b

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

test/NumpyDates.jl

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,42 @@ end
525525
end
526526
end
527527

528+
@testitem "DateTime64 isnan" begin
529+
using Dates
530+
using PythonCall: NumpyDates
531+
532+
units = (:Y, :M, :W, :D, :h, :m, :s, :ms, :us, :ns, :ps, :fs, :as)
533+
534+
# Non-NaT examples should be false
535+
@test !isnan(NumpyDates.DateTime64(Date(1970, 1, 1), :D))
536+
@test !isnan(NumpyDates.DateTime64(DateTime(1970, 1, 1), :ms))
537+
@test !isnan(NumpyDates.InlineDateTime64{NumpyDates.SECONDS}(0))
538+
@test !isnan(NumpyDates.InlineDateTime64(0, :ns))
539+
540+
# NaT via strings for each unit
541+
@testset "NaT string -> $u" for u in units
542+
x = NumpyDates.DateTime64("NaT", u)
543+
@test isnan(x)
544+
xi = NumpyDates.InlineDateTime64{NumpyDates.Unit(u)}("NaT")
545+
@test isnan(xi)
546+
xid = NumpyDates.InlineDateTime64("NaT", u)
547+
@test isnan(xid)
548+
end
549+
550+
# NaT via sentinel (typemin(Int64))
551+
@testset "NAT sentinel -> $u" for u in units
552+
x = NumpyDates.DateTime64(NumpyDates.NAT, u)
553+
@test isnan(x)
554+
xi = NumpyDates.InlineDateTime64{NumpyDates.Unit(u)}(NumpyDates.NAT)
555+
@test isnan(xi)
556+
end
557+
558+
# Changing unit on NaT remains NaT
559+
nat_d = NumpyDates.DateTime64("NaT", :D)
560+
y = NumpyDates.DateTime64(nat_d, :s)
561+
@test isnan(y)
562+
end
563+
528564
@testitem "TimeDelta64 from Dates.Period" begin
529565
using Dates
530566
using PythonCall: NumpyDates
@@ -748,6 +784,42 @@ end
748784
end
749785
end
750786

787+
@testitem "TimeDelta64 isnan" begin
788+
using Dates
789+
using PythonCall: NumpyDates
790+
791+
units = (:Y, :M, :W, :D, :h, :m, :s, :ms, :us, :ns, :ps, :fs, :as)
792+
793+
# Non-NaT examples should be false
794+
@test !isnan(NumpyDates.TimeDelta64(0, :s))
795+
@test !isnan(NumpyDates.TimeDelta64(Day(1), :D))
796+
@test !isnan(NumpyDates.InlineTimeDelta64{NumpyDates.MINUTES}(0))
797+
@test !isnan(NumpyDates.InlineTimeDelta64(0, :ns))
798+
799+
# NaT via strings for each unit
800+
@testset "NaT string -> $u" for u in units
801+
x = NumpyDates.TimeDelta64("NaT", u)
802+
@test isnan(x)
803+
xi = NumpyDates.InlineTimeDelta64{NumpyDates.Unit(u)}("NaT")
804+
@test isnan(xi)
805+
xid = NumpyDates.InlineTimeDelta64("NaT", u)
806+
@test isnan(xid)
807+
end
808+
809+
# NaT via sentinel (typemin(Int64))
810+
@testset "NAT sentinel -> $u" for u in units
811+
x = NumpyDates.TimeDelta64(NumpyDates.NAT, u)
812+
@test isnan(x)
813+
xi = NumpyDates.InlineTimeDelta64{NumpyDates.Unit(u)}(NumpyDates.NAT)
814+
@test isnan(xi)
815+
end
816+
817+
# Changing unit on NaT remains NaT
818+
nat_td = NumpyDates.TimeDelta64("NaT", :s)
819+
z = NumpyDates.TimeDelta64(nat_td, :ns)
820+
@test isnan(z)
821+
end
822+
751823
@testitem "defaultunit" begin
752824
using Dates
753825
using PythonCall: NumpyDates

0 commit comments

Comments
 (0)