test_that("sugm clime basic call works", { set.seed(301) x <- matrix(rnorm(200), nrow = 40, ncol = 5) fit <- sugm(x, nlambda = 3, method = "clime", verbose = FALSE, max.ite = 2000) expect_s3_class(fit, "sugm") expect_equal(fit$method, "clime") expect_equal(fit$nlambda, 3L) expect_length(fit$path, 3L) }) test_that("sugm tiger basic call works", { set.seed(302) x <- matrix(rnorm(200), nrow = 40, ncol = 5) fit <- sugm(x, nlambda = 3, method = "tiger", verbose = FALSE, max.ite = 2000) expect_s3_class(fit, "sugm") expect_equal(fit$method, "tiger") expect_length(fit$path, 3L) }) test_that("sugm clime accepts covariance matrix input", { set.seed(303) x <- matrix(rnorm(200), nrow = 40, ncol = 5) S <- cov(x) fit <- sugm(S, nlambda = 3, method = "clime", verbose = FALSE, max.ite = 2000) expect_s3_class(fit, "sugm") expect_true(fit$cov.input) }) test_that("sugm clime tolerates missing values in raw data", { set.seed(304) x <- matrix(rnorm(200), nrow = 40, ncol = 5) x[2, 3] <- NA x[10, 1] <- NA fit <- sugm(x, nlambda = 3, method = "clime", verbose = FALSE, max.ite = 2000) expect_s3_class(fit, "sugm") }) test_that("sugm tiger rejects missing values", { set.seed(305) x <- matrix(rnorm(200), nrow = 40, ncol = 5) x[2, 3] <- NA expect_error( sugm(x, nlambda = 3, method = "tiger", verbose = FALSE), "missing values" ) }) test_that("sugm sym='and' is at least as sparse as sym='or'", { set.seed(306) x <- matrix(rnorm(200), nrow = 40, ncol = 5) fit_or <- sugm(x, nlambda = 3, method = "clime", sym = "or", verbose = FALSE, max.ite = 2000) fit_and <- sugm(x, nlambda = 3, method = "clime", sym = "and", verbose = FALSE, max.ite = 2000) for (i in seq_len(3)) { expect_true(sum(fit_and$path[[i]]) <= sum(fit_or$path[[i]])) } }) test_that("sugm tiger rejects d < 3", { set.seed(307) x <- matrix(rnorm(40), nrow = 20, ncol = 2) expect_error( sugm(x, nlambda = 3, method = "tiger", verbose = FALSE), "d>=3" ) })