test_that("error handling works", {
chr <- letters[1:10]
lgc <- rep(c(TRUE, FALSE), 5)
nmr <- 1:10
nmr2 <- 1
expect_error(
bmi(chr, nmr),
"`mass` must be numeric; not character.",
class = "error_argument_type"
)
expect_error(
bmi(lgc, nmr),
"`mass` must be numeric; not logical.",
class = "error_argument_type"
)
expect_error(
bmi(nmr, chr),
"`height` must be numeric; not character.",
class = "error_argument_type"
)
expect_error(
bmi(nmr, lgc),
"`height` must be numeric; not logical.",
class = "error_argument_type"
)
expect_error(
bmi(nmr, nmr2),
"`mass` and `height` must have the same length.",
class = "error_argument_diff_length"
)
expect_error(
bmi_cat(chr),
"`bmi` must be numeric; not character.",
class = "error_argument_type"
)
expect_error(
bmi_cat(lgc),
"`bmi` must be numeric; not logical",
class = "error_argument_type"
)
})
test_that("bmi() works", {
h <- seq(1.55, 1.8, 0.05)
m <- c(43.245, 56.32, 73.5075, 92.48, 113.3125, 136.08)
out <- bmi(m, h)
expect_equal(out, c(18, 22, 27, 32, 37, 42))
})
test_that("bmi() deals with height in centimeters", {
h <- seq(155, 180, 5)
m <- c(43.245, 56.32, 73.5075, 92.48, 113.3125, 136.08)
expect_warning(out <- bmi(m, h))
expect_equal(out, c(18, 22, 27, 32, 37, 42))
})
test_that("bmi_cat() works", {
h <- seq(1.55, 1.8, 0.05)
m <- c(43.245, 56.32, 73.5075, 92.48, 113.3125, 136.08)
bmi <- bmi(m, h)
out <- bmi_cat(bmi)
expect_s3_class(out, "factor")
expect_equal(
out,
forcats::as_factor(c(
"Underweight", "Normal weight", "Overweight",
"Obesity class I", "Obesity class II", "Obesity class III"
))
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.