test_that("recommendations are generated", { r <- vb_recommend(iris) expect_true(nrow(r) > 0) expect_true(all(c("priority", "plot", "x", "y", "reason") %in% names(r))) }) test_that("autoviz object prints", { av <- autoviz(iris) expect_s3_class(av, "autoviz") }) test_that("vb_recommend handles categorical variables", { dat <- data.frame( species = c("dog", "cat", "dog", "cat"), stringsAsFactors = FALSE ) rec <- vb_recommend(dat) expect_true(any(rec$plot == "bar")) expect_true(any(rec$x == "species")) }) test_that("vb_recommend recommends line plots for date and numeric variables", { dat <- data.frame( date = as.Date("2026-01-01") + 0:3, weight = c(10, 11, 12, 13) ) rec <- vb_recommend(dat) expect_true(any(rec$plot == "line")) expect_true(any(rec$x == "date")) expect_true(any(rec$y == "weight")) }) test_that("vb_recommend recommends scatter plots for numeric relationships", { dat <- data.frame( x = c(1, 2, 3, 4), y = c(2, 4, 6, 8) ) rec <- vb_recommend(dat) expect_true(any(rec$plot == "scatter")) expect_true(any(rec$x == "x")) expect_true(any(rec$y == "y")) }) test_that("vb_recommend handles categorical outcome with numeric predictor", { dat <- data.frame( outcome = factor(c("yes", "no", "yes", "no")), age = c(20, 30, 25, 35) ) rec <- vb_recommend(dat, outcome = "outcome") expect_true(any(rec$plot == "boxplot")) expect_true(any( rec$x == "age" & rec$y == "outcome" )) }) test_that("vb_recommend handles numeric outcome with categorical predictor", { dat <- data.frame( outcome = c(10, 20, 15, 25), group = factor(c("A", "B", "A", "B")) ) rec <- vb_recommend(dat, outcome = "outcome") expect_true(any(rec$plot == "boxplot")) expect_true(any( rec$x == "outcome" & rec$y == "group" )) }) test_that("vb_recommend returns table when no standard relationship is detected", { dat <- data.frame( value = c(1, 2, 3, 4) ) rec <- vb_recommend(dat) expect_equal(nrow(rec), 1) expect_equal(rec$plot, "table") expect_equal(rec$reason, "No standard plot relationship detected.") }) test_that("vb_recommend validates outcome and time variables", { dat <- data.frame( x = c(1, 2, 3), y = c(4, 5, 6) ) expect_error( vb_recommend(dat, outcome = "missing"), "outcome.*not a column" ) expect_error( vb_recommend(dat, time = "missing"), "time.*not a column" ) }) test_that("vb_recommend respects max_pairs", { dat <- data.frame( a = 1:5, b = 6:10, c = 11:15, d = 16:20 ) rec <- vb_recommend(dat, max_pairs = 1) scatter_rec <- rec[rec$plot == "scatter", ] expect_lte(nrow(scatter_rec), 1) })