tests/testthat/test-rxflag.R

rxTest({
  test_that("rxFlag works", {
    
    mod2 <- rxode2({
      a <- 6
      b <- 0.6
      d / dt(intestine) <- -a * intestine
      lag(intestine) <- 2
      d / dt(blood) <- a * intestine - b * blood
      printf("%f\n", rxFlag)
      flag <- rxFlag
    }, fullPrint=FALSE)
    
    obs <- units::set_units(seq(0, 10, by = 1 / 24), "days")

    et <- eventTable(time.units = "days")
    et$add.sampling(obs)
    et$add.dosing(
      dose = 2 / 24, start.time = 0,
      nbr.doses = 10, dosing.interval = 1
    )

    sink("flag.csv")
    cat("flag\n")
    solve2 <- solve(mod2, et)
    sink()
    f <- read.csv("flag.csv")
    unlink("flag.csv")

    expect_true(all(solve2$flag == 11))
    expect_true(all(f$flag == 1))

    mod3 <- rxode2({
      a <- 6
      b <- 0.6
      d / dt(intestine) <- -a * intestine
      lag(intestine) <- 2
      d / dt(blood) <- a * intestine - b * blood
      printf("%f\n", rxFlag)
      flag <- rxFlag
    }, fullPrint=TRUE)

    sink("flag.csv")
    cat("flag\n")
    solve3 <- solve(mod3, et)
    sink()
    f3 <- read.csv("flag.csv")
    unlink("flag.csv")

    expect_true(all(solve2$flag == 11))
    expect_equal(sort(unique(f3$flag)), c(1, 5, 11))

  })
})
nlmixr2/rxode2 documentation built on Jan. 11, 2025, 8:48 a.m.