tests/testthat/test-eta.R

modeta <- exmodel(compile = FALSE)
modlarge <- mrgsolve::mcode("mod", "$PARAM ETA1 = 0, ETA2 = 0, ETA3 = 0, ETA4 = 0, ETA5 = 0, ETA6 = 0, ETA7 = 0, ETA8 = 0, ETA9 = 0, ETA10 = 0, ETA11 = 0", compile = FALSE)
test_that("eta works", {
  expect_equal(eta(modeta), c(ETA1 = 0, ETA2 = 0, ETA3 = 0))
  expect_equal(eta(mrgsolve::house()), NULL)
  expect_equal(eta(0.1), c(ETA1 = 0.1))
  expect_equal(eta(1, 0.2, c(0.3, 0.4)), c(ETA1 = 1, ETA2 = 0.2, ETA3 = 0.3, ETA4 = 0.4))
  expect_equal(eta(1, 0.2, list(0.3, 0.4)), c(ETA1 = 1, ETA2 = 0.2, ETA3 = 0.3, ETA4 = 0.4))
  expect_equal(eta(), NULL)
  expect_equal(eta(n = 3), c(ETA1 = 0, ETA2 = 0, ETA3 = 0))
  expect_equal(eta(n = 3, val = 1), c(ETA1 = 1, ETA2 = 1, ETA3 = 1))

  # even if n > 9
  expect_equal(eta(modlarge), c(ETA1 = 0, ETA2 = 0, ETA3 = 0, ETA4 = 0, ETA5 = 0, ETA6 = 0, ETA7 = 0, ETA8 = 0, ETA9 = 0, ETA10 = 0, ETA11 = 0))
})

test_that("eta() overrides the order of eta in model object", {

  expect_equal(sort_etanames(c("ETA1", "ETA33", "ETA2", "ETA11", "ETA22", "ETA3")), c("ETA1", "ETA2", "ETA3", "ETA11", "ETA22", "ETA33"))
  expect_named(sort_eta(c(ETA1 = 0, ETA33 = 0, ETA2 = 0, ETA11 = 0, ETA22 = 0, ETA3 = 0)), c("ETA1", "ETA2", "ETA3", "ETA11", "ETA22", "ETA33"), ignore.order = FALSE)

  expect_equal(eta(mcode("model", "$PARAM ETA1 = 0, ETA2 = 0", compile = FALSE)), c(ETA1 = 0, ETA2 = 0))
  expect_equal(eta(mcode("model", "$PARAM ETA2 = 0, ETA1 = 0", compile = FALSE)), c(ETA1 = 0, ETA2 = 0))
})

test_that("make_eta_names works", {
  expect_equal(make_eta_names(x = c(1,3,5)), c("ETA1", "ETA3", "ETA5"))
  expect_equal(make_eta_names(n = 3), c("ETA1", "ETA2", "ETA3"))
})

test_that("rename_as_eta works", {
  expect_equal(rename_as_eta(c(0.1, 0.2, 0.3)), c(ETA1 = 0.1, ETA2 = 0.2, ETA3 = 0.3))
  mat <- do.call(cbind, list(ETA1 = c(0.1, 1), ETA2 = c(0.2, 2), ETA3 = c(0.3, 3)))
  expect_equal(rename_as_eta(matrix(c(0.1, 1, 0.2, 2, 0.3, 3), ncol = 3)), mat)
})

test_that("eta_length works", {
  expect_equal(eta_length(modeta), 3)
  expect_equal(eta_length(c(ETA1 = 0, ETA2 = 0)), 2)
})

test_that("eta_names works", {
  expect_equal(eta_names(modeta), c("ETA1", "ETA2", "ETA3"))
  expect_equal(eta_names(c(ETA1 = 0, ETA2 = 0)), c("ETA1", "ETA2"))
  # even if n > 9
  expect_equal(eta_names(modlarge), c("ETA1", "ETA2", "ETA3", "ETA4", "ETA5", "ETA6", "ETA7", "ETA8", "ETA9", "ETA10", "ETA11"))
})

Try the mapbayr package in your browser

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

mapbayr documentation built on July 26, 2023, 5:16 p.m.