Nothing
# tests/testthat/test-seqic_indicator_3.R
testthat::test_that("seqic_indicator_3() correctly expects columns to be in the 'data'", {
# Minimal valid data
test_data <- tibble::tibble(
unique_id = c("1", "2", "3", "4", "5", "6"),
trauma_level = c("I", "II", "III", "IV", "I", "III"),
trauma_category = c(
"Blunt",
"Penetrating",
"Burn",
"Blunt",
"Burn",
"Penetrating"
),
survival_prob = c(0.9, 0.8, NA, 0.95, NA, 0.88)
)
testthat::expect_error(
traumar::seqic_indicator_3(
data = test_data,
level = TRUE,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = NULL
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_3(
data = test_data,
level = trauma_level,
trauma_type = "faked",
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = NULL
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_3(
data = test_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = FALSE,
probability_of_survival = survival_prob,
groups = NULL
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_3(
data = test_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = "some fake thing",
groups = NULL
),
regexp = "It was not possible to validate"
)
})
testthat::test_that("seqic_indicator_3: input validation", {
data <- tibble::tibble(
trauma_level = c("I", "II"),
trauma_category = c("Blunt", "Penetrating"),
unique_id = 1:2,
survival_prob = c(0.9, 0.8)
)
# Invalid data
testthat::expect_error(
traumar::seqic_indicator_3(
data = "not_a_data",
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob
),
"must be of class"
)
# Set up error prone logical unique id
logical_data <- tibble::tibble(
trauma_level = c("I", "II"),
trauma_category = c("Blunt", "Penetrating"),
unique_id = logical(length = 2),
survival_prob = c(0.9, 0.8)
)
# Invalid unique_id
testthat::expect_error(
traumar::seqic_indicator_3(
data = logical_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob
),
"unique_incident_id.*must be of class"
)
# Invalid level
bad_data <- tibble::tibble(
level = c(1L, 2L), # integer instead of character/factor
trauma_type = c("Blunt", "Burn"),
unique_id = c("1", "2"),
survival_prob = c(0.95, 0.9)
)
expect_error(
traumar::seqic_indicator_3(
data = bad_data,
level = level,
trauma_type = trauma_type,
unique_incident_id = unique_id,
probability_of_survival = survival_prob
),
regexp = "must be of class.*character.*or.*factor"
)
# Invalid groups
valid_data <- tibble::tibble(
level = factor(c("I", "II")),
trauma_type = c("Blunt", "Penetrating"),
unique_id = c("1", "2"),
survival_prob = c(0.9, 0.85)
)
expect_error(
traumar::seqic_indicator_3(
data = valid_data,
level = level,
trauma_type = trauma_type,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = list(1, 2) # not character strings
),
regexp = "All elements in .*groups.* must be strings"
)
# Invalid trauma_type
bad_data <- dplyr::mutate(data, trauma_category = as.numeric(c(1, 2)))
testthat::expect_error(
traumar::seqic_indicator_3(
data = bad_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob
),
"must be of class"
)
# Invalid probability_of_survival
bad_data <- dplyr::mutate(data, survival_prob = as.character(survival_prob))
testthat::expect_error(
traumar::seqic_indicator_3(
data = bad_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob
),
"probability_of_survival.*must be of class"
)
# Invalid group var
testthat::expect_error(
traumar::seqic_indicator_3(
data = data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = "bad_col"
),
"not valid columns"
)
# Invalid calculate_ci
testthat::expect_error(
traumar::seqic_indicator_3(
data = data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
calculate_ci = "not_a_method"
),
"must be"
)
})
testthat::test_that("seqic_indicator_3: basic logic", {
test_data <- tibble::tibble(
unique_id = c("1", "2", "3", "4", "5", "6"),
trauma_level = c("I", "II", "III", "IV", "I", "III"),
trauma_category = c(
"Blunt",
"Penetrating",
"Burn",
"Blunt",
"Burn",
"Penetrating"
),
survival_prob = c(0.9, 0.8, NA, 0.95, NA, 0.88)
)
res <- traumar::seqic_indicator_3(
data = test_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = NULL
)
testthat::expect_s3_class(res, "tbl_df")
testthat::expect_named(
res,
c("data", "numerator_3", "denominator_3", "seqic_3")
)
testthat::expect_equal(res$numerator_3, 4)
testthat::expect_equal(res$denominator_3, 4) # burn cases excluded
testthat::expect_equal(res$seqic_3, 4 / 4)
})
testthat::test_that("seqic_indicator_3: grouped results and confidence intervals", {
test_data <- tibble::tibble(
unique_id = as.character(1:6),
trauma_level = c("I", "I", "II", "II", "III", "IV"),
trauma_category = c(
"Blunt",
"Burn",
"Penetrating",
"Blunt",
"Burn",
"Blunt"
),
survival_prob = c(0.9, NA, 0.85, NA, NA, 0.95)
)
res <- traumar::seqic_indicator_3(
data = test_data,
level = trauma_level,
trauma_type = trauma_category,
unique_incident_id = unique_id,
probability_of_survival = survival_prob,
groups = "trauma_level",
calculate_ci = "wilson"
)
testthat::expect_s3_class(res, "tbl_df")
testthat::expect_true("trauma_level" %in% colnames(res))
testthat::expect_true(all(
c(
"numerator_3",
"denominator_3",
"seqic_3",
"lower_ci_3",
"upper_ci_3"
) %in%
names(res)
))
})
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.