test_that("ranger + importance() works", {
  skip_if_not_installed("ranger")
  suppressPackageStartupMessages(library(ranger))
  n <- 50
  p <- 400
  dat <- data.frame(y = factor(rbinom(n, 1, .5)), replicate(p, runif(n)))
  rf.sim <- ranger(y ~ ., dat, importance = "impurity_corrected")
  expected_outcome <- importance_pvalues(rf.sim, method = "janitza")
  x <- axe_call(rf.sim)
  expect_equal(x$call, rlang::expr(dummy_call()))
  x <- axe_fitted(x)
  expect_equal(x$predictions, numeric(0))
  expect_equal(importance_pvalues(x, method = "janitza"), expected_outcome)
  expected_outcome <- importance(rf.sim)
  expect_equal(importance(x), expected_outcome)
})

test_that("ranger + treeInfo() works ", {
  skip_if_not_installed("ranger")
  suppressPackageStartupMessages(library(ranger))
  rf.iris <- ranger(Species ~ ., data = iris, importance = "permutation")
  set.seed(123)
  expected_outcome <- importance_pvalues(rf.iris, method = "altmann",
                                         num.permutations = 10,
                                         formula = Species ~ .,
                                         data = iris)
  x <- butcher(rf.iris)
  set.seed(123)
  expect_equal(importance_pvalues(x, method = "altmann",
                                  num.permutations = 10,
                                  formula = Species ~ .,
                                  data = iris), expected_outcome)
  expected_outcome <- treeInfo(rf.iris, tree = 1)
  expect_equal(treeInfo(x, tree = 1), expected_outcome)
  expect_equal(predict(x, data = iris[1:3,], predict.all = TRUE),
               predict(rf.iris, data = iris[1:3,], predict.all = TRUE))
})


test_that("ranger + quantiles option works ", {
  skip_if_not_installed("ranger")
  suppressPackageStartupMessages(library(ranger))
  rf <- ranger(mpg ~ ., data = mtcars, quantreg = TRUE)
  expected_outcome <- predict(rf, mtcars[27:32, ], type = "quantiles")
  x <- butcher(rf)
  expect_equal(predict(x, mtcars[27:32, ], type = "quantiles"),
               expected_outcome)
})

test_that("ranger + survival option works", {
  skip_if_not_installed("ranger")
  skip_if_not_installed("survival")
  suppressPackageStartupMessages(library(ranger))
  suppressPackageStartupMessages(library(survival))
  rg.veteran <- ranger(Surv(time, status) ~ ., data = veteran)
  x <- butcher(rg.veteran)
  expect_equal(timepoints(x),
               timepoints(rg.veteran))
})
