tests/testthat/test-lock.R

rxTest({
  if (!.Call(`_rxode2_isIntel`)) {
    # locking tests

    ode <- rxode2({
      a <- -8 / 3
      b <- -10
      c <- -1
      d / dt(X) <- a * X + Y * Z
      d / dt(Y) <- b * (Y - Z)
      d / dt(Z) <- -X * Y + c * Y - Z
    })

    test_that("Unlocked when simply loading", {
      expect_true(rxModels_()[[rxDll(ode)]] == 0L)
    })

    et <- eventTable(time.units = "hr") # default time units
    et$add.sampling(seq(from = 0, to = 100, by = 0.01))

    out <- rxSolve(ode,
                   events = et,
                   inits = c(X = 1, Y = 1, Z = 1),
                   .setupOnly = TRUE
                   )

    test_that("Locked after .setupOnly", {
      expect_true(rxModels_()[[rxDll(ode)]] == 1L)
    })

    out <- rxSolve(ode,
                   events = et,
                   inits = c(X = 1, Y = 1, Z = 1)
                   )

    test_that("Unlocked after other solve", {
      expect_true(rxModels_()[[rxDll(ode)]] == 0L)
    })
  }
})
nlmixr2/rxode2 documentation built on Jan. 11, 2025, 8:48 a.m.