test_that("formula interface and prediction work", {
  # simulate data
  set.seed(56)
  n <- 50L
  predn <- 10L
  dat <- cbind(x = runif(n, 3, 4),
               z = runif(n, -1, -0.5))
  preddat <- cbind(x = runif(predn, 3, 4),
                   z = runif(predn, -1, -0.5))
  designmatrix <- matrix(c(dat[, "x"], dat[, "x"]^2, log10(dat[, "x"]),
                         dat[, "z"]), ncol = 4)
  predmatrix <- matrix(c(preddat[, "x"], preddat[, "x"]^2, log10(preddat[, "x"]),
                       preddat[, "z"]), ncol = 4)
  betas <- matrix(c(-1, 1, 2, 0), ncol = 1)
  y <- designmatrix %*% betas + svsim(n)$y
  # standard interface
  set.seed(57)
  res1 <- svsample(y, designmatrix = designmatrix)
  pred1 <- suppressWarnings(predict(res1, newdata = predmatrix))
  # formula interface
  data <- as.data.frame(dat)
  data$y <- y
  preddata <- as.data.frame(preddat)
  set.seed(57)
  res2 <- svlm(y ~ 0 + x + I(x^2) + log10(x) + z, data = data)
  pred2 <- suppressWarnings(predict(res2, newdata = preddata))

  expect_equal(para(res1)[, "mu"], para(res2)[, "mu"])
  expect_equal(predy(pred1), predy(pred2))
})
