rxTest({
expect_plotlog <- function(o, timex, logx, logy, dat) {
# Checking for the correct type for logx and logy is nontrivial, so j
expect_named(o, c("timex", "logx", "logy", "dat"))
if (is.null(timex)) {
expect_null(o$timex)
} else {
expect_equal(o$timex, timex)
}
if (is.null(logx)) {
expect_null(o$logx)
} else {
expect_type(o$logx, "list")
expect_length(o$logx, 1)
expect_s3_class(o$logx[[1]], logx)
}
if (is.null(logy)) {
expect_null(o$logy)
} else {
expect_type(o$logy, "list")
expect_length(o$logy, 1)
expect_s3_class(o$logy[[1]], logy)
}
expect_equal(o$dat, dat)
}
test_that(".plotLog works without xgxr", {
skip_on_os("mac")
d <- data.frame(time=-1:2, conc=0:3)
expect_equal(
.plotLog(.dat=d, .timex="A", log=""),
list(
timex="A",
logx=NULL,
logy=NULL,
dat=d
)
)
expect_plotlog(
.plotLog(.dat=d, .timex="A", log="x"),
timex=NULL, logx="ScaleContinuousPosition", logy=NULL, dat=d[-(1:2), ]
)
expect_plotlog(
.plotLog(.dat=d, .timex="A", log="y"),
timex="A", logx=NULL, logy="ScaleContinuousPosition", dat=d
)
expect_plotlog(
.plotLog(.dat=d, .timex="A", log="xy"),
timex=NULL, logx="ScaleContinuousPosition", logy="ScaleContinuousPosition", dat=d[-(1:2), ]
)
})
test_that(".plotLog works with xgxr", {
skip_if_not_installed("xgxr")
skip_on_os("mac")
skip("See https://github.com/Novartis/xgxr/issues/50 for why xgxr is not uniquely tested as of 2022-03-15")
current_xgxr_option <- getOption("rxode2.xgxr")
withr::with_options(
list(rxode2.xgxr=TRUE), {
d <- data.frame(time=-1:2, conc=0:3)
# Insert tests here
}
)
})
test_that(".plotLog gives expected errors", {
skip_on_os("mac")
expect_error(.plotLog(log=c("x", "y")))
expect_error(.plotLog(log=1))
expect_error(.plotLog(log="foo"))
expect_error(.plotLog(log=c("x", "y")))
expect_error(.plotLog(.dat=data.frame(A=1), log="x", .timex="A"))
# Time column is only required when log="x"
expect_silent(.plotLog(.dat=data.frame(A=1), log="y", .timex="A"))
})
test_that("plot() with invalid component throws an error", {
skip_on_os("mac")
pheno2 <- function() {
ini({
tcl <- log(0.008)
tv <- log(0.6)
eta.cl + eta.v ~ c(1,
0.01, 1)
add.err <- 0.1
})
model({
cl <- exp(tcl + eta.cl) # individual value of clearance
v <- exp(tv + eta.v) # individual value of volume
ke <- cl / v # elimination rate constant
d/dt(A1) = - ke * A1 # model differential equation
cp = A1 / v # concentration in plasma
cp ~ add(add.err) # define error model
})
}
simdata <- data.frame(time=1:10, ID=factor(c("A", "B")))
sim <- rxSolve(pheno2, events=simdata)
expect_error(plot(sim, "foo"))
expect_warning(plot(sim, sim, "foo"))
expect_error(plot(sim), NA)
})
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.