library(groupdata2)
context("find_starts()")
test_that("find_starts() find the right starts", {
xpectr::set_test_seed(1)
v <- c("a", "a", "b", "c", "c", "d", "d")
df <- data.frame(
v = v,
v2 = c(1, 1, 1, 2, 2, 2, 3),
v3 = factor(c(1, 1, 1, 2, 2, 2, 3)),
stringsAsFactors = FALSE
)
check_find_starts_df <- function(col, return_index = FALSE) {
return(find_starts(df, col = col, return_index = return_index))
}
# v
expect_equal(check_find_starts_df("v"), c("a", "b", "c", "d"))
expect_equal(check_find_starts_df("v", return_index = TRUE), c(1, 3, 4, 6))
# v2
expect_equal(check_find_starts_df("v2"), c(1, 2, 3))
expect_equal(check_find_starts_df("v2", return_index = TRUE), c(1, 4, 7))
# v3 - notice: find_starts() converts factors to characters
expect_warning(expect_equal(check_find_starts_df("v3"), c("1", "2", "3")),
"'col' is factor. Using as character.",
fixed = TRUE
)
expect_warning(expect_equal(
check_find_starts_df("v3", return_index = TRUE),
c(1, 4, 7)
),
"'col' is factor. Using as character.",
fixed = TRUE
)
expect_error(
xpectr::strip_msg(find_starts(df)),
xpectr::strip("1 assertions failed:\n * 'col' must be specified when 'data' is data.frame."),
fixed = TRUE
)
expect_warning(find_starts(v, col = "a"),
"'col' is ignored when 'data' is not a data.frame",
fixed = TRUE
)
expect_warning(find_starts(factor(v)),
"'data' is factor. Using as character.",
fixed = TRUE
)
expect_warning(find_starts(factor(v), return_index = TRUE),
"'data' is factor. Using as character.",
fixed = TRUE
)
expect_warning(find_starts(df, col = "v3"),
"'col' is factor. Using as character.",
fixed = TRUE
)
expect_warning(find_starts(df, col = "v3", return_index = TRUE),
"'col' is factor. Using as character.",
fixed = TRUE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.