context("cv-indices") # tests for cv_folds and cv_ids test_that("k is valid", { cvfuns <- c(cv_folds, cv_ids) for (cvfun in cvfuns) { expect_error(cvfun(n = 10, K = 1000), "cannot exceed n") expect_error(cvfun(n = 10, K = 1), "must be at least 2") expect_error(cvfun(n = 10, K = c(4, 9)), "a single integer value") expect_error(cvfun(n = 10, K = "a"), "a single integer value") } }) test_that("cv_folds produces sensible results", { out <- cv_folds(n = 10, K = 3) expect_equal(length(out), 10) expect_equal(min(out), 1) expect_equal(max(out), 3) }) test_that("cv_ids checks the \"out\" argument", { expect_error(cv_ids(n = 10, K = 3, out = "zzz"), "'arg' should be one of") expect_error(cv_ids(n = 10, K = 3, out = c("yyy", "zzz")), "must be of length 1") expect_error(cv_ids(n = 10, K = 3, out = 12), "must be NULL or a character vector") }) test_that("cv_ids produces sensible results with out=\"foldwise\"", { out <- cv_ids(n = 10, K = 3, out = "foldwise") expect_equal(length(out), 3) expect_named(out[[1]], c("tr", "ts")) }) test_that("cv_ids produces sensible results with out=\"indices\"", { out <- cv_ids(n = 10, K = 3, out = "indices") expect_equal(length(out), 2) expect_named(out, c("tr", "ts")) expect_equal(length(out$tr), 3) expect_equal(length(out$ts), 3) })