context("add_subquad")
test_that("passes with non-numeric input", {
# styler: off
vft <- tibble::tribble(
~QX, ~QY,
NULL, 0,
17.9, 0
) %>%
purrr::map_df(as.character)
# styler: on
expect_warning(
add_subquad(vft, x_q = 20, x_sq = 5)
)
# styler: off
vft <- tibble::tribble(
~QX, ~QY,
17.9, 0,
4.1, 15,
6.1, 17.3
) %>%
purrr::map_df(as.character)
# styler: on
expect_warning(add_subquad(vft, x_q = 20, x_sq = 5))
})
# styler: off
vft <- tibble::tribble(
~QX, ~QY,
17.9, 0,
4.1, 15,
6.1, 17.3,
3.8, 5.9,
4.5, 12.4,
4.9, 9.3,
9.8, 3.2,
18.6, 1.1,
17.3, 4.1,
1.5, 16.3,
)
# styler: on
test_that("outputs a dataframe with new expected variable", {
with_sq <- vft %>% add_subquad(x_q = 20, x_sq = 5)
expect_named(with_sq, c(names(vft), "subquadrat"))
expect_is(with_sq, "data.frame")
})
test_that("throws error with wrong inputs to add_subquad", {
# check that works
expect_silent(add_subquad(vft, 20, 20, 5, 5))
expect_silent(add_subquad(vft, 40, 50, 5, 5))
# Fails
expect_error(add_subquad(1, 20, 20, 5, 5))
expect_error(add_subquad(vft, "a", 20, 5, 5))
expect_error(add_subquad(vft, 20, c(20, 20), 5, 5))
expect_error(add_subquad(vft, 20, 20, "a", 5))
expect_error(add_subquad(vft, 20, 20, 5, c(5, 5)))
expect_error(add_subquad(vft, -1, 20, 5, 5))
expect_error(add_subquad(vft, 20, Inf, 5, 5))
expect_error(add_subquad(vft, 20, 20, 5, 5, subquad_offset = "wrong input"))
})
context("recode_subquad")
with_subquad <- tibble(subquadrat = c("01", "02", "12"))
test_that("recodes as expected", {
at_origin_1 <- recode_subquad(with_subquad, 1)
expect_equal(at_origin_1$subquadrat, c("11", "12", "22"))
at_origin_0 <- recode_subquad(at_origin_1, offset = -1)
})
test_that("errs with wrong input", {
expect_error(
recode_subquad("not a dataframe")
)
expect_error(
recode_subquad(data.frame(x = "missing var subquadrat"))
)
expect_error(
recode_subquad(with_subquad, 9999)
)
expect_error(
recode_subquad(tibble(subquadrat = c("11", "wrong subquad")))
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.