tests/testthat/test-period.R

test_that("strextract grabs the right text", {
  expect_identical(strextract("^[0-9]+", "23 weeks"), "23")
  expect_identical(strextract("^[0-9]+", "2weeks"), "2")
  expect_identical(strextract("^[0-9]+", "2weeks4"), "2")
  expect_identical(strextract("^[0-9]+", "weeks2"), character())

  expect_identical(strextract("[a-zA-Z]+$", "23 weeks"), "weeks")
  expect_identical(strextract("[a-zA-Z]+$", "2weeks"), "weeks")
  expect_identical(strextract("[a-zA-Z]+$", "2weeks4"), character())
  expect_identical(strextract("[a-zA-Z]+$", "weeks2"), character())
  expect_identical(strextract("[a-zA-Z]+$", "weeks2days"), "days")
})

test_that("period returns scalar integer period", {
  expect_error(new_period(c(1, 3)))
  expect_error(new_period(1))
  expect_error(new_period("1"))
  expect_error(new_period("2weeks4"))
  expect_error(new_period("weeks4"))
  expect_error(new_period("3 seconds"))
  expect_identical(vctrs::field(new_period("23 weeks"), "day"), 23L * 7L)
  expect_identical(vctrs::field(new_period("2weeks"), "day"), 2L * 7L)
  expect_identical(vctrs::field(new_period("4 d"), "day"), 4L)
  expect_identical(vctrs::field(new_period("4 D"), "day"), 4L)
  expect_identical(vctrs::field(new_period("4 M"), "day"), 0L)
  expect_identical(vctrs::field(new_period("4 M"), "month"), 4L)
  expect_identical(vctrs::field(new_period("4 Q"), "month"), 12L)
})

Try the rtestim package in your browser

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

rtestim documentation built on Aug. 8, 2025, 6:21 p.m.