context("bizdays with default calendar")
test_that("bizdays using default calendar", {
# The default Calendar has no holidays and weekends as non-working days
# saturday and sunday
expect_equal(bizdays("2013-01-02", "2013-01-03"), 1)
expect_equal(bizdays(as.Date("2013-01-02"), "2013-01-03"), 1)
expect_equal(bizdays(as.Date("2013-01-02"), as.Date("2013-01-03")), 1)
expect_error(bizdays("2013-31-02", "2013-01-03"))
})
test_that("it should pass Date sequences to bizdays", {
expect_equal(bizdays(c("2013-01-02", "2013-01-03"), "2013-01-03"), c(1, 0))
})
test_that("it should bizdays a set of dates", {
dates.from <- seq(as.Date("2013-01-01"), as.Date("2013-01-05"), by = "day")
dates.to <- dates.from + 5
expect_equal(bizdays(dates.from, dates.to), c(5, 5, 5, 5, 5))
expect_equal(bizdays("2013-01-02", dates.to), c(4, 5, 6, 7, 8))
expect_equal(bizdays(dates.from, "2013-01-08"), c(7, 6, 5, 4, 3))
expect_error(
bizdays(
c("2013-01-08", "2013-01-08", "2013-01-08"),
c("2013-01-08", "2013-01-08")
),
"from's length must be multiple of to's length and vice-versa."
)
})
test_that("it should return negative bizdays", {
cal <- calendars()[["Brazil/ANBIMA"]]
cal <- Calendar_(cal$holidays, weekdays = c("saturday", "sunday"))
expect_equal(bizdays("2014-07-12", "2013-07-12", cal), -251)
expect_equal(
bizdays(
c("2013-08-21", "2013-01-31", "2013-01-01"),
c("2013-08-24", "2013-01-01", "2014-01-01"), cal
),
c(2, -21, 252)
)
expect_equal(
bizdays(
c("2013-08-21", "2013-01-31", "2013-01-01"),
c(NA, "2013-01-01", "2014-01-01"), cal
),
c(NA, -21, 252)
)
cal <- create.calendar(
name = "test_neg_bizdays",
weekdays = c("saturday", "sunday"),
adjust.from = adjust.none, adjust.to = adjust.none
)
expect_equal(
bizdays(Sys.Date(), Sys.Date() + c(2, -1, 1, 1), "actual"),
c(2, -1, 1, 1)
)
})
test_that("it should check consistency in bizdays", {
cal <- create.calendar(
name = "test_consistency",
weekdays = c("saturday", "sunday"),
adjust.from = adjust.none, adjust.to = adjust.none
)
expect_equal(bizdays("2013-06-22", "2013-06-23", cal), 0)
expect_equal(bizdays("2013-06-23", "2013-06-22", cal), 0)
hol <- c("2024-01-01", "2024-03-29", "2024-04-01", "2024-05-06", "2024-05-27",
"2024-08-26", "2024-12-25", "2024-12-26")
cal <- bizdays::create.calendar(name = "nursery_calendar",
holidays = hol,
weekdays = c("monday", "tuesday", "wednesday",
"saturday", "sunday"),
start.date = as.Date("2024-01-01"),
end.date = as.Date("2024-12-31"),
financial = FALSE)
expect_equal(bizdays("2024-12-23", "2024-12-29", cal), 1)
expect_equal(bizdays("2024-12-29", "2024-12-23", cal), -1)
expect_true(is.bizday("2024-12-27", cal))
})
test_that("it should compute bizdays using double index approach", {
create.calendar(
name = "example1", weekdays = c("saturday", "sunday"),
start.date = "2017-01-24", end.date = "2017-01-30",
holidays = "2017-01-25"
)
expect_equal(
bizdays("2017-01-24", "2017-01-25", "example1"),
bizdays("2017-01-25", "2017-01-26", "example1")
)
})
test_that("is should compute bizdays for one single day", {
create.calendar("actual-no-fin", financial = FALSE)
expect_equal(bizdays("2021-12-30", "2021-12-30", "actual"), 0)
expect_equal(bizdays("2021-12-30", "2021-12-30", "actual-no-fin"), 1)
})
test_that("is should compute negative bizdays for non finacial calendars", {
create.calendar("actual-no-fin", financial = FALSE)
expect_equal(
-bizdays("2014-07-12", "2013-07-12", "actual-no-fin"),
bizdays("2013-07-12", "2014-07-12", "actual-no-fin")
)
})
context("handling NA values")
test_that("it should bizdays NA values", {
expect_equal(
bizdays("2013-01-01", c("2013-12-31", "2014-12-31", NA)),
c(364, 729, NA)
)
expect_equal(
adjust.next(c("2013-12-31", "2014-12-31", NA)),
as.Date(c("2013-12-31", "2014-12-31", NA))
)
expect_equal(
adjust.previous(c("2013-12-31", "2014-12-31", NA)),
as.Date(c("2013-12-31", "2014-12-31", NA))
)
expect_equal(is.bizday(c("2013-12-31", "2014-12-31", NA)), c(TRUE, TRUE, NA))
})
test_that("it should bizdays all NA values", {
expect_equal(bizdays("2013-01-01", NA), NA)
expect_equal(bizdays(c("2013-01-01", "2013-02-01"), NA), c(NA, NA))
expect_equal(bizdays("2013-01-01", c(NA, NA)), c(NA, NA))
})
context("bizdays and current days equivalence")
test_that("it should compute the business days equivalent to current days", {
cal <- calendars()[["Brazil/ANBIMA"]]
expect_equal(bizdayse("2013-08-21", 3, cal), 2)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.