Nothing
library(testthat)
# testing desc_cont
test_that(
"result is accurate", {
df <-
data.frame(
smoke_status = c("smoker", "non-smoker",
"smoker", "smoker",
"smoker", "smoker",
"non-smoker"
),
age = c(60, 50, 56, 49, 75, 69, 85),
bmi = c(18, 30, 25, 22, 23, 21, 22)
)
res_age <- desc_cont(vc = c("age"),
.data = df,
format = "median (q1;q3) [min-max]",
dig = 0)
expect_equal(
res_age$value,
"60 (53;72) [49-85]"
)
res_bmi <- desc_cont(vc = c("bmi"),
.data = df,
format = "median (q1;q3) [min-max]",
dig = 0)
expect_equal(
res_bmi$value,
"22 (22;24) [18-30]"
)
}
)
test_that(
"big counts have big marks", {
df <-
data.frame(
tto = c(6000, 5000, 5600, 4900, 7500, 6900, 8500)
)
res_tto <- desc_cont(vc = c("tto"),
.data = df,
format = "median (q1;q3) [min-max]",
dig = 0)
expect_equal(
res_tto$value,
"6,000 (5,300;7,200) [4,900-8,500]"
)
}
)
test_that(
"digit selection works", {
df <-
data.frame(
age = c(60, 50, 56, 49, 75, 69, 85)
)
res_age_d0 <- desc_cont(vc = c("age"),
.data = df,
format = "median (q1;q3)",
dig = 0)
expect_equal(
res_age_d0$value,
"60 (53;72)"
)
res_age_d1 <- desc_cont(vc = c("age"),
.data = df,
format = "median (q1;q3)",
dig = 1)
expect_equal(
res_age_d1$value,
"60.0 (53.0;72.0)"
)
}
)
test_that(
"formatting works", {
df <-
data.frame(
age = c(60, 50, 56, 49, 75, 69, 85)
)
res_age_f1 <- desc_cont(vc = c("age"),
.data = df,
format = "median [q1-q3)",
dig = 0)
expect_equal(
res_age_f1$value,
"60 [53-72)"
)
res_age_f2 <- desc_cont(vc = c("age"),
.data = df,
format = "median yolooo (q1yepq3",
dig = 0)
expect_equal(
res_age_f2$value,
"60 yolooo (53yep72"
)
res_age_f3 <- desc_cont(vc = c("age"),
.data = df,
format = "median; q1 to q3",
dig = 0)
expect_equal(
res_age_f3$value,
"60; 53 to 72"
)
}
)
test_that(
"multiple columns selection", {
df <-
data.frame(
smoke_status = c("smoker", "non-smoker",
"smoker", "smoker",
"smoker", "smoker",
"non-smoker"
),
age = c(60, 50, 56, 49, 75, 69, 85),
bmi = c(18, 30, 25, 22, 23, 21, 22)
)
res <- desc_cont(vc = c("age", "bmi"),
.data = df,
format = "median (q1-q3)",
dig = 0)
expect_equal(
res$value,
c("60 (53-72)", "22 (22-24)")
)
expect_equal(
res$var,
c("age", "bmi")
)
}
)
test_that(
"missing data", {
df <-
data.frame(
age = c(60, 50, 56, 49, 75, NA, 85)
)
res <- desc_cont(vc = c("age"),
.data = df,
format = "median (q1-q3)",
dig = 0)
expect_equal(
res$value,
"58 (52-71)"
)
expect_equal(
res$n_avail,
6
)
}
)
test_that(
"fully missing data", {
df <-
data.frame(
age = c(NA_real_, NA_real_, NA_real_)
)
expect_message({
res <<- desc_cont(vc = c("age"),
.data = df,
format = "median (q1-q3)",
dig = 0)
},
"var age is empty"
)
res_true <-
data.frame(var = "age", level = NA_character_, value = "-", n_avail = 0)
expect_equal(
res,
res_true
)
df <-
data.frame(
age = as.numeric(c(NA, NA, NA))
)
expect_message({
res2 <<- desc_cont(vc = c("age"),
.data = df,
format = "median (q1-q3)",
dig = 0)
},
"var age is empty"
)
expect_equal(
res2,
res_true
)
}
)
test_that(
"works even if format args are required multiple times", {
df <-
data.frame(
age = c(60, 50, 56, 49, 75, 69, 85)
)
r1 <-
desc_cont(vc = c("age"),
.data = df,
format = "median min (q1-q3) and min again, and median",
dig = 0)
expect_equal(
r1$value,
"60 49 (53-72) and 49 again, and 60"
)
}
)
test_that(
"doesnt work if format as none of min max, q1, q3 and median", {
cnd <- rlang::catch_cnd(error_required_format_values("format", c("q1", "q3")))
expect_s3_class(cnd, "required_format_values")
expect_equal(cnd$format, "format")
expect_equal(cnd$required_values, c("q1", "q3"))
df <-
data.frame(
age = c(60, 50, 56, 49, 75, 69, 85)
)
expect_error(
desc_cont(vc = c("age"),
.data = df,
format = "no formal arg",
dig = 0)
,
regexp = "format.*must contain.*median.*q1.*q3.*min.*max",
class = "required_format_values"
)
}
)
test_that("exporting raw values works", {
df <-
data.frame(
age = c(60, 50, 56, 49, 75, 69, 85)
)
res_age <- desc_cont(vc = c("age"),
.data = df,
format = "median (q1;q3) [min-max]",
dig = 0,
export_raw_values = TRUE)
res_age_true <-
data.frame(
var = "age",
level = NA_character_,
value = "60 (53;72) [49-85]",
n_avail = 7,
median = 60,
q1 = 53,
q3 = 72,
min = 49,
max = 85
)
expect_equal(
res_age,
res_age_true
)
})
test_that("error columns not found prints nicely", {
# single missing var
cnd <-
rlang::catch_cnd(error_columns_in_data("vf", ".data", c("v2")))
expect_equal(cnd$col_arg, "vf")
expect_equal(cnd$must_be_in, ".data")
expect_equal(cnd$missing_cols, c("v2"))
expect_s3_class(cnd, "columns_not_in_data")
d1 <- data.frame(v1 = 1)
vf = c("v1", "v2")
cnd_from_checker <-
rlang::catch_cnd(check_columns_in_data(d1, vf))
expect_equal(cnd$col_arg, cnd_from_checker$col_arg)
expect_equal(cnd$must_be_in, cnd_from_checker$must_be_in)
expect_equal(cnd$missing_cols, cnd_from_checker$missing_cols)
expect_s3_class(cnd_from_checker, "columns_not_in_data")
expect_snapshot(check_columns_in_data(d1, vf),
error = TRUE,
cnd_class = TRUE)
# run smoothly if columns were found
expect_silent(check_columns_in_data(d1, "v1"))
df <-
data.frame(age = c(60, 50, 56, 49, 75, 69, 85))
expect_error(desc_cont(
vc = c("bmi"),
.data = df,
format = "median (q1-q3)",
dig = 0
),
class = "columns_not_in_data")
# several missing vars
expect_snapshot(error_columns_in_data("vf", ".data", c("v2", "v3")),
error = TRUE,
cnd_class = TRUE)
expect_error(desc_cont(
vc = c("bmi", "sex"),
.data = df,
format = "median (q1-q3)",
dig = 0
)
,
class = "columns_not_in_data"
)
})
test_that("error columns not numeric/integer prints nicely", {
# single non numeric/integer var
cnd <-
rlang::catch_cnd(
error_columns_numeric_integer(
"vf", "v2")
)
expect_equal(cnd$col_arg, "vf")
expect_equal(cnd$not_numeric_integer, "v2")
expect_s3_class(cnd, "columns_not_numeric_integer")
d1 <- data.frame(v1 = as.numeric(1), v2 = "a", v3 = 2L, v4 = "b")
vf <- c("v1", "v2")
cnd_from_checker <-
rlang::catch_cnd(check_columns_numeric_integer(d1, vf))
expect_equal(cnd$col_arg, cnd_from_checker$col_arg)
expect_equal(cnd$must_be_in, cnd_from_checker$must_be_in)
expect_equal(cnd$non_numeric_cols, cnd_from_checker$non_numeric_cols)
expect_s3_class(cnd_from_checker, "columns_not_numeric_integer")
expect_snapshot(check_columns_numeric_integer(d1, vf),
error = TRUE,
cnd_class = TRUE)
# run smoothly if columns are numeric or integer
expect_silent(check_columns_numeric_integer(d1, c("v1", "v3")))
# several non numeric integer
vf_cols <- c("v1", "v2", "v4")
expect_snapshot(check_columns_numeric_integer(d1, vf_cols),
error = TRUE,
cnd_class = TRUE)
expect_error(desc_cont(vc = c("v2"),
.data = d1,
format = "median (q1-q3)",
dig = 0),
class = "columns_not_numeric_integer")
expect_snapshot(
desc_cont(vc = c("v2"),
.data = d1,
format = "median (q1-q3)",
dig = 0),
error = TRUE,
cnd_class = TRUE
)
})
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.