Nothing
test_that("is.timespan works as expected", {
expect_false(is.timespan(234))
expect_false(is.timespan(as.POSIXct("2008-08-03 13:01:59", tz = "UTC")))
expect_false(is.timespan(as.POSIXlt("2008-08-03 13:01:59", tz = "UTC")))
expect_false(is.timespan(Sys.Date()))
expect_true(is.timespan(minutes(1)))
expect_true(is.timespan(dminutes(1)))
expect_true(is.timespan(interval(
as.POSIXct("2008-08-03 13:01:59", tz = "UTC"),
as.POSIXct("2009-08-03 13:01:59", tz = "UTC")
)))
})
test_that("time_length works as expected", {
expect_equal(
time_length(period(1, "day")), # period
86400
)
expect_equal(
time_length(ymd("2014-12-15") - ymd("2014-11-30"), "day"), # difftime
15
)
expect_equal(
time_length(ymd("2014-12-15") - ymd("2014-11-30"), "week"),
15 / 7
)
expect_equal(
time_length(duration(3, "months"), "month"), # duration
3
)
expect_equal(
time_length(interval(ymd("2014-11-30"), ymd("2014-12-15")), "weeks"), # interval
15 / 7
)
expect_lt(
time_length(interval(ymd("1900-01-01"), ymd("1999-12-31")), "years"),
100
)
expect_lt(
time_length(as.duration(interval(ymd("1900-01-01"), ymd("1999-12-31"))), "years"),
100
)
expect_equal(
-time_length(interval(ymd("1900-01-01"), ymd("2000-01-01")), "days"),
time_length(int_flip(interval(ymd("1900-01-01"), ymd("2000-01-01"))), "days")
)
})
test_that("time_length works with intervals on DST", {
times <- ymd_hms(c("2019-03-29 02:03:00", "2019-03-29 02:10:00"), tz = "Europe/Paris")
expect_equal(time_length(interval(times[[1]], times[[2]]), "years"), 1.32818e-05)
})
test_that("time_length works with intervals on DST (2)", {
skip("FIXME: time_length should be same on sides of DST?")
expect_equal(
time_length(interval(times[[1]], times[[2]]), "years"),
time_length(interval(times2[[1]], times2[[2]]), "years"))
expect_equal(
time_length(interval(times[[1]], times[[2]]), "years"),
time_length(interval(times3[[1]], times3[[2]]), "years"))
})
test_that("time_length works with missing intervals", {
expect_equal(time_length(interval(NA, ymd("2016-01-01")), unit = "year"), NA_real_)
})
test_that("time_length works with birth date 29 Feb ", {
expect_equal(
round(time_length(interval(ymd("1992-02-29"), ymd("1999-02-28")), "years"), 4),
6.9973
)
expect_equal(
round(time_length(interval(ymd("1992-02-29"), ymd("1999-03-31")), "years"), 4),
7.0822
)
expect_equal(
time_length(interval(ymd("1992-02-29"), ymd("1999-03-01")), "years"),
7
)
expect_equal(
round(time_length(interval(ymd("1992-02-29"), ymd("2000-03-01")), "years"), 4),
8.0027
)
expect_equal(
time_length(interval(ymd("1992-02-29"), ymd("2000-02-29")), "years"),
8
)
expect_gt(
time_length(interval(ymd_hms("1992-02-29 12:00:00"), ymd_hms("1999-03-01 05:00:00")), "years"),
7
)
})
test_that("time_length works with negative interals", {
expect_equal(
-time_length(interval(ymd("1992-02-28"), ymd("2000-01-01")), "days"),
time_length(int_flip(interval(ymd("1992-02-28"), ymd("2000-01-01"))), "days")
)
expect_equal(
-time_length(interval(ymd("1992-02-28"), ymd("2000-03-01")), "days"),
time_length(int_flip(interval(ymd("1992-02-28"), ymd("2000-03-01"))), "days")
)
## If both ends include leap years Febs, the lenths are not identical
int <- interval(ymd("1992-02-28"), ymd("2000-03-01"))
expect_equal(-time_length(int, "years"), time_length(int_flip(int), "years"))
## or if both ends don't include leap years Febs, the lenths are identical
int <- interval(ymd("1994-02-28"), ymd("2002-03-01"))
expect_equal(-time_length(int, "years"), time_length(int_flip(int), "years"))
## ... otherwise not
int <- interval(ymd("1992-02-28"), ymd("2002-01-01"))
expect_gt(-time_length(int, "years"), time_length(int_flip(int), "years"))
})
test_that("time_length handles vectors", {
expect_equal(
time_length(days(1:3), unit = "days"),
1:3
)
expect_equal(
time_length(as.interval(days(1:3), start = today()), unit = "days"),
1:3
)
expect_equal(
time_length(as.interval(days(c(1:3, NA)), start = today()), unit = "days"),
c(1:3, NA)
)
ints <- new("Interval",
.Data = c(
6363040, 1646253613, 159312603, -510371200, -381983229, 1369742727,
-190254638, -1118394043, -2091814107
),
start = structure(c(
64156663, 326788049, 462064351, 909110414, 778538359,
395846311, 1415640365, 1697694335, 2193040469
),
class = c("POSIXct", "POSIXt"), tzone = "UTC"
),
tzone = "UTC"
)
expect_equal(
round(time_length(ints, "years"), 5),
c(
0.20122, 52.16674, 5.04903, -16.17281, -12.10439, 43.40412,
-6.03011, -35.44092, -66.28715
)
)
expect_equal(
round(time_length(ints[ints > 0], "years"), 5),
c(0.20122, 52.16674, 5.04903, 43.40412)
)
expect_equal(
round(time_length(ints[ints < 0], "years"), 5),
c(-16.17281, -12.10439, -6.03011, -35.44092, -66.28715)
)
expect_equal(
round(time_length(ints, "month"), 5),
c(
2.4402, 625.99552, 60.57729, -194.06691, -145.2291, 520.81679,
-72.35552, -425.27918, -795.43557
)
)
})
test_that("time_length handles 0 length intervals", {
date <- ymd_hms("2014-12-30 20:35:13")
int <- interval(c(date, date), c(date, date))
expect_equal(time_length(int), c(0, 0))
expect_equal(time_length(int, "years"), c(0, 0))
expect_equal(time_length(int, "months"), c(0, 0))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.