Nothing
# ==============================================================================
# tests/testthat/test-utils.R
# ==============================================================================
# Create test data
create_test_data <- function(n = 1000) {
set.seed(123)
data.frame(
id = 1:n,
outcome = rbinom(n, 1, 0.2),
exposure = factor(sample(c("No", "Yes"), n, replace = TRUE)),
age = rnorm(n, 40, 10),
sex = factor(sample(c("Male", "Female"), n, replace = TRUE))
)
}
test_that("input validation works correctly", {
data <- create_test_data()
# Valid inputs should not error
expect_silent(.validate_inputs(data, "outcome", "exposure", NULL, NULL, "auto", 0.05))
# Invalid data frame
expect_error(.validate_inputs("not_df", "outcome", "exposure", NULL, NULL, "auto", 0.05))
# Missing variables
expect_error(.validate_inputs(data, "missing", "exposure", NULL, NULL, "auto", 0.05))
# Invalid alpha
expect_error(.validate_inputs(data, "outcome", "exposure", NULL, NULL, "auto", 1.5))
# Invalid link
expect_error(.validate_inputs(data, "outcome", "exposure", NULL, NULL, "invalid", 0.05))
})
test_that("data preparation works correctly", {
data <- create_test_data()
data$outcome_logical <- as.logical(data$outcome)
prepared <- .prepare_data(data, "outcome_logical", "exposure", "age", NULL)
expect_true(is.data.frame(prepared))
expect_true(is.numeric(prepared$outcome_logical))
expect_true(is.factor(prepared$exposure))
expect_true(all(prepared$outcome_logical %in% c(0, 1)))
})
test_that("formula building works correctly", {
# Simple formula
formula1 <- .build_formula("outcome", "exposure", NULL)
expect_equal(deparse(formula1), "outcome ~ exposure")
# With adjustment
formula2 <- .build_formula("outcome", "exposure", "age")
expect_equal(deparse(formula2), "outcome ~ exposure + age")
})
test_that("starting values calculation works", {
data <- create_test_data()
start_vals <- .get_starting_values(data, "outcome", "exposure")
expect_true(is.numeric(start_vals))
expect_equal(length(start_vals), 2) # Intercept + 1 predictor
expect_true(all(start_vals >= 0 & start_vals <= 1))
})
test_that("safe confint works", {
data <- create_test_data()
model <- stats::glm(outcome ~ exposure, data = data, family = stats::binomial())
ci <- .safe_confint(model)
expect_true(is.matrix(ci))
expect_equal(nrow(ci), 2) # Intercept + exposure
expect_equal(ncol(ci), 2) # Lower and upper bounds
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.