168 lines
5.6 KiB
R
168 lines
5.6 KiB
R
test_that(".params2str() works as expected for empty lists", {
|
|
out_str <- .params2str(
|
|
params = list()
|
|
)
|
|
expect_identical(class(out_str), "character")
|
|
expect_equal(out_str, "")
|
|
})
|
|
|
|
test_that(".params2str() works as expected for a key in params with multiple different-length elements", {
|
|
metrics <- c("a", "ab", "abc", "abcdefg")
|
|
params <- list(
|
|
objective = "magic"
|
|
, metric = metrics
|
|
, nrounds = 10L
|
|
, learning_rate = 0.0000001
|
|
)
|
|
out_str <- .params2str(
|
|
params = params
|
|
)
|
|
expect_identical(class(out_str), "character")
|
|
expect_identical(
|
|
out_str
|
|
, "objective=magic metric=a,ab,abc,abcdefg nrounds=10 learning_rate=0.0000001"
|
|
)
|
|
})
|
|
|
|
test_that(".params2str() passes through duplicated params", {
|
|
out_str <- .params2str(
|
|
params = list(
|
|
objective = "regression"
|
|
, bagging_fraction = 0.8
|
|
, bagging_fraction = 0.5 # nolint: duplicate_argument.
|
|
)
|
|
)
|
|
expect_equal(out_str, "objective=regression bagging_fraction=0.8 bagging_fraction=0.5")
|
|
})
|
|
|
|
test_that(".check_eval works as expected with no metric", {
|
|
params <- .check_eval(
|
|
params = list(device = "cpu")
|
|
, eval = "binary_error"
|
|
)
|
|
expect_named(params, c("device", "metric"))
|
|
expect_identical(params[["metric"]], list("binary_error"))
|
|
})
|
|
|
|
test_that(".check_eval adds eval to metric in params", {
|
|
params <- .check_eval(
|
|
params = list(metric = "auc")
|
|
, eval = "binary_error"
|
|
)
|
|
expect_named(params, "metric")
|
|
expect_identical(params[["metric"]], list("auc", "binary_error"))
|
|
})
|
|
|
|
test_that(".check_eval adds eval to metric in params if two evaluation names are provided", {
|
|
params <- .check_eval(
|
|
params = list(metric = "auc")
|
|
, eval = c("binary_error", "binary_logloss")
|
|
)
|
|
expect_named(params, "metric")
|
|
expect_identical(params[["metric"]], list("auc", "binary_error", "binary_logloss"))
|
|
})
|
|
|
|
test_that(".check_eval adds eval to metric in params if a list is provided", {
|
|
params <- .check_eval(
|
|
params = list(metric = "auc")
|
|
, eval = list("binary_error", "binary_logloss")
|
|
)
|
|
expect_named(params, "metric")
|
|
expect_identical(params[["metric"]], list("auc", "binary_error", "binary_logloss"))
|
|
})
|
|
|
|
test_that(".check_eval drops duplicate metrics and preserves order", {
|
|
params <- .check_eval(
|
|
params = list(metric = "l1")
|
|
, eval = list("l2", "rmse", "l1", "rmse")
|
|
)
|
|
expect_named(params, "metric")
|
|
expect_identical(params[["metric"]], list("l1", "l2", "rmse"))
|
|
})
|
|
|
|
test_that(".check_wrapper_param() uses passed-in keyword arg if no alias found in params", {
|
|
kwarg_val <- sample(seq_len(100L), size = 1L)
|
|
params <- .check_wrapper_param(
|
|
main_param_name = "num_iterations"
|
|
, params = list()
|
|
, alternative_kwarg_value = kwarg_val
|
|
)
|
|
expect_equal(params[["num_iterations"]], kwarg_val)
|
|
})
|
|
|
|
test_that(".check_wrapper_param() prefers main parameter to alias and keyword arg", {
|
|
num_iterations <- sample(seq_len(100L), size = 1L)
|
|
kwarg_val <- sample(seq_len(100L), size = 1L)
|
|
params <- .check_wrapper_param(
|
|
main_param_name = "num_iterations"
|
|
, params = list(
|
|
num_iterations = num_iterations
|
|
, num_tree = sample(seq_len(100L), size = 1L)
|
|
, n_estimators = sample(seq_len(100L), size = 1L)
|
|
)
|
|
, alternative_kwarg_value = kwarg_val
|
|
)
|
|
expect_equal(params[["num_iterations"]], num_iterations)
|
|
|
|
# aliases should be removed
|
|
expect_identical(params, list(num_iterations = num_iterations))
|
|
})
|
|
|
|
test_that(".check_wrapper_param() prefers alias to keyword arg", {
|
|
n_estimators <- sample(seq_len(100L), size = 1L)
|
|
num_tree <- sample(seq_len(100L), size = 1L)
|
|
kwarg_val <- sample(seq_len(100L), size = 1L)
|
|
params <- .check_wrapper_param(
|
|
main_param_name = "num_iterations"
|
|
, params = list(
|
|
num_tree = num_tree
|
|
, n_estimators = n_estimators
|
|
)
|
|
, alternative_kwarg_value = kwarg_val
|
|
)
|
|
expect_equal(params[["num_iterations"]], num_tree)
|
|
expect_identical(params, list(num_iterations = num_tree))
|
|
|
|
# switching the order shouldn't switch which one is chosen
|
|
params2 <- .check_wrapper_param(
|
|
main_param_name = "num_iterations"
|
|
, params = list(
|
|
n_estimators = n_estimators
|
|
, num_tree = num_tree
|
|
)
|
|
, alternative_kwarg_value = kwarg_val
|
|
)
|
|
expect_equal(params2[["num_iterations"]], num_tree)
|
|
expect_identical(params2, list(num_iterations = num_tree))
|
|
})
|
|
|
|
test_that(".equal_or_both_null produces expected results", {
|
|
expect_true(.equal_or_both_null(NULL, NULL))
|
|
expect_false(.equal_or_both_null(1.0, NULL))
|
|
expect_false(.equal_or_both_null(NULL, 1.0))
|
|
expect_true(.equal_or_both_null(1.0, 1.0))
|
|
expect_true(.equal_or_both_null(1.0, 1L))
|
|
expect_false(.equal_or_both_null(NA, NULL))
|
|
expect_false(.equal_or_both_null(NULL, NA))
|
|
expect_false(.equal_or_both_null(10.0, 1L))
|
|
expect_true(.equal_or_both_null(0L, 0L))
|
|
})
|
|
|
|
test_that(".check_interaction_constraints() adds skipped features", {
|
|
ref <- letters[1L:5L]
|
|
ic_num <- list(1L, c(2L, 3L))
|
|
ic_char <- list("a", c("b", "c"))
|
|
expected <- list("[0]", "[1,2]", "[3,4]")
|
|
|
|
ic_checked_num <- .check_interaction_constraints(
|
|
interaction_constraints = ic_num, column_names = ref
|
|
)
|
|
|
|
ic_checked_char <- .check_interaction_constraints(
|
|
interaction_constraints = ic_char, column_names = ref
|
|
)
|
|
|
|
expect_equal(ic_checked_num, expected)
|
|
expect_equal(ic_checked_char, expected)
|
|
})
|