skip_on_os(c("mac", "linux", "solaris"))
skip_if_not_installed("brglm2")
skip_if_not_installed("MASS")
skip_if_not_installed("nnet")

test_that("print ggpredict ordinal outcome", {
  data("stemcell", package = "brglm2")
  m_bracl <- brglm2::bracl(research ~ as.numeric(religion) + gender,
    weights = frequency,
    data = stemcell, type = "ML"
  )
  m_polr <- MASS::polr(research ~ as.numeric(religion) + gender,
    weights = frequency,
    data = stemcell
  )
  m_nnet <- nnet::multinom(research ~ as.numeric(religion) + gender,
    weights = frequency,
    data = stemcell
  )

  out1 <- ggpredict(m_bracl, "gender")
  out2 <- ggpredict(m_polr, "gender")
  out3 <- ggpredict(m_nnet, "gender")

  expect_equal(out1$predicted, out2$predicted, tolerance = 0.05)
  expect_equal(out1$predicted, out3$predicted, tolerance = 0.05)

  out4 <- predict_response(m_bracl, "gender", margin = "empirical")
  out5 <- predict_response(m_polr, "gender", margin = "empirical")
  out6 <- predict_response(m_nnet, "gender", margin = "empirical")

  expect_named(
    out4,
    c(
      "x", "predicted", "std.error", "conf.low", "conf.high", "response.level",
      "group"
    )
  )
  expect_equal(as.character(out4$response.level), out1$response.level, ignore_attr = TRUE)
  expect_equal(out4$predicted, out6$predicted, tolerance = 0.05)
  expect_equal(out5$predicted, c(
    0.30221, 0.44275, 0.1502, 0.10484, 0.29403, 0.44341, 0.15392,
    0.10863
  ), tolerance = 0.05)
})
