tests/testthat/test-derive_var_trtemfl.R

expected <- tibble::tribble(
  ~USUBJID, ~ASTDTM,            ~AENDTM,            ~AEITOXGR, ~AETOXGR, ~TRTEMFL, ~TRTEM2FL, ~TRTEM3FL, # nolint
  # before treatment
  "1",      "2021-12-13T20:15", "2021-12-15T12:45", "1",       "1",      NA,       NA,        NA,
  "1",      "2021-12-14T20:15", "2021-12-14T22:00", "1",       "3",      NA,       NA,        NA,
  # starting before treatment and ending during treatment
  "1",      "2021-12-30T20:00", "2022-01-14T11:00", "1",       "3",      NA,       "Y",       "Y",
  "1",      "2021-12-31T20:15", "2022-01-01T01:23", "1",       "1",      NA,       NA,        NA,
  # starting during treatment
  "1",      "2022-01-01T12:00", "2022-01-02T23:25", "3",       "4",      "Y",      "Y",       "Y",
  # after treatment
  "1",      "2022-05-10T11:00", "2022-05-10T13:05", "2",       "2",      "Y",      "Y",       "Y",
  "1",      "2022-05-10T12:00", "2022-05-10T13:05", "2",       "2",      "Y",      "Y",       NA,
  "1",      "2022-05-11T11:00", "2022-05-11T13:05", "2",       "2",      "Y",      NA,        NA,
  # missing dates
  "1",      "",                 "",                 "3",       "4",      "Y",      "Y",       "Y",
  "1",      "2021-12-30T09:00", "",                 "3",       "4",      NA,       "Y",       "Y",
  "1",      "2021-12-30T11:00", "",                 "3",       "3",      NA,       NA,        NA,
  "1",      "",                 "2022-01-04T09:00", "3",       "4",      "Y",      "Y",       "Y",
  "1",      "",                 "2021-12-24T19:00", "3",       "4",      NA,       NA,        NA,
  "1",      "",                 "2022-06-04T09:00", "3",       "4",      "Y",      "Y",       "Y",

  # without treatment
  "2",      "",                 "2021-12-03T12:00", "1",       "2",      NA,       NA,        NA,
  "2",      "2021-12-01T12:00", "2021-12-03T12:00", "1",       "2",      NA,       NA,        NA,
  "2",      "2021-12-06T18:00", "",                 "1",       "2",      NA,       NA,        NA
) %>%
  mutate(
    ASTDTM = lubridate::ymd_hm(ASTDTM),
    AENDTM = lubridate::ymd_hm(AENDTM),
    TRTSDTM = if_else(USUBJID == "1", lubridate::ymd_hm("2022-01-01T01:01"), ymd_hms("")),
    TRTEDTM = if_else(USUBJID == "1", lubridate::ymd_hm("2022-04-30T11:30"), ymd_hms(""))
  )

adae <- select(expected, -starts_with("TRTEM"))

## Test 1: end_window and worsening parameters not specfied ----
test_that("derive_var_trtemfl Test 1: end_window and worsening parameters not specfied", {
  expect_dfs_equal(
    base = select(expected, -TRTEM2FL, -TRTEM3FL),
    comp = derive_var_trtemfl(adae),
    keys = c("USUBJID", "ASTDTM", "AENDTM")
  )
})

## Test 2: with end_window and worsening ----
test_that("derive_var_trtemfl Test 2: with end_window and worsening", {
  expect_dfs_equal(
    base = select(expected, -TRTEMFL, -TRTEM3FL),
    comp = derive_var_trtemfl(
      adae,
      new_var = TRTEM2FL,
      trt_end_date = TRTEDTM,
      end_window = 10,
      initial_intensity = AEITOXGR,
      intensity = AETOXGR
    ),
    keys = c("USUBJID", "ASTDTM", "AENDTM")
  )
})

## Test 3: considering trt end time ----
test_that("derive_var_trtemfl Test 3: considering trt end time", {
  expect_dfs_equal(
    base = select(expected, -TRTEMFL, -TRTEM2FL),
    comp = derive_var_trtemfl(
      adae,
      new_var = TRTEM3FL,
      trt_end_date = TRTEDTM,
      end_window = 10,
      ignore_time_for_trt_end = FALSE,
      initial_intensity = AEITOXGR,
      intensity = AETOXGR
    ),
    keys = c("USUBJID", "ASTDTM", "AENDTM")
  )
})

## Test 4: error if `end_window` without `trt_end_date` ----
test_that("derive_var_trtemfl Test 4: error if `end_window` without `trt_end_date`", {
  expect_error(
    derive_var_trtemfl(
      adae,
      end_window = 10
    ),
    paste(
      "`end_window` argument was specified but not `trt_end_date`",
      "Either both or none of them must be specified.",
      sep = "\n"
    ),
    fixed = TRUE
  )
})

## Test 5: error if `initial_intensity` without `intensity` ----
test_that("derive_var_trtemfl Test 5: error if `initial_intensity` without `intensity`", {
  expect_error(
    derive_var_trtemfl(
      adae,
      initial_intensity = AEITOXGR
    ),
    paste(
      "`initial_intensity` argument was specified but not `intensity`",
      "Either both or none of them must be specified.",
      sep = "\n"
    ),
    fixed = TRUE
  )
})

## Test 6: error if `intensity` without `initial_intensity` ----
test_that("derive_var_trtemfl Test 6: error if `intensity` without `initial_intensity`", {
  expect_error(
    derive_var_trtemfl(
      adae,
      intensity = AETOXGR
    ),
    paste(
      "`intensity` argument was specified but not `initial_intensity`",
      "Either both or none of them must be specified.",
      sep = "\n"
    ),
    fixed = TRUE
  )
})

Try the admiral package in your browser

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

admiral documentation built on Oct. 19, 2023, 1:08 a.m.