test_that("seconds accessor extracts correct second", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(second(poslt), 59)
expect_equal(second(posct), 59)
expect_equal(second(date), 0)
})
test_that("minutes accessor extracts correct minute", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(minute(poslt), 45)
expect_equal(minute(posct), 45)
expect_equal(minute(date), 0)
})
test_that("hours accessor extracts correct hour", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(hour(poslt), 13)
expect_equal(hour(posct), 13)
expect_equal(hour(date), 0)
})
test_that("days accessors extract correct days", {
poslt <- as.POSIXlt("2010-02-03 13:45:59", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(day(poslt), 3)
expect_equal(day(posct), 3)
expect_equal(day(date), 3)
expect_equal(mday(poslt), 3)
expect_equal(mday(posct), 3)
expect_equal(mday(date), 3)
expect_equal(yday(poslt), 34)
expect_equal(yday(posct), 34)
expect_equal(yday(date), 34)
expect_equal(wday(poslt), 4)
expect_equal(wday(posct), 4)
expect_equal(wday(date), 4)
expect_equal(qday(poslt), 34)
expect_equal(qday(poslt), 34)
expect_equal(qday(poslt), 34)
})
test_that("empty argument date() works", {
expect_silent(date())
})
test_that("day accessors work on character inputs", {
x <- "2017-05-07 GMT"
d <- ymd(x)
expect_equal(wday(x), wday(d))
expect_equal(mday(x), mday(d))
expect_equal(qday(x), qday(d))
expect_equal(yday(x), yday(d))
})
test_that("wday works with various start values", {
days <- days2 <-
ymd(c(
"2005-01-01", "2005-01-02", "2005-12-31", "2007-01-01", "2007-12-30",
"2007-12-31", "2008-01-01", "2008-12-28", "2008-12-29", "2008-12-30",
"2008-12-31", "2009-01-01", "2009-12-31", "2010-01-01", "2010-01-02"
))
expect_equal(
as.character(wday(days, label = T, week_start = 1)),
as.character(wday(days, label = T, week_start = 3))
)
expect_equal(
as.character(wday(days, label = T, week_start = 1)),
as.character(wday(days, label = T, week_start = 7))
)
expect_equal(as.character(wday(days, label = T, locale = "C"))[1], "Sat")
expect_equal(as.character(wday(days, label = T, abbr = FALSE, locale = "C"))[1], "Saturday")
expect_equal(
wday(days, label = F, week_start = 1),
c(6, 7, 6, 1, 7, 1, 2, 7, 1, 2, 3, 4, 4, 5, 6)
)
expect_equal(
wday(days, label = F, week_start = 7),
c(7, 1, 7, 2, 1, 2, 3, 1, 2, 3, 4, 5, 5, 6, 7)
)
set.seed(1000)
days2 <- days
new_days <- sample(1:7, length(days2), replace = T)
wday(days2, week_start = 1) <- new_days
expect_equal(wday(days2, week_start = 1), new_days)
wday(days2, week_start = 7) <- new_days
expect_equal(wday(days2, week_start = 7), new_days)
wday(days2, week_start = 3) <- new_days
expect_equal(wday(days2, week_start = 3), new_days)
})
test_that("weeks accessor extracts correct week", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(week(poslt), 5)
expect_equal(week(posct), 5)
expect_equal(week(date), 5)
})
test_that("isoweek accessor extracts correct ISO8601 week", {
poslt <- as.POSIXlt("2010-01-01 13:45:59", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(isoweek(poslt), 53)
expect_equal(isoweek(posct), 53)
expect_equal(isoweek(date), 53)
df <- read.table(textConnection(
"Sat 1 Jan 2005 2005-01-01 2004-W53-6
Sun 2 Jan 2005 2005-01-02 2004-W53-7
Sat 31 Dec 2005 2005-12-31 2005-W52-6
Mon 1 Jan 2007 2007-01-01 2007-W01-1 Both years 2007 start with the same day.
Sun 30 Dec 2007 2007-12-30 2007-W52-7
Mon 31 Dec 2007 2007-12-31 2008-W01-1
Tue 1 Jan 2008 2008-01-01 2008-W01-2 Gregorian year 2008 is a leap year. ISO year 2008 is 2 days shorter: 1 day longer at the start, 3 days shorter at the end.
Sun 28 Dec 2008 2008-12-28 2008-W52-7 ISO year 2009 begins three days before the end of Gregorian 2008.
Mon 29 Dec 2008 2008-12-29 2009-W01-1
Tue 30 Dec 2008 2008-12-30 2009-W01-2
Wed 31 Dec 2008 2008-12-31 2009-W01-3
Thu 1 Jan 2009 2009-01-01 2009-W01-4
Thu 31 Dec 2009 2009-12-31 2009-W53-4 ISO year 2009 has 53 weeks and ends three days into Gregorian year 2010.
Fri 1 Jan 2010 2010-01-01 2009-W53-5
Sat 2 Jan 2010 2010-01-02 2009-W53-6
Sun 3 Jan 2010 2010-01-03 2009-W53-7"
),
sep = "\t", fill = T, stringsAsFactors = F, header = F
)
names(df) <- c("Gregorian", "ymd", "iso", "note")
df <- within(df, {
ymd <- ymd(ymd)
isoweek <- as.numeric(gsub(".*W([0-9]+).*", "\\1", iso))
isoyear <- as.numeric(gsub("^([0-9]+).*", "\\1", iso))
})
expect_equal(isoweek(df$ymd), df$isoweek)
expect_equal(isoyear(df$ymd), df$isoyear)
})
test_that("epiweek computes dates correctly", {
df <- read.table(textConnection(
"ew date year
1 12/30/07 8
2 01/06/08 8
3 01/13/08 8
52 01/02/10 9
1 01/03/10 10
2 01/10/10 10
3 01/17/10 10
4 01/24/10 10
5 01/31/10 10
1 01/04/09 9
2 01/11/09 9
3 01/18/09 9
50 12/13/09 9
51 12/20/09 9
52 12/27/09 9
50 12/12/10 10
51 12/19/10 10
52 12/26/10 10
50 12/07/08 8
51 12/14/08 8
52 12/21/08 8"
),
header = T, sep = "\t", stringsAsFactors = F
)
date <- mdy(df$date)
expect_equal(epiweek(date), df$ew)
expect_equal(epiyear(date), df$year + 2000)
})
test_that("isoweek returns correct value for non-UTC time zone (#311)", {
cest <- ymd_hms("2015-04-14 16:45:00", tz = "Europe/Copenhagen")
utc <- ymd_hms("2015-04-14 16:45:00", tz = "UTC")
expect_equal(isoweek(cest), 16L)
expect_equal(isoweek(utc), 16L)
})
test_that("months accessor extracts correct month", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(month(poslt), 2)
expect_equal(month(posct), 2)
expect_equal(month(date), 2)
expect_equal(as.character(month(date, label = TRUE, locale = "C")), "Feb")
expect_equal(
as.character(month(date, label = TRUE, abbr = FALSE, locale = "C")),
"February"
)
})
test_that("month() on numeric input doesn't accept invalid values", {
expect_error(month(0:13))
expect_error(month(c(0:13, NA)))
expect_error(month(0))
expect_error(month(0), label = TRUE)
expect_equal(month(1:12), 1:12)
expect_equal(month(c(1:12, NA)), c(1:12, NA))
expect_equal(month(as.double(1:12)), 1:12)
})
test_that("quarters accessor extracts correct quarter", {
posct <- ymd_hms("2010-11-03 13:45:59")
poslt <- as.POSIXlt(posct)
date <- as.Date(poslt)
expect_equal(quarter(posct), 4)
expect_equal(quarter(posct, type = "quarter"), 4)
expect_equal(quarter(posct, type = "year.quarter"), 2010.4)
expect_equal(quarter(posct, type = "date_first"), ymd("2010-10-01"))
expect_equal(quarter(posct, type = "date_last"), ymd("2010-12-31"))
expect_equal(quarter(posct, type = "year_start/end"), "2009/10 Q4")
expect_equal(quarter(posct, with_year = TRUE), 2010.4)
expect_equal(quarter(posct, fiscal_start = 11), 1)
expect_equal(quarter(posct, fiscal_start = -2), 1)
expect_equal(quarter(posct, type = "year.quarter", fiscal_start = -2), 2011.1)
expect_equal(quarter(posct, type = "year.quarter", fiscal_start = 11), 2011.1)
expect_equal(quarter(posct, type = "date_first", fiscal_start = 11), ymd("2010-11-01"))
expect_equal(quarter(posct, type = "date_last", fiscal_start = 11), ymd("2011-01-31"))
expect_equal(quarter(poslt), 4)
expect_equal(quarter(poslt, type = "quarter"), 4)
expect_equal(quarter(poslt, type = "year.quarter"), 2010.4)
expect_equal(quarter(poslt, type = "date_first"), ymd("2010-10-01"))
expect_equal(quarter(poslt, type = "date_last"), ymd("2010-12-31"))
expect_equal(quarter(poslt, type = "year_start/end"), "2009/10 Q4")
expect_equal(quarter(poslt, with_year = TRUE), 2010.4)
expect_equal(quarter(poslt, fiscal_start = 11), 1)
expect_equal(quarter(poslt, fiscal_start = -2), 1)
expect_equal(quarter(poslt, type = "year.quarter", fiscal_start = -2), 2011.1)
expect_equal(quarter(poslt, type = "year.quarter", fiscal_start = 11), 2011.1)
expect_equal(quarter(poslt, type = "date_first", fiscal_start = 11), ymd("2010-11-01"))
expect_equal(quarter(poslt, type = "date_last", fiscal_start = 11), ymd("2011-01-31"))
expect_equal(quarter(date), 4)
expect_equal(quarter(date, type = "quarter"), 4)
expect_equal(quarter(date, type = "year.quarter"), 2010.4)
expect_equal(quarter(date, type = "date_first"), ymd("2010-10-01"))
expect_equal(quarter(date, type = "date_last"), ymd("2010-12-31"))
expect_equal(quarter(date, type = "year_start/end"), "2009/10 Q4")
expect_equal(quarter(date, with_year = TRUE), 2010.4)
expect_equal(quarter(date, fiscal_start = 11), 1)
expect_equal(quarter(date, fiscal_start = -2), 1)
expect_equal(quarter(date, type = "year.quarter", fiscal_start = -2), 2011.1)
expect_equal(quarter(date, type = "year.quarter", fiscal_start = 11), 2011.1)
expect_equal(quarter(date, type = "date_first", fiscal_start = 11), ymd("2010-11-01"))
expect_equal(quarter(date, type = "date_last", fiscal_start = 11), ymd("2011-01-31"))
x <- ymd(c("2012-03-01", "2012-03-26", "2012-05-04", "2012-09-23", "2012-12-31"))
expect_equal(quarter(x, FALSE, fiscal_start = 11), c(2, 2, 3, 4, 1))
expect_equal(quarter(x, fiscal_start = 11, FALSE), c(2, 2, 3, 4, 1))
expect_equal(quarter(x, TRUE, fiscal_start = 9), c(2012.3, 2012.3, 2012.3, 2013.1, 2013.2))
expect_equal(quarter(x, TRUE, fiscal_start = 9), c(2012.3, 2012.3, 2012.3, 2013.1, 2013.2))
expect_equal(
quarter(x, type = "quarter", fiscal_start = 4),
c(4, 4, 1, 2, 3)
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 4),
c(2012.4, 2012.4, 2013.1, 2013.2, 2013.3)
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 11),
c(2012.2, 2012.2, 2012.3, 2012.4, 2013.1)
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 11),
c(2012.2, 2012.2, 2012.3, 2012.4, 2013.1)
)
expect_equal(
quarter(x, type = "year_start/end", fiscal_start = 11),
c("2011/12 Q2", "2011/12 Q2", "2011/12 Q3", "2011/12 Q4", "2012/13 Q1")
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 4),
c(2012.4, 2012.4, 2013.1, 2013.2, 2013.3)
)
expect_equal(
quarter(x, type = "year_start/end", fiscal_start = 4),
c("2011/12 Q4", "2011/12 Q4", "2012/13 Q1", "2012/13 Q2", "2012/13 Q3")
)
expect_equal(
quarter(x, type = "date_first", fiscal_start = 11),
ymd(c("2012-02-01", "2012-02-01", "2012-05-01", "2012-08-01", "2012-11-01"))
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 4),
ymd(c("2012-03-31", "2012-03-31", "2012-06-30", "2012-09-30", "2012-12-31"))
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 11),
ymd(c("2012-04-30", "2012-04-30", "2012-07-31", "2012-10-31", "2013-01-31"))
)
x <- ymd("2010-01-01") + months(0:11)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 6),
c(
2010.3, 2010.3, 2010.4, 2010.4, 2010.4, 2011.1, 2011.1, 2011.1,
2011.2, 2011.2, 2011.2, 2011.3
)
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 6),
quarter(x, type = "year.quarter", fiscal_start = -6)
)
expect_equal(
quarter(x, type = "date_first", fiscal_start = 6),
ymd(c(
"2009-12-01", "2009-12-01", "2010-03-01", "2010-03-01",
"2010-03-01", "2010-06-01", "2010-06-01", "2010-06-01",
"2010-09-01", "2010-09-01", "2010-09-01", "2010-12-01"
))
)
expect_equal(
quarter(x, type = "date_first", fiscal_start = 6),
quarter(x, type = "date_first", fiscal_start = -6)
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 6),
ymd(c(
"2010-02-28", "2010-02-28", "2010-05-31", "2010-05-31",
"2010-05-31", "2010-08-31", "2010-08-31", "2010-08-31",
"2010-11-30", "2010-11-30", "2010-11-30", "2011-02-28"
))
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 6),
quarter(x, type = "date_last", fiscal_start = -6)
)
x <- ymd("2010-01-01") + months(seq(0, 23, by = 3))
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 10),
c(2010.2, 2010.3, 2010.4, 2011.1, 2011.2, 2011.3, 2011.4, 2012.1)
)
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = -2),
quarter(x, type = "year.quarter", fiscal_start = 10)
)
expect_equal(
quarter(x, type = "date_first", fiscal_start = 10),
ymd(c(
"2010-01-01", "2010-04-01", "2010-07-01", "2010-10-01",
"2011-01-01", "2011-04-01", "2011-07-01", "2011-10-01"
))
)
expect_equal(
quarter(x, type = "date_first", fiscal_start = -2),
quarter(x, type = "date_first", fiscal_start = 10)
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 10),
ymd(c(
"2010-03-31", "2010-06-30", "2010-09-30", "2010-12-31",
"2011-03-31", "2011-06-30", "2011-09-30", "2011-12-31"
))
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = -2),
quarter(x, type = "date_last", fiscal_start = 10)
)
x <- ymd(c(
"2018-07-15", "2018-12-27", "2019-01-01",
"2019-06-01", "2019-07-01", "2019-10-16",
"2019-12-31", "2020-01-01", "2020-06-30",
"2020-07-01", "2020-11-09", "2021-01-19",
"2021-06-30", "2021-07-01"
))
expect_equal(
quarter(x, type = "year.quarter", fiscal_start = 7),
c(
2019.1, 2019.2, 2019.3, 2019.4, 2020.1, 2020.2, 2020.2, 2020.3,
2020.4, 2021.1, 2021.2, 2021.3, 2021.4, 2022.1
)
)
out <- quarter(x, type = "date_first", fiscal_start = 7)
expect_s3_class(out, "Date")
expect_equal(
out,
ymd(c(
"2018-07-01", "2018-10-01", "2019-01-01", "2019-04-01",
"2019-07-01", "2019-10-01", "2019-10-01", "2020-01-01",
"2020-04-01", "2020-07-01", "2020-10-01", "2021-01-01",
"2021-04-01", "2021-07-01"
))
)
expect_equal(
quarter(x, type = "date_last", fiscal_start = 7),
ymd(c(
"2018-09-30", "2018-12-31", "2019-03-31", "2019-06-30",
"2019-09-30", "2019-12-31", "2019-12-31", "2020-03-31",
"2020-06-30", "2020-09-30", "2020-12-31", "2021-03-31",
"2021-06-30", "2021-09-30"
))
)
})
test_that("years accessor extracts correct year", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(year(poslt), 2010)
expect_equal(year(posct), 2010)
expect_equal(year(date), 2010)
})
test_that("isoyear accessor extracts correct ISO8601 year", {
poslt <- c(
as.POSIXlt("2014-12-28 13:45:59", tz = "UTC", format = "%Y-%m-%d %H:%M:%S"),
as.POSIXlt("2014-12-29 01:12:08", tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(isoyear(poslt), c(2014, 2015))
expect_equal(isoyear(posct), c(2014, 2015))
expect_equal(isoyear(date), c(2014, 2015))
})
test_that("date accessor extracts correct date", {
poslt <- as.POSIXlt("2010-02-03 23:45:59",
tz = "Etc/GMT+8", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(date(poslt), as.Date("2010-02-03"))
expect_equal(date(posct), as.Date("2010-02-03"))
expect_equal(date(date), as.Date("2010-02-03"))
})
test_that("timezone accessor extracts correct timezone", {
poslt <- as.POSIXlt("2010-02-03 13:45:59",
tz = "UTC", format
= "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_match(tz(poslt), "UTC")
expect_match(tz(posct), "UTC")
expect_match(tz(date), "UTC")
})
test_that("accessors handle vectors", {
poslt <- as.POSIXlt(c(
"2001-01-01 01:01:01",
"2002-02-02 02:02:02", "2003-03-03 03:03:03"
),
tz = "UTC", format = "%Y-%m-%d %H:%M:%S"
)
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
expect_equal(second(poslt), c(1, 2, 3))
expect_equal(second(posct), c(1, 2, 3))
expect_equal(second(date), c(0, 0, 0))
expect_equal(minute(poslt), c(1, 2, 3))
expect_equal(minute(posct), c(1, 2, 3))
expect_equal(minute(date), c(0, 0, 0))
expect_equal(hour(poslt), c(1, 2, 3))
expect_equal(hour(posct), c(1, 2, 3))
expect_equal(hour(date), c(0, 0, 0))
expect_equal(mday(poslt), c(1, 2, 3))
expect_equal(mday(posct), c(1, 2, 3))
expect_equal(mday(date), c(1, 2, 3))
expect_equal(wday(poslt), c(2, 7, 2))
expect_equal(wday(posct), c(2, 7, 2))
expect_equal(wday(date), c(2, 7, 2))
expect_equal(yday(poslt), c(1, 33, 62))
expect_equal(yday(posct), c(1, 33, 62))
expect_equal(yday(date), c(1, 33, 62))
expect_equal(week(poslt), c(1, 5, 9))
expect_equal(week(posct), c(1, 5, 9))
expect_equal(week(date), c(1, 5, 9))
expect_equal(isoweek(poslt), c(1, 5, 10))
expect_equal(isoweek(posct), c(1, 5, 10))
expect_equal(isoweek(date), c(1, 5, 10))
expect_equal(month(poslt), c(1, 2, 3))
expect_equal(month(posct), c(1, 2, 3))
expect_equal(month(date), c(1, 2, 3))
expect_equal(year(poslt), c(2001, 2002, 2003))
expect_equal(year(posct), c(2001, 2002, 2003))
expect_equal(year(date), c(2001, 2002, 2003))
expect_equal(date(poslt), as.Date(c("2001-01-01", "2002-02-02", "2003-03-03")))
expect_equal(date(posct), as.Date(c("2001-01-01", "2002-02-02", "2003-03-03")))
expect_equal(date(date), as.Date(c("2001-01-01", "2002-02-02", "2003-03-03")))
expect_match(tz(poslt), "UTC")
expect_match(tz(posct), "UTC")
expect_match(tz(date), "UTC")
})
test_that("accessors<- handle vectors", {
poslt <- as.POSIXlt(c(
"1999-01-01 00:00:00",
"1999-01-01 00:00:00",
"1999-01-01 00:00:00"
), tz = "UTC", format = "%Y-%m-%d %H:%M:%S")
posct <- as.POSIXct(poslt)
date <- as.Date(poslt)
wday(poslt) <- c(2, 7, 2)
wday(posct) <- c(2, 7, 2)
wday(date) <- c(2, 7, 2)
expect_equal(wday(poslt), c(2, 7, 2))
expect_equal(wday(posct), c(2, 7, 2))
expect_equal(wday(date), c(2, 7, 2))
second(poslt) <- 1:3
second(posct) <- 1:3
second(date) <- 1:3
expect_equal(second(poslt), c(1, 2, 3))
expect_equal(second(posct), c(1, 2, 3))
expect_equal(second(date), c(1, 2, 3))
minute(poslt) <- 1:3
minute(posct) <- 1:3
minute(date) <- 1:3
expect_equal(minute(poslt), c(1, 2, 3))
expect_equal(minute(posct), c(1, 2, 3))
expect_equal(minute(date), c(1, 2, 3))
hour(poslt) <- 1:3
hour(posct) <- 1:3
hour(date) <- 1:3
expect_equal(hour(poslt), c(1, 2, 3))
expect_equal(hour(posct), c(1, 2, 3))
expect_equal(hour(date), c(1, 2, 3))
mday(poslt) <- 1:3
mday(posct) <- 1:3
mday(date) <- 1:3
expect_equal(mday(poslt), c(1, 2, 3))
expect_equal(mday(posct), c(1, 2, 3))
expect_equal(mday(date), c(1, 2, 3))
wday(poslt) <- c(2, 7, 2)
wday(posct) <- c(2, 7, 2)
wday(date) <- c(2, 7, 2)
expect_equal(wday(poslt), c(2, 7, 2))
expect_equal(wday(posct), c(2, 7, 2))
expect_equal(wday(date), c(2, 7, 2))
yday(poslt) <- c(1, 33, 62)
yday(posct) <- c(1, 33, 62)
yday(date) <- c(1, 33, 62)
expect_equal(yday(poslt), c(1, 33, 62))
expect_equal(yday(posct), c(1, 33, 62))
expect_equal(yday(date), c(1, 33, 62))
week(poslt) <- c(1, 5, 9)
week(posct) <- c(1, 5, 9)
week(date) <- c(1, 5, 9)
expect_equal(week(poslt), c(1, 5, 9))
expect_equal(week(posct), c(1, 5, 9))
expect_equal(week(date), c(1, 5, 9))
month(poslt) <- c(1, 2, 3)
month(posct) <- c(1, 2, 3)
month(date) <- c(1, 2, 3)
expect_equal(month(poslt), c(1, 2, 3))
expect_equal(month(posct), c(1, 2, 3))
expect_equal(month(date), c(1, 2, 3))
year(poslt) <- c(2001, 2002, 2003)
year(posct) <- c(2001, 2002, 2003)
year(date) <- c(2001, 2002, 2003)
expect_equal(year(poslt), c(2001, 2002, 2003))
expect_equal(year(posct), c(2001, 2002, 2003))
expect_equal(year(date), c(2001, 2002, 2003))
})
test_that("accessors handle Period objects", {
per <- period(seconds = 1, minutes = 2, hours = 3, days = 4, months = 5, years = 6)
pers <- c(per, per)
expect_equal(second(per), 1)
expect_equal(minute(per), 2)
expect_equal(hour(per), 3)
expect_equal(day(per), 4)
expect_equal(month(per), 5)
expect_equal(year(per), 6)
expect_error(date(per), "date is undefined for Period objects")
expect_equal(second(pers), c(1, 1))
expect_equal(minute(pers), c(2, 2))
expect_equal(hour(pers), c(3, 3))
expect_equal(day(pers), c(4, 4))
expect_equal(month(pers), c(5, 5))
expect_equal(year(pers), c(6, 6))
expect_error(date(pers), "date is undefined for Period objects")
second(per) <- 2
minute(per) <- 3
hour(per) <- 4
day(per) <- 5
month(per) <- 6
year(per) <- 7
expect_equal(per@.Data, 2)
expect_equal(per@minute, 3)
expect_equal(per@hour, 4)
expect_equal(per@day, 5)
expect_equal(per@month, 6)
expect_equal(per@year, 7)
second(pers) <- c(2, 3)
minute(pers) <- c(3, 4)
hour(pers) <- c(4, 5)
day(pers) <- c(5, 6)
month(pers) <- c(6, 7)
year(pers) <- c(7, 8)
expect_equal(pers@.Data, c(2, 3))
expect_equal(pers@minute, c(3, 4))
expect_equal(pers@hour, c(4, 5))
expect_equal(pers@day, c(5, 6))
expect_equal(pers@month, c(6, 7))
expect_equal(pers@year, c(7, 8))
})
test_that(
"days in month works for non leap years",
{
x <- seq(ymd("2011-01-01"), ymd("2011-12-01"), "1 month")
expected <- c(
Jan = 31L, Feb = 28L, Mar = 31L,
Apr = 30L, May = 31L, Jun = 30L,
Jul = 31L, Aug = 31L, Sep = 30L,
Oct = 31L, Nov = 30L, Dec = 31L
)
expect_equal(days_in_month(x), expected)
}
)
test_that(
"days in month works for leap years",
{
x <- seq(ymd("2012-01-01"), ymd("2012-12-01"), "1 month")
expected <- c(
Jan = 31L, Feb = 29L, Mar = 31L,
Apr = 30L, May = 31L, Jun = 30L,
Jul = 31L, Aug = 31L, Sep = 30L,
Oct = 31L, Nov = 30L, Dec = 31L
)
expect_equal(days_in_month(x), expected)
}
)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.