## ---- tsML tests ------------------------------------------------------------ test_that("nrm_arima returns model and AIC", { data(nrm_example, package = "NRMstatsML") ar <- nrm_arima(nrm_example, value_var = "crop_yield") expect_s3_class(ar, "nrm_arima") expect_true(is.numeric(ar$aic)) expect_true(is.numeric(ar$bic)) expect_length(ar$order, 3) }) test_that("nrm_forecast returns forecast object", { data(nrm_example, package = "NRMstatsML") fc <- nrm_forecast(nrm_example, value_var = "crop_yield", horizon = 3) expect_s3_class(fc, "nrm_forecast") expect_equal(fc$horizon, 3) expect_true(is.numeric(fc$accuracy)) }) test_that("nrm_forecast errors on unknown method", { data(nrm_example, package = "NRMstatsML") expect_error( nrm_forecast(nrm_example, value_var = "crop_yield", method = "xgboost"), "Unknown method" ) }) ## ---- uncertaintyML tests --------------------------------------------------- test_that("nrm_bootstrap returns mean, sd, and CI", { data(nrm_example, package = "NRMstatsML") bs <- nrm_bootstrap(nrm_example, stat_fn = function(d) mean(d$crop_yield), n_iter = 200) expect_s3_class(bs, "nrm_bootstrap") expect_true(is.numeric(bs$mean)) expect_true(is.numeric(bs$sd)) expect_length(bs$ci, 2) expect_true(bs$ci[1] <= bs$ci[2]) }) test_that("nrm_monte_carlo returns mean, sd, and CI", { data(nrm_example, package = "NRMstatsML") mc <- nrm_monte_carlo(nrm_example, stat_fn = function(d) mean(d$crop_yield), n_iter = 200) expect_s3_class(mc, "nrm_monte_carlo") expect_true(is.numeric(mc$mean)) expect_length(mc$ci, 2) }) test_that("nrm_uncertainty dispatches to bootstrap", { data(nrm_example, package = "NRMstatsML") unc <- nrm_uncertainty(nrm_example, stat_fn = function(d) mean(d$crop_yield), method = "bootstrap", n_iter = 100) expect_true(inherits(unc, "nrm_uncertainty")) expect_equal(unc$method, "bootstrap") }) test_that("nrm_uncertainty dispatches to monte_carlo", { data(nrm_example, package = "NRMstatsML") unc <- nrm_uncertainty(nrm_example, stat_fn = function(d) mean(d$crop_yield), method = "monte_carlo", n_iter = 100) expect_equal(unc$method, "monte_carlo") }) test_that("nrm_bootstrap errors when stat_fn is not a function", { data(nrm_example, package = "NRMstatsML") expect_error(nrm_uncertainty(nrm_example, stat_fn = "mean"), "`stat_fn` must be a function") })