tests/testthat/test-subset.R

test_that("subset.term", {
  term <- new_term(c("alpha[1]", "alpha[2]", "sigma"))
  expect_identical(subset(term, character(0)), new_term())
  expect_error(subset(term, "beta"),
    "^`pars` must match 'alpha' or 'sigma', not 'beta'[.]$",
    class = "chk_error"
  )
  term <- new_term(c(
    "alpha[1]", "alpha[2]", "beta[1,1]", "beta[2,1]",
    "beta[1,2]", "beta[2,2]", "sigma"
  ))
  expect_identical(subset(term), term)
  expect_identical(subset(term, "sigma"), new_term("sigma"))
  expect_identical(
    subset(term, c("beta", "sigma")),
    new_term(c(
      "beta[1,1]", "beta[2,1]",
      "beta[1,2]", "beta[2,2]", "sigma"
    ))
  )
  expect_identical(
    subset(term, c("sigma", "beta")),
    new_term(c(
      "beta[1,1]", "beta[2,1]",
      "beta[1,2]", "beta[2,2]", "sigma"
    ))
  )
  expect_error(subset(term, "tt"),
    "^`pars` must match 'alpha', 'beta' or 'sigma', not 'tt'[.]$",
    class = "chk_error"
  )
})

test_that("subset.term_rcrd", {
  term_rcrd <- as_term_rcrd(new_term(c("alpha[1]", "alpha[2]", "sigma")))
  expect_identical(subset(term_rcrd, character(0)), new_term_rcrd())
  expect_error(subset(term_rcrd, "beta"),
               "^`pars` must match 'alpha' or 'sigma', not 'beta'[.]$",
               class = "chk_error"
  )
  term_rcrd <- as_term_rcrd(new_term(c(
    "alpha[1]", "alpha[2]", "beta[1,1]", "beta[2,1]",
    "beta[1,2]", "beta[2,2]", "sigma"
  )))
  expect_identical(subset(term_rcrd), term_rcrd)
  expect_identical(subset(term_rcrd, "sigma"), as_term_rcrd(new_term("sigma")))
  expect_identical(
    subset(term_rcrd, c("beta", "sigma")),
    as_term_rcrd(new_term(c(
      "beta[1,1]", "beta[2,1]",
      "beta[1,2]", "beta[2,2]", "sigma"
    )))
  )
  expect_identical(
    subset(term_rcrd, c("sigma", "beta")),
    as_term_rcrd(new_term(c(
      "beta[1,1]", "beta[2,1]",
      "beta[1,2]", "beta[2,2]", "sigma"
    )))
  )
  expect_error(subset(term_rcrd, "tt"),
               "^`pars` must match 'alpha', 'beta' or 'sigma', not 'tt'[.]$",
               class = "chk_error"
  )
})

test_that("subset.term deprecated", {
  rlang::local_options(lifecycle_verbosity = "quiet")
  term <- new_term(c("alpha[1]", "alpha[2]", "sigma"))

  lifecycle::expect_deprecated(subset(term, select = NULL))
  lifecycle::expect_defunct(subset(term, select = "alpha", pars = "alpha"))

  expect_identical(subset(term, select = character(0)), new_term())
})


test_that("subset.term missing values", {
  expect_error(subset(NA_term_), "^`x` must not have any missing values[.]$",
    class = "chk_error"
  )
  expect_error(subset(c(NA_term_, new_term("a"))),
    "^`x` must not have any missing values[.]$",
    class = "chk_error"
  )
})

Try the term package in your browser

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

term documentation built on Sept. 29, 2022, 5:14 p.m.