data(iris)

# teardown({
#   detach("package:kernlab", unload = TRUE)
# })

test_that("pmml.ksvm error when a specified kernel is not supported", {
  skip_if_not_installed("kernlab")
  library(kernlab)
  expect_error(
    pmml(ksvm(Sepal.Length ~ ., data = iris, kernel = "laplacedot"), dataset = iris),
    "laplacedot kernel is not supported. Supported ksvm kernels: rbfdot, polydot, vanilladot, tanhdot."
  )

  invisible(capture.output(mod2 <- ksvm(Sepal.Length ~ ., data = iris, kernel = "besseldot")))
  expect_error(
    pmml(mod2, dataset = iris),
    "besseldot kernel is not supported. Supported ksvm kernels: rbfdot, polydot, vanilladot, tanhdot."
  )

  invisible(capture.output(mod3 <- ksvm(Sepal.Length ~ ., data = iris, kernel = "anovadot")))
  expect_error(
    pmml(mod3, dataset = iris),
    "anovadot kernel is not supported. Supported ksvm kernels: rbfdot, polydot, vanilladot, tanhdot."
  )

  invisible(capture.output(mod4 <- ksvm(Sepal.Length ~ ., data = iris, kernel = "splinedot")))
  expect_error(
    pmml(mod4, dataset = iris),
    "splinedot kernel is not supported. Supported ksvm kernels: rbfdot, polydot, vanilladot, tanhdot."
  )

  # The following test does not run due to a ksvm() error - "Error in .local(x, ...) :  kernel matrix not square!"
  # expect_error(pmml(ksvm(Sepal.Length ~ ., data=iris,kernel="matrix"),dataset=iris),
  #            "matrix kernel is not supported. Supported ksvm kernels: rbfdot, polydot, vanilladot, tanhdot.")
})
