tests/testthat/test-simulate_outvars.R

library(testthat)

context("Test the outvars argument of the simulate function")
seed <- 1
source(file.path(getwd(), test_path(), "test-utils.R"))

test_that("NULL outvars", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset() %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1)))

  simulation <- expression(simulate(model = model, dataset = dataset, dest = destEngine, seed = seed))
  test <- expression(
    expected <- if (destEngine %in% c("RxODE", "rxode2")) {
      c(
        "ID",
        "TIME",
        "ARM",
        "KA",
        "CL",
        "V2",
        "V3",
        "Q",
        "S2",
        "F",
        "CP",
        "OBS_CP",
        "Y",
        "A_DEPOT",
        "A_CENTRAL",
        "A_PERIPHERAL",
        "A_OUTPUT"
      )
    } else {
      c("ID", "TIME", "ARM", "A_DEPOT", "A_CENTRAL", "A_PERIPHERAL", "A_OUTPUT", "CP", "OBS_CP", "Y")
    },
    expect_true(all(expected %in% colnames(results)))
  )
  campsis_test(simulation, test, env = environment())
})

test_that("Not NULL outvars", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset() %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1)))

  simulation <- expression(simulate(model = model, dataset = dataset, dest = destEngine, seed = seed, outvars = "KA"))
  test <- expression(
    expected <- if (destEngine %in% c("RxODE", "rxode2")) {
      c(
        "ID",
        "TIME",
        "ARM",
        "KA",
        "CL",
        "V2",
        "V3",
        "Q",
        "S2",
        "F",
        "CP",
        "OBS_CP",
        "Y",
        "A_DEPOT",
        "A_CENTRAL",
        "A_PERIPHERAL",
        "A_OUTPUT"
      )
    } else {
      c("ID", "TIME", "ARM", "A_DEPOT", "A_CENTRAL", "A_PERIPHERAL", "A_OUTPUT", "KA", "CP", "OBS_CP", "Y")
    },
    expect_true(all(expected %in% colnames(results)))
  )
  campsis_test(simulation, test, env = environment())
})

test_that("Not NULL outvars + DROP_OTHERS", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset() %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1)))

  simulation <- expression(simulate(
    model = model,
    dataset = dataset,
    dest = destEngine,
    seed = seed,
    outvars = c("KA", "DROP_OTHERS")
  ))
  test <- expression(
    expected <- c("ID", "TIME", "ARM", "KA"),
    expect_equal(expected, colnames(results))
  )
  campsis_test(simulation, test, env = environment())
})

test_that("Not NULL outvars from ERROR block + DROP_OTHERS", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset() %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1)))

  simulation <- expression(simulate(
    model = model,
    dataset = dataset,
    dest = destEngine,
    seed = seed,
    outvars = c("Y", "DROP_OTHERS")
  ))
  test <- expression(
    expected <- c("ID", "TIME", "ARM", "Y"),
    expect_equal(expected, colnames(results))
  )
  campsis_test(simulation, test, env = environment())
})

test_that("Covariates in outvars can be output well", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset(2) %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1))) %>%
    add(Covariate("WT", c(70, 71)))

  simulation <- expression(simulate(
    model = model,
    dataset = dataset,
    dest = destEngine,
    seed = seed,
    outvars = c("Y", "WT", "DROP_OTHERS")
  ))
  test <- expression(
    expected <- c("ID", "TIME", "ARM", "Y", "WT"), # RxODE first Y then WT, mrgsolve first WT then Y
    expect_true(all(expected %in% colnames(results))),
    expect_true(all(colnames(results) %in% expected))
  )
  campsis_test(simulation, test, env = environment())
})

test_that("ETAs in outvars can be output well", {
  model <- model_suite$testing$nonmem$advan4_trans4

  dataset <- Dataset() %>%
    add(Bolus(time = 0, amount = 1000, compartment = 1)) %>%
    add(Observations(times = seq(0, 24, by = 1)))

  simulation <- expression(simulate(
    model = model,
    dataset = dataset,
    dest = destEngine,
    seed = seed,
    outvars = c("Y", "ETA_KA", "DROP_OTHERS")
  ))
  test <- expression(
    expected <- c("ID", "TIME", "ARM", "Y", "ETA_KA"), # RxODE first Y then ETA_KA, mrgsolve first ETA_KA then Y
    expect_true(all(expected %in% colnames(results))),
    expect_true(all(colnames(results) %in% expected))
  )
  campsis_test(simulation, test, env = environment())
})

Try the campsis package in your browser

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

campsis documentation built on Aug. 5, 2026, 9:07 a.m.