tests/testthat/test-addIndirect.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
  })
}

for (v in c("in", "out")) {
  for (m in c("PK_1cmt_des", "PK_2cmt_des", "PK_3cmt_des")) {
    test_that(paste0("addIndirectLin: ", m, "; stim=", v), {
      expect_error(readModelDb(m) |> addIndirectLin(stim=v), NA)
    })
    test_that(paste0("addIndirectLin: ", m, "; inhib=", v), {
      expect_error(readModelDb(m) |> addIndirectLin(inhib=v), NA)
    })
    test_that(paste0("addIndirect: ", m, "; stim=", v), {
      expect_error(readModelDb(m) |> addIndirect(stim=v), NA)
    })
    test_that(paste0("addIndirect: ", m, "; inhib=", v), {
      expect_error(readModelDb(m) |> addIndirect(inhib=v), NA)
    })
    test_that(paste0("addIndirect: ", m, "; stim=", v, ", hill"), {
      expect_error(readModelDb(m) |> addIndirect(stim=v, hill=TRUE), NA)
    })
    test_that(paste0("addIndirect: ", m, "; inhib=", v, ", hill"), {
      expect_error(readModelDb(m) |> addIndirect(inhib=v, hill=TRUE), NA)
    })
  }
  test_that(paste0("addIndirectLin: f(); stim=", v), {
    expect_error(rxode2::rxode2(f) |> addIndirectLin(stim=v), NA)
  })
  test_that(paste0("addIndirectLin: f(); inhib=", v), {
    expect_error(rxode2::rxode2(f) |> addIndirectLin(inhib=v), NA)
  })
  test_that(paste0("addIndirect: f(); stim=", v), {
    expect_error(rxode2::rxode2(f) |> addIndirect(stim=v), NA)
  })
  test_that(paste0("addIndirect: f(); inhib=", v), {
    expect_error(rxode2::rxode2(f) |> addIndirect(inhib=v), NA)
  })
  test_that(paste0("addIndirect: f(); stim=", v, ", hill"), {
    expect_error(rxode2::rxode2(f) |> addIndirect(stim=v, hill=TRUE), NA)
  })
  test_that(paste0("addIndirect: f(); inhib=", v, ", hill"), {
    expect_error(rxode2::rxode2(f) |> addIndirect(inhib=v, hill=TRUE), NA)
  })
}

test_that("addIndirectLin/addIndirect with a blank ui will generate a model", {
  expect_error(addIndirect(stim="in"), NA)
  expect_error(addIndirect(stim="out"), NA)
  expect_error(addIndirect(inhib="in"), NA)
  expect_error(addIndirect(inhib="out"), NA)
  expect_error(addIndirect(stim="in", hill=TRUE), NA)
  expect_error(addIndirect(stim="out", hill=TRUE), NA)
  expect_error(addIndirect(inhib="in", hill=TRUE), NA)
  expect_error(addIndirect(inhib="out", hill=TRUE), NA)
  # Now add the indirect lin test cases
  expect_error(addIndirectLin(stim="in"), NA)
  expect_error(addIndirectLin(stim="out"), NA)
  expect_error(addIndirectLin(inhib="in"), NA)
  expect_error(addIndirectLin(inhib="out"), NA)
})


test_that("both arguments present or neither argument present for stim/in errors",{
  expect_error(addIndirectLin(stim="in", inhib="in"))
  expect_error(addIndirectLin())
  expect_error(addIndirect(stim="in", inhib="out"))
  expect_error(addIndirect())
})

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.