tests/testthat/test-rrda_fit.R

test_that("rrda.fit returns expected structure (component = TRUE)", {
  set.seed(123)
  X <- matrix(rnorm(100 * 20), nrow = 100)
  Y <- matrix(rnorm(100 * 10), nrow = 100)

  result <- rrda.fit(Y = Y, X = X, nrank = 1:3, lambda = c(0.1, 1), component = TRUE)

  expect_type(result, "list")
  expect_true("Bhat_comp" %in% names(result))
  expect_true("lambda" %in% names(result))
  expect_true("rank" %in% names(result))
  expect_true(is.list(result$Bhat_comp))
  expect_length(result$Bhat_comp, 2)  # 2 lambdas
})

test_that("rrda.fit returns matrix-form output (component = FALSE)", {
  set.seed(456)
  X <- matrix(rnorm(100 * 30), nrow = 100)
  Y <- matrix(rnorm(100 * 15), nrow = 100)

  result <- rrda.fit(Y = Y, X = X, nrank = c(1, 2), lambda = 1, component = FALSE)

  expect_type(result, "list")
  expect_true("Bhat_mat" %in% names(result))
  expect_length(result$Bhat_mat, 1)  # 1 lambda
  expect_true(is.list(result$Bhat_mat[[1]]))  # matrix list for each rank
})

test_that("rrda.fit stops with non-numeric nrank", {
  X <- matrix(rnorm(50), nrow = 10)
  Y <- matrix(rnorm(50), nrow = 10)

  expect_error(rrda.fit(Y, X, nrank = "a"))
})

test_that("rrda.fit stops with too large rank", {
  X <- matrix(rnorm(100), nrow = 10)
  Y <- matrix(rnorm(100), nrow = 10)

  expect_error(rrda.fit(Y, X, nrank = 20))
})

test_that("rrda.fit stops with negative lambda", {
  X <- matrix(rnorm(100), nrow = 10)
  Y <- matrix(rnorm(100), nrow = 10)

  expect_error(rrda.fit(Y, X, lambda = -1))
})

Try the rrda package in your browser

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

rrda documentation built on June 8, 2025, 12:09 p.m.