tests/testthat/test-addDirectLin.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("direct linear function creation", {

  result <-readModelDb("PK_3cmt_des") |>
    addDirectLin()

  expect_s3_class(result, "rxUi")
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ek * Cc")

  result <- addDirectLin(f)
  expect_null(result$meta$description)
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ek * Cc")
  expect_equal(result$theta, c(uEk = 0.1, effectSd=0.1))

  expect_equal(result$iniDf$label, c("untransformed slope (Ek)",
                                     "additive error for effect"))
})

test_that("without arguments, addDirectLin simply gives a PD model",{

  result <- addDirectLin()

  expect_s3_class(result, "rxUi")
  expect_equal(rxode2::modelExtract(result, effect),
               "effect <- Ek * Cc")

  expect_equal(result$theta, c(uEk = 0.1, effectSd=0.1))

  expect_equal(result$iniDf$label, c("untransformed slope (Ek)",
                                     "additive error for effect"))

})

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.