test_that("conf_int works with grouped data", { res <- conf_int(iris, var = Sepal.Length, group = Species, plot = FALSE) expect_s3_class(res, "tbl_df") expect_equal(nrow(res), 3) expect_true(all(c("Species", "n", "media", "desvio_padrao", "se", "gl", "t_calc", "t_tab", "LI", "LS") %in% colnames(res))) # Validar valores estatísticos para setosa setosa_data <- iris$Sepal.Length[iris$Species == "setosa"] expect_equal(res$n[1], length(setosa_data)) expect_equal(res$media[1], mean(setosa_data)) expect_equal(res$desvio_padrao[1], sd(setosa_data)) se_setosa <- sd(setosa_data) / sqrt(length(setosa_data)) ttab_setosa <- qt(0.975, df = length(setosa_data) - 1) expect_equal(res$LI[1], mean(setosa_data) - ttab_setosa * se_setosa) expect_equal(res$LS[1], mean(setosa_data) + ttab_setosa * se_setosa) }) test_that("conf_int works without grouping variable", { res <- conf_int(iris, var = Sepal.Length, plot = FALSE) expect_s3_class(res, "tbl_df") expect_equal(nrow(res), 1) expect_true(all(c("n", "media", "desvio_padrao", "se", "gl", "t_calc", "t_tab", "LI", "LS") %in% colnames(res))) expect_equal(res$n[1], nrow(iris)) expect_equal(res$media[1], mean(iris$Sepal.Length)) }) test_that("conf_int works with grouped_df from dplyr", { res <- iris |> dplyr::group_by(Species) |> conf_int(Petal.Length, plot = FALSE) expect_equal(nrow(res), 3) expect_true("Species" %in% colnames(res)) }) test_that("conf_int generates plot object as attribute", { res <- conf_int(iris, var = Sepal.Length, group = Species, plot = TRUE) p <- attr(res, "plot") expect_s3_class(p, "ggplot") expect_equal(p$labels$x, "Sepal.Length") expect_equal(p$labels$y, "Species") }) test_that("conf_int handles input errors gracefully", { expect_error(conf_int(iris, var = InexistentColumn, plot = FALSE)) expect_error(conf_int(iris, var = Species, plot = FALSE)) # non-numeric expect_error(conf_int(iris, var = Sepal.Length, group = InexistentGroup, plot = FALSE)) })