tests/testthat/test-frequency.R

test_that("sampling_frequency detects correct periods", {
  period <- sampling_frequency(seq(as.Date("2010-01-01"), as.Date("2010-01-10"), by="1 day"))
  expect_equal(as.character(period), "days")
  expect_equal(attr(period, "date_class"), "Date")

  period <- sampling_frequency(seq(as.Date("2010-01-01"), as.Date("2010-01-29"), by="1 week"))
  expect_equal(as.character(period), "weeks")
  expect_equal(attr(period, "date_class"), "Date")

  period <- sampling_frequency(seq(as.Date("2010-01-01"), as.Date("2011-01-01"), by="1 month"))
  expect_equal(as.character(period), "months")
  expect_equal(attr(period, "date_class"), "Date")

  period <- sampling_frequency(seq(as.Date("2000-01-01"), as.Date("2020-01-01"), by="1 year"))
  expect_equal(as.character(period), "years")
  expect_equal(attr(period, "date_class"), "Date")
})


test_that("sampling_frequency detects correct sub-daily periods", {
  period <- sampling_frequency(seq(as.POSIXct("2010-01-01 12:00:00"),
                                   as.POSIXct("2010-01-01 18:00:00"), by="1 hour"))
  expect_equal(as.character(period), "1 hours")
  expect_equal(attr(period, "date_class"), "POSIXct")

  period <- sampling_frequency(seq(as.POSIXct("2010-01-01 12:00:00"),
                                   as.POSIXct("2010-01-01 12:30:00"), by="15 mins"))
  expect_equal(as.character(period), "15 mins")
  expect_equal(attr(period, "date_class"), "POSIXct")

  period <- sampling_frequency(seq(as.POSIXct("2010-01-01 12:00:00"),
                                   as.POSIXct("2010-01-01 12:00:10"), by="10 secs"))
  expect_equal(as.character(period), "10 secs")
  expect_equal(attr(period, "date_class"), "POSIXct")
})




test_that("sampling_sequence returns correct proportions", {
  expect_equal(as.numeric(sampling_sequence("days")), c(NA, NA, NA, 1, 7, 30.4167, 365.25))
  expect_equal(as.numeric(sampling_sequence("weeks")), c(NA, NA, NA, NA, 1, 4.34524, 52.1429))
  expect_equal(as.numeric(sampling_sequence("months")), c(NA, NA, NA, NA, NA, 1, 12))
  expect_equal(as.numeric(sampling_sequence("years")), c(NA, NA, NA, NA, NA, NA, 1))
})

test_that("sampling_sequence handles sub-daily periods correctly", {
  expect_equal(as.numeric(sampling_sequence("1 hours")), c(NA, NA, 1, 24, 168, 730.001, 8760))
  expect_equal(as.numeric(sampling_sequence("15 mins")), c(NA, 1, 60, 1440, 10080, 43800, 525600) / 15)
  expect_equal(as.numeric(sampling_sequence("10 secs")), c(1, 60, 3600, 86400, 604800, 2.628e6, 3.154e7) / 10)
})

Try the tsaux package in your browser

Any scripts or data that you put into this service are public.

tsaux documentation built on April 4, 2025, 3:08 a.m.