test_that('main parsnip arguments', { rlang::local_options(lifecycle_verbosity = "quiet") mod_1 <- rand_forest() %>% varying_args() exp_1 <- tibble( name = c("mtry", "trees", "min_n"), varying = rep(FALSE, 3), id = rep("rand_forest", 3), type = rep("model_spec", 3) ) expect_equal(mod_1, exp_1) mod_2 <- rand_forest(mtry = varying()) %>% varying_args() exp_2 <- exp_1 exp_2$varying[1] <- TRUE expect_equal(mod_2, exp_2) mod_3 <- rand_forest(mtry = varying(), trees = varying()) %>% varying_args() exp_3 <- exp_2 exp_3$varying[1:2] <- TRUE expect_equal(mod_3, exp_3) }) test_that('other parsnip arguments', { rlang::local_options(lifecycle_verbosity = "quiet") other_1 <- rand_forest() %>% set_engine("ranger", sample.fraction = varying()) %>% varying_args() exp_1 <- tibble( name = c("mtry", "trees", "min_n", "sample.fraction"), varying = c(rep(FALSE, 3), TRUE), id = rep("rand_forest", 4), type = rep("model_spec", 4) ) expect_equal(other_1, exp_1) other_2 <- rand_forest(min_n = varying()) %>% set_engine("ranger", sample.fraction = varying()) %>% varying_args() exp_2 <- tibble( name = c("mtry", "trees", "min_n", "sample.fraction"), varying = c(rep(FALSE, 2), rep(TRUE, 2)), id = rep("rand_forest", 4), type = rep("model_spec", 4) ) expect_equal(other_2, exp_2) # We can detect these as varying, but they won't actually # be used in this way other_3 <- rand_forest() %>% set_engine("ranger", strata = Class, sampsize = c(varying(), varying())) %>% varying_args() exp_3 <- tibble( name = c("mtry", "trees", "min_n", "strata", "sampsize"), varying = c(rep(FALSE, 4), TRUE), id = rep("rand_forest", 5), type = rep("model_spec", 5) ) expect_equal(other_3, exp_3) other_4 <- rand_forest() %>% set_engine("ranger", strata = Class, sampsize = c(12, varying())) %>% varying_args() exp_4 <- tibble( name = c("mtry", "trees", "min_n", "strata", "sampsize"), varying = c(rep(FALSE, 4), TRUE), id = rep("rand_forest", 5), type = rep("model_spec", 5) ) expect_equal(other_4, exp_4) }) test_that("empty lists return FALSE - #131", { expect_equal( parsnip:::find_varying(list()), FALSE ) }) test_that("lists with multiple elements return a single logical - #131", { rlang::local_options(lifecycle_verbosity = "quiet") expect_equal( parsnip:::find_varying(list(1, 2)), FALSE ) expect_equal( parsnip:::find_varying(list(1, varying())), TRUE ) }) test_that("varying() deeply nested in calls can be located - #134", { rlang::local_options(lifecycle_verbosity = "quiet") deep_varying <- rlang::call2("list", x = list(xx = list(xxx = varying()))) expect_equal( parsnip:::find_varying(deep_varying), TRUE ) })