Nothing
# tests/testthat/test-seqic_indicator_5.R
testthat::test_that("seqic_indicator_5() correctly expects columns to be in the 'data'", {
# Minimal valid data
valid_data <- tibble::tibble(
level = factor(c("I", "II")),
id = c("a", "b"),
bac = c(0.08, 0),
drug = c("opioid", "none")
)
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = TRUE,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = trauma_level,
unique_incident_id = fake,
blood_alcohol_content = bac,
drug_screen = drug
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = something_else,
drug_screen = drug
),
regexp = "It was not possible to validate"
)
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = FALSE
),
regexp = "It was not possible to validate"
)
})
testthat::test_that("seqic_indicator_5() data validation errors", {
# Minimal valid input for baseline
valid_data <- tibble::tibble(
level = factor(c("I", "II")),
id = c("a", "b"),
bac = c(0.08, 0),
drug = c("opioid", "none")
)
# data must be a data.frame or tibble
testthat::expect_error(
traumar::seqic_indicator_5(
data = list(),
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
"must be of class.*data.frame"
)
# level must be character or factor
data_bad_level <- dplyr::mutate(valid_data, level = as.numeric(c(1, 2)))
testthat::expect_error(
traumar::seqic_indicator_5(
data = data_bad_level,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
"must be of class.*character.*or.*factor"
)
# unique_incident_id must be character, factor, or numeric
data_bad_id <- dplyr::mutate(valid_data, id = list(1:2))
testthat::expect_error(
traumar::seqic_indicator_5(
data = data_bad_id,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
"must be of class.*character.*numeric.*or.*factor"
)
# blood_alcohol_content must be numeric
data_bad_bac <- dplyr::mutate(valid_data, bac = c("yes", "no"))
testthat::expect_error(
traumar::seqic_indicator_5(
data = data_bad_bac,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
"must be of class.*numeric"
)
# drug_screen must be character or factor
data_bad_drug <- dplyr::mutate(
valid_data,
drug = as.Date(c("2022-01-01", "2022-01-02"))
)
testthat::expect_error(
traumar::seqic_indicator_5(
data = data_bad_drug,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
),
"must be of class.*character.*or.*factor"
)
# groups must be character vector
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
groups = 123
),
"All elements in .*groups.* must be strings"
)
# groups must exist in data
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
groups = "nonexistent_column"
),
"not valid columns in .*data"
)
# calculate_ci must be "wilson", "clopper-pearson", or NULL
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
calculate_ci = "bootstrap"
),
"must be.*wilson.*or.*clopper-pearson"
)
# included_levels must be character, numeric, or factor
testthat::expect_error(
traumar::seqic_indicator_5(
data = valid_data,
level = level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
included_levels = list("I", "II")
),
"must be of class.*character.*factor.*or.*numeric"
)
})
testthat::test_that("seqic_indicator_5() computes indicators correctly", {
test_data <- tibble::tibble(
id = as.character(1:10),
trauma_level = rep(c("I", "II", "III", "IV", "V"), each = 2),
bac = c(0.08, NA, 0, 0.02, NA, 0.15, NA, NA, 0, 0),
drug = c(
"opioid",
"none",
"cocaine",
"none",
NA,
"benzodiazepine",
"alcohol",
"thc",
"none",
NA
)
)
result <- traumar::seqic_indicator_5(
data = test_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
)
testthat::expect_s3_class(result, "tbl_df")
testthat::expect_named(
object = result,
expected = c(
'data',
'numerator_5a',
'denominator_5a',
'seqic_5a',
'numerator_5b',
'denominator_5b',
'seqic_5b',
'numerator_5c',
'denominator_5c',
'seqic_5c',
'numerator_5d',
'denominator_5d',
'seqic_5d'
)
)
testthat::expect_equal(nrow(result), 1)
testthat::expect_equal(result$numerator_5a, 4)
testthat::expect_equal(result$denominator_5a, 8)
testthat::expect_equal(result$seqic_5a, 4 / 8)
testthat::expect_equal(result$numerator_5b, 3)
testthat::expect_equal(result$denominator_5b, 4)
testthat::expect_equal(result$seqic_5b, 3 / 4)
testthat::expect_equal(result$numerator_5c, 7)
testthat::expect_equal(result$denominator_5c, 8)
testthat::expect_equal(result$seqic_5c, 7 / 8)
testthat::expect_equal(result$numerator_5d, 5)
testthat::expect_equal(result$denominator_5d, 7)
testthat::expect_equal(result$seqic_5d, 5 / 7)
})
testthat::test_that("seqic_indicator_5() handles empty input after filter", {
empty_data <- tibble::tibble(
id = c("1", "2"),
trauma_level = c("V", "V"),
bac = c(0.1, NA),
drug = c("opioid", "none")
)
result <- traumar::seqic_indicator_5(
data = empty_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug
)
testthat::expect_equal(result$denominator_5a, 0)
testthat::expect_true(all(is.na(result[c(
"seqic_5a",
"seqic_5b",
"seqic_5c",
"seqic_5d"
)])))
})
testthat::test_that("seqic_indicator_5() returns confidence intervals if requested", {
test_data <- tibble::tibble(
id = as.character(1:6),
trauma_level = rep("I", 6),
bac = c(NA, 0.05, 0.00, 0.08, 0, 0),
drug = c("thc", "none", "opioid", "thc", "none", "none")
)
result <- traumar::seqic_indicator_5(
data = test_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
calculate_ci = "wilson"
)
testthat::expect_true(all(
c("lower_ci_5a", "upper_ci_5a", "lower_ci_5d", "upper_ci_5d") %in%
names(result)
))
testthat::expect_type(result$lower_ci_5a, "double")
testthat::expect_true(result$lower_ci_5a <= result$seqic_5a)
testthat::expect_true(result$upper_ci_5a >= result$seqic_5a)
})
testthat::test_that("seqic_indicator_5() works with groupings", {
grouped_data <- tibble::tibble(
id = as.character(1:8),
trauma_level = rep(c("I", "II"), each = 4),
bac = c(0.1, NA, 0, 0, 0.15, NA, 0, NA),
drug = c("thc", NA, "none", "opioid", "none", "opioid", "none", "none"),
region = c("East", "East", "West", "West", "East", "East", "West", "West")
)
result <- traumar::seqic_indicator_5(
data = grouped_data,
level = trauma_level,
unique_incident_id = id,
blood_alcohol_content = bac,
drug_screen = drug,
groups = "region"
)
testthat::expect_s3_class(result, "tbl_df")
testthat::expect_equal(nrow(result), 2)
testthat::expect_setequal(result$region, c("East", "West"))
})
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.