tests/testthat/test-modelargs.R

rxodeTest(
  {
    context("Test that model specification can take string, file name or rxode expressions")
    ode <- RxODE(model = "d/dt(y) = r * y * (1 - y/K);")

    ode2 <- RxODE({
      d / dt(y) <- r * y * (1 - y / K)
    })

    test_that("string and expression returns the same result", {
      expect_equal(rxModelVars(ode)$md5["parsed_md5"], rxModelVars(ode2)$md5["parsed_md5"])
    })

    tmp <- tempfile(fileext = ".rx")

    sink(tmp)
    cat("d/dt(y) = r * y * (1 - y/K);\n")
    sink()
    while (!file.exists(tmp)) {
      Sys.sleep(1)
    }
    ode3 <- RxODE(tmp)
    unlink(tmp)

    test_that("file and string returns the same result", {
      expect_equal(rxModelVars(ode)$md5["parsed_md5"], rxModelVars(ode3)$md5["parsed_md5"])
      expect_equal(rxNorm(ode), rxNorm(ode3))
    })


    ode <- RxODE("
         C2 = centr/V2;
         C3 = peri/V3;
         d/dt(depot) =-KA*depot;
         d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3;
         d/dt(peri)  =                    Q*C2 - Q*C3;
         d/dt(eff)  = Kin - Kout*(1-C2/(EC50+C2))*eff;")

    ode2 <- RxODE({
      C2 <- centr / V2
      C3 <- peri / V3
      d / dt(depot) <- -KA * depot
      d / dt(centr) <- KA * depot - CL * C2 - Q * C2 + Q * C3
      d / dt(peri) <- Q * C2 - Q * C3
      d / dt(eff) <- Kin - Kout * (1 - C2 / (EC50 + C2)) * eff
    })

    tmp <- tempfile(fileext = ".rx")
    sink(tmp)
    cat("
         C2 = centr/V2;
         C3 = peri/V3;
         d/dt(depot) =-KA*depot;
         d/dt(centr) = KA*depot - CL*C2 - Q*C2 + Q*C3;
         d/dt(peri)  =                    Q*C2 - Q*C3;
         d/dt(eff)  = Kin - Kout*(1-C2/(EC50+C2))*eff;")
    sink()
    while (!file.exists(tmp)) {
      Sys.sleep(1)
    }
    ode3 <- RxODE(tmp)
    unlink(tmp)

    test_that("string and expression returns the same result", {
      expect_equal(rxModelVars(ode)$md5["parsed_md5"], rxModelVars(ode2)$md5["parsed_md5"])
    })
    test_that("file and string returns the same result", {
      expect_equal(rxModelVars(ode)$md5["parsed_md5"], rxModelVars(ode3)$md5["parsed_md5"])
    })
  },
  silent = TRUE,
  test = "cran"
)

Try the RxODE package in your browser

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

RxODE documentation built on March 23, 2022, 9:06 a.m.