context("Tests for ssarima() function")

# Basic SSARIMA selection
testModel <- auto.ssarima(BJsales, silent=TRUE)
test_that("Test if Auto SSARIMA selected correct model for BJsales", {
    expect_equal(testModel$model, "ARIMA(0,1,2) with drift")
})

# Reuse previous SSARIMA
test_that("Reuse previous SSARIMA on BJsales", {
    expect_equal(ssarima(BJsales, model=testModel, silent=TRUE)$cf, testModel$cf)
})

# Test some crazy order of SSARIMA
test_that("Test if crazy order SSARIMA was estimated on AirPassengers", {
    skip_on_cran()
    testModel <- ssarima(AirPassengers, orders=list(ar=c(1,1,0), i=c(1,0,1),ma=c(0,1,1)),
                         lags=c(1,6,12), h=18, holdout=TRUE, initial="o", silent=TRUE, interval=TRUE)
    expect_equal(testModel$model, "SARIMA(1,1,0)[1](1,0,1)[6](0,1,1)[12]")
})

# Combine SSARIMA
test_that("Test if combined ARIMA works", {
    skip_on_cran()
    testModel <- auto.ssarima(AirPassengers, combine=TRUE, silent=TRUE, ic="AIC")
    expect_match(testModel$model, "combine")
})

# Test selection of exogenous with Auto.SSARIMA
test_that("Select exogenous variables for auto SSARIMAX on BJsales with selection", {
    skip_on_cran()
    x <- BJsales.lead
    y <- BJsales
    testModel <- auto.ssarima(y, orders=list(ar=3,i=2,ma=3), lags=1, h=18, holdout=TRUE, xreg=xregExpander(x), regressors="select", silent=TRUE)
    expect_equal(ncol(testModel$xreg),1)
})
