tests/testthat/test-addEffectCmt.R

f <- function() {
  description <- "A two compartment model with a direct effect , no endpoints and no thetas"
  model({
    d/dt(central) <- -kel * central - k12 * central + k21 *
      peripheral1
    d/dt(peripheral1) <- k12 * central - k21 * peripheral1
    Cc <- central/vc
  })
}

test_that("Test addEffectCmtLin", {

  # Blank effect comparment works just fine
  result <-addEffectCmtLin()
  expect_s3_class(result, "rxUi")
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ce * Ek")
  expect_equal(rxode2::modelExtract(result, d/dt(Ce)),
               "d/dt(Ce) <- ke0 * (Cc - Ce)")
  expect_equal(result$theta, c(lke0 = 0.1, uEk = 0.1, effectSd = 0.1))

  # Also works with a PK model
  result <- readModelDb("PK_3cmt_des") |>
    addEffectCmtLin()

  expect_s3_class(result, "rxUi")
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ce * Ek")
  expect_equal(rxode2::modelExtract(result, d/dt(Ce)),
               "d/dt(Ce) <- ke0 * (Cc - Ce)")

  # Also works with no thetas and drops description
  result <- rxode2::rxode2(f) |>
    addEffectCmtLin()
  expect_null(result$description)
  expect_s3_class(result, "rxUi")
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ce * Ek")
  expect_equal(rxode2::modelExtract(result, d/dt(Ce)),
               "d/dt(Ce) <- ke0 * (Cc - Ce)")
  expect_equal(result$theta, c(lke0 = 0.1, uEk = 0.1, effectSd = 0.1))
})

Try the nlmixr2lib package in your browser

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

nlmixr2lib documentation built on Oct. 7, 2024, 5:08 p.m.