library(testthat) library(dplyr) test_that("Check basic tidyselect functionality", { set.seed(1) loblolly <- datasets::Loblolly loblolly$young <- factor(loblolly$age < 10, labels = c("Yes", "No")) loblolly$fvar <- factor(sample(letters[1:3], size = nrow(loblolly), replace = TRUE)) out <- loblolly |> getDescriptionStatsBy( height, age, by = young, statistics = TRUE, digits = 2, statistics.sig_lim = 1e-4 ) expect_length(out, nrow(loblolly)) # Class structure can legitimately vary across R/dplyr/rlang versions. # Check something stable instead of "exactly 2 classes after removing one". expect_true(is.object(out)) expect_gte(length(class(out)), 1) }) test_that("Using default_ref with tidyselect", { set.seed(1) n <- 20 d <- data.frame( a = sample(LETTERS[1:2], size = n, replace = TRUE), b = sample(LETTERS[1:2], size = n, replace = TRUE), by = sample(letters[1:2], size = n, replace = TRUE) ) |> mutate( across(-by, \(x) factor(x, levels = LETTERS[1:2])), across(by, \(x) factor(x, levels = letters[1:2])) ) out_standard <- d |> getDescriptionStatsBy(a, b, by = by) out_with_A <- d |> getDescriptionStatsBy(a, b, default_ref = "A", by = by) expect_identical(out_with_A, out_standard) out_with_B <- d |> getDescriptionStatsBy(a, b, default_ref = "B", by = by) expect_false(identical(out_with_B, out_standard)) out_with_a_as_B <- d |> getDescriptionStatsBy(a, b, default_ref = c(a = "B"), by = by) expect_identical(out_with_a_as_B[[1]], out_with_B[[1]]) expect_identical(out_with_a_as_B[[2]], out_standard[[2]]) })