tests/testthat/test-default.penalty.R

context("Unit tests of the default.penalty function")

# Random number of sample, random number of classes
p <- 10
n <- replicate(sample(2:5, 1), sample(3:9, 1))
S <- createS(n = n, p = p)
G <- length(S)





test_that("default.penalty accept different input types", {

  # Handling one-way designs
  expect_that(default.penalty(0), is_a("matrix")) # Degenerate case
  expect_that(default.penalty(1), is_a("matrix")) # Degenerate case
  expect_that(default.penalty(2), is_a("matrix"))
  expect_that(default.penalty(4), is_a("matrix"))
  expect_that(default.penalty(sample(1:1000, 1)), is_a("matrix"))

  # Use the length of the list
  expect_that(default.penalty(S), is_a("matrix"))
  expect_that(default.penalty(G = S), is_a("matrix"))

  # Use a data.frame
  df0 <- expand.grid(Factor = c("lvl1", "lvl2"))
  expect_that(default.penalty(df0), is_a("matrix"))
  expect_that(default.penalty(df = df0), is_a("matrix"))

  # Some more elaborate examples
  Slist <- vector("list", 6)
  df1 <- expand.grid(DS = c("DS1", "DS2", "DS3"), ER = c("ER+", "ER-"))

  # Usage (various interface demonstrations)
  expect_that(default.penalty(6, df1, type = "Complete"), is_a("matrix"))
  expect_that(default.penalty(6, type = "CartesianEqual"), gives_warning("df"))
  expect_that(default.penalty(6, df1, type = "CartesianEqual"), is_a("matrix"))
  expect_that(default.penalty(Slist, df1, type = "CartesianEqual"), is_a("matrix"))
  expect_that(default.penalty(6, df1, type = "CartesianUnequal"), is_a("matrix"))
  expect_that(default.penalty(df1), is_a("matrix"))

  # A 2 by 2 by 2 design
  df2 <- expand.grid(A = c("A1", "A2"), B = c("B1", "B2"), C = c("C1", "C3"))
  expect_that(default.penalty(df2), is_a("matrix"))
  expect_that(default.penalty(df2, type = "CartesianEqual"), is_a("matrix"))
  expect_that(default.penalty(df2, type = "CartesianUnequal"), is_a("matrix"))

})

Try the rags2ridges package in your browser

Any scripts or data that you put into this service are public.

rags2ridges documentation built on Oct. 14, 2023, 5:06 p.m.