test_that("Zero probabilities for values <0", {
  expect_equal(c(0, 0), dbetapr(c(-1, 0), 1, 1, 1))
  expect_equal(0, ddweibull(-1, 0.5, 1))
  expect_equal(0, ddunif(-1, 0, 5))
  expect_equal(0, dcat(-1, c(0.5, 0.5)))
  expect_equal(0, dmnom(c(-1, 1), 5, c(0.5, 0.5)))
  expect_warning(expect_equal(0, dbern(-1)))
  expect_equal(0, dbbinom(-1, 1, 1, 1))
  expect_equal(0, dbnbinom(-1, 1, 1, 1))
  expect_equal(0, dgpois(-1, 1, 1))
  expect_equal(0, dmvhyper(c(1, 1, -1), c(2, 2, 2), 3))
  expect_equal(0, dzip(-1, 1, 0.5))
  expect_equal(0, dzib(-1, 1, 0.5, 0.5))
  expect_equal(0, dzinb(-1, 1, 0.5, 0.5))

  expect_equal(0, dbvpois(-1, 1, 1, 1, 1))
  expect_equal(0, dbvpois(1, -1, 1, 1, 1))

  expect_equal(0, dinvchisq(-1, 1))
  expect_equal(0, dinvchisq(-1, 1, 1))
  expect_equal(0, dinvgamma(-1, 1, 1))
  expect_equal(0, dgompertz(-1, 1, 1))
  expect_equal(0, dgpois(-1, 1, 1))
  expect_equal(0, dlomax(-1, 1, 1))
  expect_equal(0, dpower(-1, 1, 0.5))
  expect_equal(0, dsgomp(-1, 0.4, 1))
  expect_equal(0, drayleigh(-1, 1))
  expect_equal(0, dwald(-1, 1, 1))

  expect_equal(0, dhcauchy(-1, 1))
  expect_equal(0, dhnorm(-1, 1))
  expect_equal(0, dht(-1, 5, 1))

  expect_equal(0, dmixpois(-1, c(1, 2, 3), c(1 / 3, 1 / 3, 1 / 3)))
  expect_equal(0, dtpois(-1, lambda = 5, a = 6))

  expect_equal(0, dnhyper(-1, 60, 35, 15))

  expect_equal(0, ddgamma(-1, 9, 1))
})

test_that("Zero probabilities for values x < mean", {
  expect_equal(0, dfatigue(-1, 1, 1, 0))
  expect_equal(0, dfrechet(-1, 1, 0, 1))
  expect_equal(0, dgpd(-1, 0, 1, 1))
})

test_that("Zero probabilities for values < 1", {
  expect_equal(c(0, 0), dlgser(c(-1, 0), 0.5))
  expect_equal(c(0, 0), dpareto(c(-1, 0), 1, 1))
  expect_equal(c(0, 0), dtpois(c(-1, 0), lambda = 5, a = 0))
})

test_that("No negative samples for distributions with positive support", {
  set.seed(42)
  expect_true(all(rgpd(1000, xi = 0) > 0))
  expect_true(all(rgpd(1000, xi = 0.1) > 0))
  expect_true(all(rgpd(1000, xi = -0.1) > 0))
})
