mollusk 0e4acfb8f2 fix incorrect folder name for julia-0.6.x
Former-commit-id: ef2c7401e0876f22d2f7762d182cfbcd5a7d9c70
2018-06-11 03:28:36 -07:00

442 lines
23 KiB
Julia

# This file is a part of Julia. License is MIT: https://julialang.org/license
# Time arithmetic
a = Dates.Time(23, 59, 59)
b = Dates.Time(11, 59, 59)
@test Dates.CompoundPeriod(a - b) == Dates.Hour(12)
# Dates.DateTime arithmetic
a = Dates.DateTime(2013, 1, 1, 0, 0, 0, 1)
b = Dates.DateTime(2013, 1, 1, 0, 0, 0, 0)
@test a - b == Dates.Millisecond(1)
@test Dates.DateTime(2013, 1, 2) - b == Dates.Millisecond(86400000)
# Dates.DateTime-Year arithmetic
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Year(1) == Dates.DateTime(2000, 12, 27)
@test dt + Dates.Year(100) == Dates.DateTime(2099, 12, 27)
@test dt + Dates.Year(1000) == Dates.DateTime(2999, 12, 27)
@test dt - Dates.Year(1) == Dates.DateTime(1998, 12, 27)
@test dt - Dates.Year(100) == Dates.DateTime(1899, 12, 27)
@test dt - Dates.Year(1000) == Dates.DateTime(999, 12, 27)
dt = Dates.DateTime(2000, 2, 29)
@test dt + Dates.Year(1) == Dates.DateTime(2001, 2, 28)
@test dt - Dates.Year(1) == Dates.DateTime(1999, 2, 28)
@test dt + Dates.Year(4) == Dates.DateTime(2004, 2, 29)
@test dt - Dates.Year(4) == Dates.DateTime(1996, 2, 29)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Year(1) == Dates.DateTime(1973, 6, 30, 23, 59, 59)
@test dt - Dates.Year(1) == Dates.DateTime(1971, 6, 30, 23, 59, 59)
@test dt + Dates.Year(-1) == Dates.DateTime(1971, 6, 30, 23, 59, 59)
@test dt - Dates.Year(-1) == Dates.DateTime(1973, 6, 30, 23, 59, 59)
# Wrapping arithemtic for Months
# This ends up being trickier than expected because
# the user might do 2014-01-01 + Month(-14)
# monthwrap figures out the resulting month
# when adding/subtracting months from a date
@test Dates.monthwrap(1, -14) == 11
@test Dates.monthwrap(1, -13) == 12
@test Dates.monthwrap(1, -12) == 1
@test Dates.monthwrap(1, -11) == 2
@test Dates.monthwrap(1, -10) == 3
@test Dates.monthwrap(1, -9) == 4
@test Dates.monthwrap(1, -8) == 5
@test Dates.monthwrap(1, -7) == 6
@test Dates.monthwrap(1, -6) == 7
@test Dates.monthwrap(1, -5) == 8
@test Dates.monthwrap(1, -4) == 9
@test Dates.monthwrap(1, -3) == 10
@test Dates.monthwrap(1, -2) == 11
@test Dates.monthwrap(1, -1) == 12
@test Dates.monthwrap(1, 0) == 1
@test Dates.monthwrap(1, 1) == 2
@test Dates.monthwrap(1, 2) == 3
@test Dates.monthwrap(1, 3) == 4
@test Dates.monthwrap(1, 4) == 5
@test Dates.monthwrap(1, 5) == 6
@test Dates.monthwrap(1, 6) == 7
@test Dates.monthwrap(1, 7) == 8
@test Dates.monthwrap(1, 8) == 9
@test Dates.monthwrap(1, 9) == 10
@test Dates.monthwrap(1, 10) == 11
@test Dates.monthwrap(1, 11) == 12
@test Dates.monthwrap(1, 12) == 1
@test Dates.monthwrap(1, 13) == 2
@test Dates.monthwrap(1, 24) == 1
@test Dates.monthwrap(12, -14) == 10
@test Dates.monthwrap(12, -13) == 11
@test Dates.monthwrap(12, -12) == 12
@test Dates.monthwrap(12, -11) == 1
@test Dates.monthwrap(12, -2) == 10
@test Dates.monthwrap(12, -1) == 11
@test Dates.monthwrap(12, 0) == 12
@test Dates.monthwrap(12, 1) == 1
@test Dates.monthwrap(12, 2) == 2
@test Dates.monthwrap(12, 11) == 11
@test Dates.monthwrap(12, 12) == 12
@test Dates.monthwrap(12, 13) == 1
# yearwrap figures out the resulting year
# when adding/subtracting months from a date
@test Dates.yearwrap(2000, 1, -3600) == 1700
@test Dates.yearwrap(2000, 1, -37) == 1996
@test Dates.yearwrap(2000, 1, -36) == 1997
@test Dates.yearwrap(2000, 1, -35) == 1997
@test Dates.yearwrap(2000, 1, -25) == 1997
@test Dates.yearwrap(2000, 1, -24) == 1998
@test Dates.yearwrap(2000, 1, -23) == 1998
@test Dates.yearwrap(2000, 1, -14) == 1998
@test Dates.yearwrap(2000, 1, -13) == 1998
@test Dates.yearwrap(2000, 1, -12) == 1999
@test Dates.yearwrap(2000, 1, -11) == 1999
@test Dates.yearwrap(2000, 1, -2) == 1999
@test Dates.yearwrap(2000, 1, -1) == 1999
@test Dates.yearwrap(2000, 1, 0) == 2000
@test Dates.yearwrap(2000, 1, 1) == 2000
@test Dates.yearwrap(2000, 1, 11) == 2000
@test Dates.yearwrap(2000, 1, 12) == 2001
@test Dates.yearwrap(2000, 1, 13) == 2001
@test Dates.yearwrap(2000, 1, 23) == 2001
@test Dates.yearwrap(2000, 1, 24) == 2002
@test Dates.yearwrap(2000, 1, 25) == 2002
@test Dates.yearwrap(2000, 1, 36) == 2003
@test Dates.yearwrap(2000, 1, 3600) == 2300
@test Dates.yearwrap(2000, 2, -2) == 1999
@test Dates.yearwrap(2000, 3, 10) == 2001
@test Dates.yearwrap(2000, 4, -4) == 1999
@test Dates.yearwrap(2000, 5, 8) == 2001
@test Dates.yearwrap(2000, 6, -18) == 1998
@test Dates.yearwrap(2000, 6, -6) == 1999
@test Dates.yearwrap(2000, 6, 6) == 2000
@test Dates.yearwrap(2000, 6, 7) == 2001
@test Dates.yearwrap(2000, 6, 19) == 2002
@test Dates.yearwrap(2000, 12, -3600) == 1700
@test Dates.yearwrap(2000, 12, -36) == 1997
@test Dates.yearwrap(2000, 12, -35) == 1998
@test Dates.yearwrap(2000, 12, -24) == 1998
@test Dates.yearwrap(2000, 12, -23) == 1999
@test Dates.yearwrap(2000, 12, -14) == 1999
@test Dates.yearwrap(2000, 12, -13) == 1999
@test Dates.yearwrap(2000, 12, -12) == 1999
@test Dates.yearwrap(2000, 12, -11) == 2000
@test Dates.yearwrap(2000, 12, -2) == 2000
@test Dates.yearwrap(2000, 12, -1) == 2000
@test Dates.yearwrap(2000, 12, 0) == 2000
@test Dates.yearwrap(2000, 12, 1) == 2001
@test Dates.yearwrap(2000, 12, 11) == 2001
@test Dates.yearwrap(2000, 12, 12) == 2001
@test Dates.yearwrap(2000, 12, 13) == 2002
@test Dates.yearwrap(2000, 12, 24) == 2002
@test Dates.yearwrap(2000, 12, 25) == 2003
@test Dates.yearwrap(2000, 12, 36) == 2003
@test Dates.yearwrap(2000, 12, 37) == 2004
@test Dates.yearwrap(2000, 12, 3600) == 2300
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Month(1) == Dates.DateTime(2000, 1, 27)
@test dt + Dates.Month(-1) == Dates.DateTime(1999, 11, 27)
@test dt + Dates.Month(-11) == Dates.DateTime(1999, 1, 27)
@test dt + Dates.Month(11) == Dates.DateTime(2000, 11, 27)
@test dt + Dates.Month(-12) == Dates.DateTime(1998, 12, 27)
@test dt + Dates.Month(12) == Dates.DateTime(2000, 12, 27)
@test dt + Dates.Month(13) == Dates.DateTime(2001, 1, 27)
@test dt + Dates.Month(100) == Dates.DateTime(2008, 4, 27)
@test dt + Dates.Month(1000) == Dates.DateTime(2083, 4, 27)
@test dt - Dates.Month(1) == Dates.DateTime(1999, 11, 27)
@test dt - Dates.Month(-1) == Dates.DateTime(2000, 1, 27)
@test dt - Dates.Month(100) == Dates.DateTime(1991, 8, 27)
@test dt - Dates.Month(1000) == Dates.DateTime(1916, 8, 27)
dt = Dates.DateTime(2000, 2, 29)
@test dt + Dates.Month(1) == Dates.DateTime(2000, 3, 29)
@test dt - Dates.Month(1) == Dates.DateTime(2000, 1, 29)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Month(1) == Dates.DateTime(1972, 7, 30, 23, 59, 59)
@test dt - Dates.Month(1) == Dates.DateTime(1972, 5, 30, 23, 59, 59)
@test dt + Dates.Month(-1) == Dates.DateTime(1972, 5, 30, 23, 59, 59)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Week(1) == Dates.DateTime(2000, 1, 3)
@test dt + Dates.Week(100) == Dates.DateTime(2001, 11, 26)
@test dt + Dates.Week(1000) == Dates.DateTime(2019, 2, 25)
@test dt - Dates.Week(1) == Dates.DateTime(1999, 12, 20)
@test dt - Dates.Week(100) == Dates.DateTime(1998, 1, 26)
@test dt - Dates.Week(1000) == Dates.DateTime(1980, 10, 27)
dt = Dates.DateTime(2000, 2, 29)
@test dt + Dates.Week(1) == Dates.DateTime(2000, 3, 7)
@test dt - Dates.Week(1) == Dates.DateTime(2000, 2, 22)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Week(1) == Dates.DateTime(1972, 7, 7, 23, 59, 59)
@test dt - Dates.Week(1) == Dates.DateTime(1972, 6, 23, 23, 59, 59)
@test dt + Dates.Week(-1) == Dates.DateTime(1972, 6, 23, 23, 59, 59)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Day(1) == Dates.DateTime(1999, 12, 28)
@test dt + Dates.Day(100) == Dates.DateTime(2000, 4, 5)
@test dt + Dates.Day(1000) == Dates.DateTime(2002, 9, 22)
@test dt - Dates.Day(1) == Dates.DateTime(1999, 12, 26)
@test dt - Dates.Day(100) == Dates.DateTime(1999, 9, 18)
@test dt - Dates.Day(1000) == Dates.DateTime(1997, 4, 1)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Day(1) == Dates.DateTime(1972, 7, 1, 23, 59, 59)
@test dt - Dates.Day(1) == Dates.DateTime(1972, 6, 29, 23, 59, 59)
@test dt + Dates.Day(-1) == Dates.DateTime(1972, 6, 29, 23, 59, 59)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Hour(1) == Dates.DateTime(1999, 12, 27, 1)
@test dt + Dates.Hour(100) == Dates.DateTime(1999, 12, 31, 4)
@test dt + Dates.Hour(1000) == Dates.DateTime(2000, 2, 6, 16)
@test dt - Dates.Hour(1) == Dates.DateTime(1999, 12, 26, 23)
@test dt - Dates.Hour(100) == Dates.DateTime(1999, 12, 22, 20)
@test dt - Dates.Hour(1000) == Dates.DateTime(1999, 11, 15, 8)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Hour(1) == Dates.DateTime(1972, 7, 1, 0, 59, 59)
@test dt - Dates.Hour(1) == Dates.DateTime(1972, 6, 30, 22, 59, 59)
@test dt + Dates.Hour(-1) == Dates.DateTime(1972, 6, 30, 22, 59, 59)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Minute(1) == Dates.DateTime(1999, 12, 27, 0, 1)
@test dt + Dates.Minute(100) == Dates.DateTime(1999, 12, 27, 1, 40)
@test dt + Dates.Minute(1000) == Dates.DateTime(1999, 12, 27, 16, 40)
@test dt - Dates.Minute(1) == Dates.DateTime(1999, 12, 26, 23, 59)
@test dt - Dates.Minute(100) == Dates.DateTime(1999, 12, 26, 22, 20)
@test dt - Dates.Minute(1000) == Dates.DateTime(1999, 12, 26, 7, 20)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Minute(1) == Dates.DateTime(1972, 7, 1, 0, 0, 59)
@test dt - Dates.Minute(1) == Dates.DateTime(1972, 6, 30, 23, 58, 59)
@test dt + Dates.Minute(-1) == Dates.DateTime(1972, 6, 30, 23, 58, 59)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Second(1) == Dates.DateTime(1999, 12, 27, 0, 0, 1)
@test dt + Dates.Second(100) == Dates.DateTime(1999, 12, 27, 0, 1, 40)
@test dt + Dates.Second(1000) == Dates.DateTime(1999, 12, 27, 0, 16, 40)
@test dt - Dates.Second(1) == Dates.DateTime(1999, 12, 26, 23, 59, 59)
@test dt - Dates.Second(100) == Dates.DateTime(1999, 12, 26, 23, 58, 20)
@test dt - Dates.Second(1000) == Dates.DateTime(1999, 12, 26, 23, 43, 20)
dt = Dates.DateTime(1999, 12, 27)
@test dt + Dates.Millisecond(1) == Dates.DateTime(1999, 12, 27, 0, 0, 0, 1)
@test dt + Dates.Millisecond(100) == Dates.DateTime(1999, 12, 27, 0, 0, 0, 100)
@test dt + Dates.Millisecond(1000) == Dates.DateTime(1999, 12, 27, 0, 0, 1)
@test dt - Dates.Millisecond(1) == Dates.DateTime(1999, 12, 26, 23, 59, 59, 999)
@test dt - Dates.Millisecond(100) == Dates.DateTime(1999, 12, 26, 23, 59, 59, 900)
@test dt - Dates.Millisecond(1000) == Dates.DateTime(1999, 12, 26, 23, 59, 59)
dt = Dates.DateTime(1972, 6, 30, 23, 59, 59)
@test dt + Dates.Millisecond(1) == Dates.DateTime(1972, 6, 30, 23, 59, 59, 1)
@test dt - Dates.Millisecond(1) == Dates.DateTime(1972, 6, 30, 23, 59, 58, 999)
@test dt + Dates.Millisecond(-1) == Dates.DateTime(1972, 6, 30, 23, 59, 58, 999)
dt = Dates.Date(1999, 12, 27)
@test dt + Dates.Year(1) == Dates.Date(2000, 12, 27)
@test dt + Dates.Year(100) == Dates.Date(2099, 12, 27)
@test dt + Dates.Year(1000) == Dates.Date(2999, 12, 27)
@test dt - Dates.Year(1) == Dates.Date(1998, 12, 27)
@test dt - Dates.Year(100) == Dates.Date(1899, 12, 27)
@test dt - Dates.Year(1000) == Dates.Date(999, 12, 27)
dt = Dates.Date(2000, 2, 29)
@test dt + Dates.Year(1) == Dates.Date(2001, 2, 28)
@test dt - Dates.Year(1) == Dates.Date(1999, 2, 28)
@test dt + Dates.Year(4) == Dates.Date(2004, 2, 29)
@test dt - Dates.Year(4) == Dates.Date(1996, 2, 29)
dt = Dates.Date(1999, 12, 27)
@test dt + Dates.Month(1) == Dates.Date(2000, 1, 27)
@test dt + Dates.Month(100) == Dates.Date(2008, 4, 27)
@test dt + Dates.Month(1000) == Dates.Date(2083, 4, 27)
@test dt - Dates.Month(1) == Dates.Date(1999, 11, 27)
@test dt - Dates.Month(100) == Dates.Date(1991, 8, 27)
@test dt - Dates.Month(1000) == Dates.Date(1916, 8, 27)
dt = Dates.Date(2000, 2, 29)
@test dt + Dates.Month(1) == Dates.Date(2000, 3, 29)
@test dt - Dates.Month(1) == Dates.Date(2000, 1, 29)
dt = Dates.Date(1999, 12, 27)
@test dt + Dates.Week(1) == Dates.Date(2000, 1, 3)
@test dt + Dates.Week(100) == Dates.Date(2001, 11, 26)
@test dt + Dates.Week(1000) == Dates.Date(2019, 2, 25)
@test dt - Dates.Week(1) == Dates.Date(1999, 12, 20)
@test dt - Dates.Week(100) == Dates.Date(1998, 1, 26)
@test dt - Dates.Week(1000) == Dates.Date(1980, 10, 27)
dt = Dates.Date(2000, 2, 29)
@test dt + Dates.Week(1) == Dates.Date(2000, 3, 7)
@test dt - Dates.Week(1) == Dates.Date(2000, 2, 22)
dt = Dates.Date(1999, 12, 27)
@test dt + Dates.Day(1) == Dates.Date(1999, 12, 28)
@test dt + Dates.Day(100) == Dates.Date(2000, 4, 5)
@test dt + Dates.Day(1000) == Dates.Date(2002, 9, 22)
@test dt - Dates.Day(1) == Dates.Date(1999, 12, 26)
@test dt - Dates.Day(100) == Dates.Date(1999, 9, 18)
@test dt - Dates.Day(1000) == Dates.Date(1997, 4, 1)
# Test Time-TimePeriod arithmetic
t = Dates.Time(0)
@test t + Dates.Hour(1) == Dates.Time(1)
@test t - Dates.Hour(1) == Dates.Time(23)
@test t - Dates.Nanosecond(1) == Dates.Time(23, 59, 59, 999, 999, 999)
@test t + Dates.Nanosecond(-1) == Dates.Time(23, 59, 59, 999, 999, 999)
@test t + Dates.Hour(24) == t
@test t + Dates.Nanosecond(86400000000000) == t
@test t - Dates.Nanosecond(86400000000000) == t
@test t + Dates.Minute(1) == Dates.Time(0, 1)
@test t + Dates.Second(1) == Dates.Time(0, 0, 1)
@test t + Dates.Millisecond(1) == Dates.Time(0, 0, 0, 1)
@test t + Dates.Microsecond(1) == Dates.Time(0, 0, 0, 0, 1)
@test_throws MethodError t + Dates.Day(1)
# Vectorized Time arithmetic
a = Dates.Time(1, 1, 1)
dr = [a, a, a, a, a, a, a, a, a, a]
b = a + Dates.Hour(1)
@test dr .+ Dates.Hour(1) == repmat([b], 10)
b = a + Dates.Second(1)
@test dr .+ Dates.Second(1) == repmat([b], 10)
b = a + Dates.Millisecond(1)
@test dr .+ Dates.Millisecond(1) == repmat([b], 10)
b = a + Dates.Microsecond(1)
@test dr .+ Dates.Microsecond(1) == repmat([b], 10)
b = a + Dates.Nanosecond(1)
@test dr .+ Dates.Nanosecond(1) == repmat([b], 10)
b = a - Dates.Hour(1)
@test dr .- Dates.Hour(1) == repmat([b], 10)
b = a - Dates.Second(1)
@test dr .- Dates.Second(1) == repmat([b], 10)
b = a - Dates.Millisecond(1)
@test dr .- Dates.Millisecond(1) == repmat([b], 10)
b = a - Dates.Microsecond(1)
@test dr .- Dates.Microsecond(1) == repmat([b], 10)
b = a - Dates.Nanosecond(1)
@test dr .- Dates.Nanosecond(1) == repmat([b], 10)
# Vectorized arithmetic
a = Dates.Date(2014, 1, 1)
dr = [a, a, a, a, a, a, a, a, a, a]
b = a + Dates.Year(1)
@test dr .+ Dates.Year(1) == repmat([b], 10)
b = a + Dates.Month(1)
@test dr .+ Dates.Month(1) == repmat([b], 10)
b = a + Dates.Day(1)
@test dr .+ Dates.Day(1) == repmat([b], 10)
b = a - Dates.Year(1)
@test dr .- Dates.Year(1) == repmat([b], 10)
b = a - Dates.Month(1)
@test dr .- Dates.Month(1) == repmat([b], 10)
b = a - Dates.Day(1)
@test dr .- Dates.Day(1) == repmat([b], 10)
# Vectorized arithmetic
b = a + Dates.Year(1)
@test dr .+ Dates.Year(1) == repmat([b], 10)
b = a + Dates.Month(1)
@test dr .+ Dates.Month(1) == repmat([b], 10)
b = a + Dates.Day(1)
@test dr .+ Dates.Day(1) == repmat([b], 10)
b = a - Dates.Year(1)
@test dr .- Dates.Year(1) == repmat([b], 10)
b = a - Dates.Month(1)
@test dr .- Dates.Month(1) == repmat([b], 10)
b = a - Dates.Day(1)
@test dr .- Dates.Day(1) == repmat([b], 10)
# Month arithmetic minimizes "edit distance", or number of changes
# needed to get a correct answer
# This approach results in a few cases of non-associativity
a = Dates.Date(2012, 1, 29)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 1, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 2, 29)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 3, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 4, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 5, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 6, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 8, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 9, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 10, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
a = Dates.Date(2012, 11, 30)
@test (a + Dates.Day(1)) + Dates.Month(1) != (a + Dates.Month(1)) + Dates.Day(1)
dt = Dates.DateTime(2000, 1, 1, 12, 30, 45, 500)
dt2 = dt + Dates.Year(1)
@test Dates.year(dt2) == 2001
@test Dates.month(dt2) == 1
@test Dates.day(dt2) == 1
@test Dates.hour(dt2) == 12
@test Dates.minute(dt2) == 30
@test Dates.second(dt2) == 45
@test Dates.millisecond(dt2) == 500
t1 = [Dates.Date(2009, 1, 1) Dates.Date(2009, 1, 2) Dates.Date(2009, 1, 3); Dates.Date(2009, 2, 1) Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3)]
t2 = [Dates.Date(2009, 1, 2) Dates.Date(2009, 2, 2) Dates.Date(2010, 1, 3); Dates.Date(2010, 2, 1) Dates.Date(2009, 3, 2) Dates.Date(2009, 2, 4)]
t3 = [Dates.DateTime(2009, 1, 1), Dates.DateTime(2009, 1, 2), Dates.DateTime(2009, 1, 3)]
t4 = [Dates.DateTime(2009, 1, 1, 0, 0, 1), Dates.DateTime(2009, 1, 2, 0, 1), Dates.DateTime(2009, 1, 3, 1)]
t5 = [Dates.Time(0, 0, 0) Dates.Time(0, 0, 1) Dates.Time(0, 0, 2); Dates.Time(0, 1, 0) Dates.Time(0, 2, 0) Dates.Time(0, 3, 0)]
# TimeType, Array{TimeType}
@test Dates.Date(2010, 1, 1) .- t1 == [Dates.Day(365) Dates.Day(364) Dates.Day(363); Dates.Day(334) Dates.Day(333) Dates.Day(332)]
@test t1 .- Dates.Date(2010, 1, 1) == [Dates.Day(-365) Dates.Day(-364) Dates.Day(-363); Dates.Day(-334) Dates.Day(-333) Dates.Day(-332)]
@test Dates.DateTime(2009, 1, 1) .- t3 == [Dates.Millisecond(0), Dates.Millisecond(-86400000), Dates.Millisecond(-172800000)]
@test t3 .- Dates.DateTime(2009, 1, 1) == [Dates.Millisecond(0), Dates.Millisecond(86400000), Dates.Millisecond(172800000)]
@test Dates.Date(2010, 1, 1) - t1 == [Dates.Day(365) Dates.Day(364) Dates.Day(363); Dates.Day(334) Dates.Day(333) Dates.Day(332)]
@test t1 - Dates.Date(2010, 1, 1) == [Dates.Day(-365) Dates.Day(-364) Dates.Day(-363); Dates.Day(-334) Dates.Day(-333) Dates.Day(-332)]
@test Dates.DateTime(2009, 1, 1) - t3 == [Dates.Millisecond(0), Dates.Millisecond(-86400000), Dates.Millisecond(-172800000)]
@test t3 - Dates.DateTime(2009, 1, 1) == [Dates.Millisecond(0), Dates.Millisecond(86400000), Dates.Millisecond(172800000)]
@test Dates.Time(2) .- t5 == [Dates.Nanosecond(7200000000000) Dates.Nanosecond(7199000000000) Dates.Nanosecond(7198000000000);
Dates.Nanosecond(7140000000000) Dates.Nanosecond(7080000000000) Dates.Nanosecond(7020000000000)]
# GeneralPeriod, Array{TimeType}
@test Dates.Day(1) .+ t1 == [Dates.Date(2009, 1, 2) Dates.Date(2009, 1, 3) Dates.Date(2009, 1, 4); Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4)]
@test Dates.Hour(1) .+ t3 == [Dates.DateTime(2009, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1), Dates.DateTime(2009, 1, 3, 1)]
@test t1 .+ Dates.Day(1) == [Dates.Date(2009, 1, 2) Dates.Date(2009, 1, 3) Dates.Date(2009, 1, 4); Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4)]
@test t3 .+ Dates.Hour(1) == [Dates.DateTime(2009, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1), Dates.DateTime(2009, 1, 3, 1)]
@test Dates.Day(1) + t1 == [Dates.Date(2009, 1, 2) Dates.Date(2009, 1, 3) Dates.Date(2009, 1, 4); Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4)]
@test Dates.Hour(1) + t3 == [Dates.DateTime(2009, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1), Dates.DateTime(2009, 1, 3, 1)]
@test t1 + Dates.Day(1) == [Dates.Date(2009, 1, 2) Dates.Date(2009, 1, 3) Dates.Date(2009, 1, 4); Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4)]
@test t3 + Dates.Hour(1) == [Dates.DateTime(2009, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1), Dates.DateTime(2009, 1, 3, 1)]
@test t5 + Dates.Hour(1) == [Dates.Time(1, 0, 0) Dates.Time(1, 0, 1) Dates.Time(1, 0, 2); Dates.Time(1, 1, 0) Dates.Time(1, 2, 0) Dates.Time(1, 3, 0)]
@test (Dates.Month(1) + Dates.Day(1)) .+ t1 == [Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4); Dates.Date(2009, 3, 2) Dates.Date(2009, 3, 3) Dates.Date(2009, 3, 4)]
@test (Dates.Hour(1) + Dates.Minute(1)) .+ t3 == [Dates.DateTime(2009, 1, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1, 1), Dates.DateTime(2009, 1, 3, 1, 1)]
@test t1 .+ (Dates.Month(1) + Dates.Day(1)) == [Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4); Dates.Date(2009, 3, 2) Dates.Date(2009, 3, 3) Dates.Date(2009, 3, 4)]
@test t3 .+ (Dates.Hour(1) + Dates.Minute(1)) == [Dates.DateTime(2009, 1, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1, 1), Dates.DateTime(2009, 1, 3, 1, 1)]
@test (Dates.Month(1) + Dates.Day(1)) + t1 == [Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4); Dates.Date(2009, 3, 2) Dates.Date(2009, 3, 3) Dates.Date(2009, 3, 4)]
@test (Dates.Hour(1) + Dates.Minute(1)) + t3 == [Dates.DateTime(2009, 1, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1, 1), Dates.DateTime(2009, 1, 3, 1, 1)]
@test t1 + (Dates.Month(1) + Dates.Day(1)) == [Dates.Date(2009, 2, 2) Dates.Date(2009, 2, 3) Dates.Date(2009, 2, 4); Dates.Date(2009, 3, 2) Dates.Date(2009, 3, 3) Dates.Date(2009, 3, 4)]
@test t3 + (Dates.Hour(1) + Dates.Minute(1)) == [Dates.DateTime(2009, 1, 1, 1, 1), Dates.DateTime(2009, 1, 2, 1, 1), Dates.DateTime(2009, 1, 3, 1, 1)]
@test t1 .- Dates.Day(1) == [Dates.Date(2008, 12, 31) Dates.Date(2009, 1, 1) Dates.Date(2009, 1, 2); Dates.Date(2009, 1, 31) Dates.Date(2009, 2, 1) Dates.Date(2009, 2, 2)]
@test t3 .- Dates.Hour(1) == [Dates.DateTime(2008, 12, 31, 23), Dates.DateTime(2009, 1, 1, 23), Dates.DateTime(2009, 1, 2, 23)]
@test t1 - Dates.Day(1) == [Dates.Date(2008, 12, 31) Dates.Date(2009, 1, 1) Dates.Date(2009, 1, 2); Dates.Date(2009, 1, 31) Dates.Date(2009, 2, 1) Dates.Date(2009, 2, 2)]
@test t3 - Dates.Hour(1) == [Dates.DateTime(2008, 12, 31, 23), Dates.DateTime(2009, 1, 1, 23), Dates.DateTime(2009, 1, 2, 23)]
@test t1 .- (Dates.Month(1) + Dates.Day(1)) == [Dates.Date(2008, 11, 30) Dates.Date(2008, 12, 1) Dates.Date(2008, 12, 2); Dates.Date(2008, 12, 31) Dates.Date(2009, 1, 1) Dates.Date(2009, 1, 2)]
@test t3 .- (Dates.Hour(1) + Dates.Minute(1)) == [Dates.DateTime(2008, 12, 31, 22, 59), Dates.DateTime(2009, 1, 1, 22, 59), Dates.DateTime(2009, 1, 2, 22, 59)]
@test t1 - (Dates.Month(1) + Dates.Day(1)) == [Dates.Date(2008, 11, 30) Dates.Date(2008, 12, 1) Dates.Date(2008, 12, 2); Dates.Date(2008, 12, 31) Dates.Date(2009, 1, 1) Dates.Date(2009, 1, 2)]
@test t3 - (Dates.Hour(1) + Dates.Minute(1)) == [Dates.DateTime(2008, 12, 31, 22, 59), Dates.DateTime(2009, 1, 1, 22, 59), Dates.DateTime(2009, 1, 2, 22, 59)]
# Array{TimeType}, Array{TimeType}
@test t2 - t1 == [Dates.Day(1) Dates.Day(31) Dates.Day(365); Dates.Day(365) Dates.Day(28) Dates.Day(1)]
@test t4 - t3 == [Dates.Millisecond(1000), Dates.Millisecond(60000), Dates.Millisecond(3600000)]
@test (Dates.Date(2009, 1, 1):Dates.Week(1):Dates.Date(2009, 1, 21)) - (Dates.Date(2009, 1, 1):Dates.Day(1):Dates.Date(2009, 1, 3)) == [Dates.Day(0), Dates.Day(6), Dates.Day(12)]
@test (Dates.DateTime(2009, 1, 1, 1, 1, 1):Dates.Second(1):Dates.DateTime(2009, 1, 1, 1, 1, 3)) - (Dates.DateTime(2009, 1, 1, 1, 1):Dates.Second(1):Dates.DateTime(2009, 1, 1, 1, 1, 2)) == [Dates.Second(1), Dates.Second(1), Dates.Second(1)]
# ensure commutative subtraction methods are not defined, #20205
@test_throws MethodError Dates.Day(1) .- t1
@test_throws MethodError Dates.Hour(1) .- t3
@test_throws MethodError Dates.Day(1) - t1
@test_throws MethodError Dates.Hour(1) - t3
@test_throws MethodError (Dates.Month(1) + Dates.Day(1)) .- t1
@test_throws MethodError (Dates.Hour(1) + Dates.Minute(1)) .- t3
@test_throws MethodError (Dates.Month(1) + Dates.Day(1)) - t1
@test_throws MethodError (Dates.Hour(1) + Dates.Minute(1)) - t3