tests/testthat/test-camel_index.R

test_that("camel_index works with data frames", {

  result <- camel_index(camel_2015, camel_2022)

  expect_s3_class(result, "camel_index")
  expect_equal(nrow(result$index_table), nrow(camel_2015))
  expect_named(result$index_table, c("bank", "I_mw", "PD"))
  expect_type(result$mw_lasp, "double")
  expect_type(result$mw_pash, "double")
  expect_type(result$I_mw, "double")
  expect_type(result$PD, "double")
  expect_length(result$weights_base, 5)
  expect_length(result$weights_current, 5)
})

test_that("camel_index works with matrices and bank_names", {

  base_mat <- as.matrix(camel_2015[, -1])
  curr_mat <- as.matrix(camel_2022[, -1])
  banks <- camel_2015$Bank

  result <- camel_index(base_mat, curr_mat, bank_names = banks)

  expect_s3_class(result, "camel_index")
  expect_equal(result$bank_names, as.character(banks))
})

test_that("camel_index validates input dimensions", {

  expect_error(
    camel_index(camel_2015, camel_2015[1:5, ]),
    "Dimension mismatch"
  )
})

test_that("camel_index requires bank_names for matrices", {

  base_mat <- as.matrix(camel_2015[, -1])
  curr_mat <- as.matrix(camel_2022[, -1])

  expect_error(
    camel_index(base_mat, curr_mat),
    "`bank_names` is required"
  )
})

test_that("camel_index handles single-column data frames", {
  expect_error(
    camel_index(data.frame(Bank = "A"), data.frame(Bank = "A")),
    "must have at least 2 columns"
  )
})

test_that("camel_index returns expected structure", {

  result <- camel_index(camel_2015, camel_2022)

  expected_names <- c(
    "index_table", "mw_lasp", "mw_pash", "I_mw", "PD",
    "weights_base", "weights_current", "eigenvalues_base",
    "eigenvalues_current", "n_factors_base", "n_factors_current",
    "fa_base", "fa_current", "relativity_data", "base_data",
    "current_data", "bank_names", "n_factors", "call"
  )

  expect_named(result, expected_names)
})

test_that("camel_index print method works", {

  result <- camel_index(camel_2015, camel_2022)

  expect_output(print(result))
})

test_that("camel_index summary method works", {

  result <- camel_index(camel_2015, camel_2022)

  expect_snapshot(summary(result))
})

Try the CamelRatiosIndex package in your browser

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

CamelRatiosIndex documentation built on June 20, 2026, 5:07 p.m.