test_that("Test effective sample size", {
  S <- matrix(data = c(1, 1, 1, 0, 0, 1), nrow = 3, byrow = TRUE)

  # -----------
  n <- 200
  b1 <- stats::rpois(n = n, lambda = 3)
  b2 <- stats::rpois(n = n, lambda = 4)
  u <- stats::rnorm(n = n, mean = 30, sd = 1)
  B <- cbind(b1, b2)
  c <- matrix(S[1, ])
  b <- (B %*% c)

  w <- .compute_weights(b, u, "samples", "continuous")

  check_w <- .check_weights(w, n_eff_min = 200)
  expect_equal(check_w$warning, TRUE)
  expect_equal(check_w$warning_code, 1)
  expect_equal(check_w$n_eff, n)

  # Try the warning message
  # base_forecast = list(u,b1,b2)
  # A = matrix(S[1,],nrow=1)
  # a = reconc_BUIS(A, base_forecast, in_type = "samples", distr = list("continuous","discrete","discrete"), seed=42)

  # -----------
  n <- 199
  b1 <- stats::rpois(n = n, lambda = 3)
  b2 <- stats::rpois(n = n, lambda = 4)
  u <- stats::rnorm(n = n, mean = 30, sd = 1)
  B <- cbind(b1, b2)
  c <- matrix(S[1, ])
  b <- (B %*% c)

  w <- .compute_weights(b, u, "samples", "continuous")

  check_w <- .check_weights(w, n_eff_min = 200)
  expect_equal(check_w$warning, TRUE)
  expect_equal(check_w$warning_code, 1)
  expect_equal(check_w$n_eff, n)

  # Try the warning message
  # base_forecast = list(u,b1,b2)
  # A = matrix(S[1,],nrow=1)
  # a = bayesRecon::reconc_BUIS(A, base_forecast, in_type = "samples", distr = list("continuous","discrete","discrete"), seed=42)

  # -----------
  n <- 2000
  b1 <- stats::rpois(n = n, lambda = 3)
  b2 <- stats::rpois(n = n, lambda = 4)
  u <- stats::rnorm(n = n, mean = 18, sd = 1)
  B <- cbind(b1, b2)
  c <- matrix(S[1, ])
  b <- (B %*% c)

  w <- .compute_weights(b, u, "samples", "continuous")

  check_w <- .check_weights(w, n_eff_min = 200, p_n_eff = 0.01)
  expect_equal(check_w$warning, TRUE)
  expect_equal(check_w$warning_code, c(2, 3))
  expect_equal(check_w$n_eff < 200, TRUE)

  # Try the warning message
  # base_forecast = list(u,b1,b2)
  # A = matrix(S[1,],nrow=1)
  # a = bayesRecon::reconc_BUIS(A, base_forecast, in_type = "samples", distr = list("continuous","discrete","discrete"), seed=42)
})
