suppressPackageStartupMessages({
library(dplyr)
library(testthat)
library(tibble)
})
set_col_names <- function(x, nam) {
colnames(x) <- nam
return(x)
}
f2n <- function(x) as.numeric(x) - 1
strip_names <- function(x) {
names(x) <- NULL
colnames(x) <- NULL
rownames(x) <- NULL
return(x)
}
is_cluster_closed <- function(cl) {
if (is.null(cl)) {
return(TRUE)
}
if (!is(cl, "cluster")) {
stop("`cl` is not a cluster object")
}
result <- tryCatch({
parallel::clusterCall(cl, function() Sys.info())
FALSE
}, error = function(e) {
TRUE
})
}
trunctate <- function(x, n) {
floor(x * 10 ^ n) / 10 ^ n
}
#
# ** DEPRECIATED **
# please use `simulate_test_data` instead, this function is left here for compatibility with
# tests that have already been defined based upon it
#
get_sim_data <- function(n, sigma, trt = 4) {
nv <- ncol(sigma)
covars <- tibble::tibble(
id = 1:n,
age = rnorm(n),
group = factor(sample(c("A", "B"), size = n, replace = TRUE), levels = c("A", "B")),
sex = factor(sample(c("M", "F"), size = n, replace = TRUE), levels = c("M", "F"))
)
dat <- mvtnorm::rmvnorm(n, sigma = sigma) %>%
set_col_names(paste0("visit_", 1:nv)) %>%
dplyr::as_tibble() %>%
dplyr::mutate(id = seq_len(dplyr::n())) %>%
tidyr::gather("visit", "outcome", -id) %>%
dplyr::mutate(visit = factor(.data$visit)) %>%
dplyr::arrange(id, .data$visit) %>%
dplyr::left_join(covars, by = "id") %>%
dplyr::mutate(outcome = .data$outcome + 5 + 3 * .data$age + 3 * f2n(.data$sex) + trt * f2n(.data$group)) %>%
dplyr::mutate(id = as.factor(id))
return(dat)
}
time_it <- function(expr) {
start <- Sys.time()
expr
stop <- Sys.time()
difftime(stop, start, units = "secs")
}
expect_within <- function(x, bounds) {
expect_gt(x, bounds[1])
expect_lt(x, bounds[2])
}
expect_contains <- function(x, y) {
expect_within(y, x)
}
is_full_test <- function() {
Sys.getenv("R_TEST_FULL") == "TRUE"
}
# Simple function to enable 1 function mocks
with_mocking <- function(expr, ..., where) {
x <- list(...)
nam <- names(x)
fun <- x[[1]]
assertthat::assert_that(length(x) == 1)
hold <- get(nam, envir = where)
islocked <- bindingIsLocked(nam, where)
if (islocked) unlockBinding(nam, where)
assign(nam, fun, envir = where)
x <- tryCatch(
expr,
finally = {
assign(nam, hold, where)
if (islocked) lockBinding(nam, where)
}
)
return(x)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.