tests/testthat/test_JLL.R

library(testthat)
library(MultiATSM)

# Load inputs
data(RiskFacFull)
RF_TS <- RiskFacFull[1:12, ]
N <- 3

JLLinputs <- list(
  Economies = c("China", "Brazil"), DomUnit = "China",
  WishSigmas = TRUE, SigmaNonOrtho = NULL, JLLModelType = "JLL original"
)


# 1) Test output structure
test_that("JLL returns correct output structure", {
  K <- nrow(RF_TS)
  res <- JLL(RF_TS, N, JLLinputs)
  expect_type(res, "list")
  expect_true(all(c("a_W", "a_DU_CS", "b", "c", "PIb", "PIac", "PI", "Ye", "k0_e", "k1_e", "k0", "k1", "Sigmas")
  %in% names(res)))
  expect_equal(dim(res$k0), c(K, 1))
  expect_equal(dim(res$k1), c(K, K))
  expect_equal(dim(res$PI), c(K, K))
  expect_type(res$Sigmas, "list")
})


# 2) Verify the absence of a sigma list
test_that("JLL issues an error for invalid output", {
  JLLinputs$WishSigmas <- FALSE
  res <- JLL(RF_TS, N, JLLinputs)
  expect_false(is.list(res$Sigmas))
})


# 3) Test error for No DomUnit model
test_that("JLL issues an error for invalid output (No DomUnit model)", {
  JLLinputs$WishSigmas <- FALSE
  JLLinputs$JLLModelType <- "JLL No DomUnit"
  expect_error(JLL(RF_TS, N, JLLinputs, CheckInputs = TRUE))
})


# 4) Test error for no DomUnit assigned
test_that("JLL issues an error for invalid output (No DomUnit assigned)", {
  JLLinputs$WishSigmas <- FALSE
  JLLinputs$DomUnit <- "None"
  expect_error(JLL(RF_TS, N, JLLinputs, CheckInputs = TRUE))
})

Try the MultiATSM package in your browser

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

MultiATSM documentation built on Nov. 5, 2025, 7:01 p.m.