tests/testthat/test-chyper.R

test_that("dchyper errors on n length", {
  expect_error(dchyper(3, 5, 6, 5, verbose = F))
})

test_that("dchyper errors on s length", {
  expect_error(dchyper(3, c(5,10), c(6, 10), c(4,8), verbose = F))
})

test_that("dchyper errors on m length not equal m length", {
  expect_error(dchyper(3, 5, c(6, 10, 8), c(4,8), verbose = F))
})

test_that("dchyper errors on negative values", {
  expect_error(dchyper(3, 5, c(6, -2), c(4,8), verbose = F))
})

test_that("dchyper errors on sample bigger than population", {
  expect_error(dchyper(3, 5, c(6, 2), c(4,8), verbose = F))
})

test_that("dchyper errors on non-integers", {
  expect_error(dchyper(3, 5, c(6, 4.5), c(4,8), verbose = F))
})

test_that("pchyper works", {
  expect_equal(pchyper(3, 5, c(6, 10), c(4,8), verbose = F), sum(dchyper(0, 5, c(6, 10), c(4,8), verbose = F),
                                                    dchyper(1, 5, c(6, 10), c(4,8), verbose = F),
                                                    dchyper(2, 5, c(6, 10), c(4,8), verbose = F),
                                                    dchyper(3, 5, c(6, 10), c(4,8), verbose = F)))
})

test_that("qchyper at 1 works", {
  expect_equal(qchyper(1, 5, c(6, 10), c(5,8), verbose = F), 5)
})

test_that("qchyper at 0 works", {
  expect_equal(qchyper(0, 5, c(6, 10), c(5,8), verbose = F), 0)
})

test_that("meanchyper works", {
  expect_equal(meanchyper(5, c(6, 10), c(5,8)), 120/99)
})

test_that("pvalchyper works", {
  expect_equal(1-pvalchyper(3, 5, c(6, 10), c(5,8), "upper", verbose = F),
               pchyper(2, 5, c(6, 10), c(5,8), verbose = F))
})

test_that("pvalchyper tail is upper or lower", {
  expect_error(pvalchyper(3, 5, c(6, 6), c(4,8), verbose = F, tail = "a"))
})

test_that("mleS works", {
  set.seed(1)
  expect_equal(mleS(rchyper(10^5, 5, c(6, 10), c(5,8), verbose = F),
                    c(6, 10), c(5,8), verbose = F), 5)
})

test_that("mleS input intersection not greater than sample size", {
  expect_error(mleS(6, c(6, 10), c(5,8), verbose = F))
})

test_that("mleN works", {
  set.seed(1)
  expect_equal(mleN(1, rchyper(10^5, 5, c(6, 10), c(5,8), verbose = F),
                    5, c(0, 10), c(5,8), verbose = F), 6)
})

test_that("mleM works", {
  set.seed(1)
  expect_equal(mleM(1, rchyper(10^5, 5, c(6, 10), c(5,8), verbose = F),
                    5, c(6, 10), c(0,8), verbose = F), 5)
})

test_that("momN works", {
  set.seed(1)
  expect_equal(momN(1, rchyper(10^5, 5, c(6, 10), c(5,8), verbose = F),
                    5, c(0, 10), c(5,8)), 6.01027533946055)
})

test_that("momM works", {
  set.seed(1)
  expect_equal(momM(1, rchyper(10^5, 5, c(6, 10), c(5,8), verbose = F),
                    5, c(6, 10), c(0,8)), 4.99533375)
})
WillNickols/chyper documentation built on Sept. 1, 2024, 10:11 p.m.