tests/testthat/test-parameters.R

test_that("new_parameters() works", {
  result <- new_parameters(a = 1, b = 2)
  expected <- list(a = 1, b = 2)
  class(expected) <- "parameters"
  expect_equal(result, expected)
})

test_that("new_parameters() throws error when parameters are missing names", {
  expect_error(new_parameters(1, 2), regexp = "Must have names")
  expect_error(new_parameters(1, b = 2), "element 1 is empty")
  expect_error(new_parameters(a = 1, b = c(d = 2, 2)), "element 2 is empty")
})

test_that("new_parameters() allows zero parameters", {
  expect_equal(new_parameters(), structure(list(), class = "parameters"))
})

test_that("new_parameters() throws error if names are duplicated", {
  expect_error(new_parameters(a = 1, a = 2), "element 2 is duplicated")
})

test_that("parameters() output test", {
  result <- parameters(a = 1, b = 2)
  expected <- list(a = 1, b = 2)
  class(expected) <- "parameters"
  expect_equal(result, expected)
})

test_that("parameters() sorts named vector parameters by names", {
  result <- parameters(b = 1, a = c("y" = 1, "x" = 2))
  # Note that parameter order is not changed, just order *within* vector parameters
  expected <- list(b = 1, a = c("x" = 2, "y" = 1))
  class(expected) <- "parameters"
  expect_equal(result, expected)
})

test_that("named scalar parameters are not allowed", {
  expect_error(parameters(a = c("erroneous_name" = 1)))
})

test_that("vector parameters must be ordered alphabetically by name", {
  expect_error(
    new_parameters(a = c("z" = 1, "a" = 2)),
    regexp = "must be in alphabetical order"
  )
})

Try the IxPopDyMod package in your browser

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

IxPopDyMod documentation built on Oct. 24, 2023, 1:07 a.m.