test_that("nrm_data_check passes valid data", { data(nrm_example, package = "NRMstatsML") expect_invisible(nrm_data_check(nrm_example, verbose = FALSE)) }) test_that("nrm_data_check errors on non-data-frame", { expect_error(nrm_data_check(list(a = 1)), "`data` must be a data frame") }) test_that("nrm_mann_kendall returns correct structure", { data(nrm_example, package = "NRMstatsML") mk <- nrm_mann_kendall(nrm_example, time_var = "year", value_var = "crop_yield") expect_s3_class(mk, "nrm_mann_kendall") expect_true(is.numeric(mk$tau)) expect_true(is.numeric(mk$p_value)) expect_true(mk$p_value >= 0 && mk$p_value <= 1) expect_true(mk$trend_direction %in% c("increasing", "decreasing", "no trend")) }) test_that("nrm_sens_slope returns slope and CI", { data(nrm_example, package = "NRMstatsML") ss <- nrm_sens_slope(nrm_example, time_var = "year", value_var = "crop_yield") expect_s3_class(ss, "nrm_sens_slope") expect_true(is.numeric(ss$slope)) expect_length(ss$conf_int, 2) expect_true(ss$conf_int[1] <= ss$conf_int[2]) }) test_that("nrm_structural_break returns n_breaks", { data(nrm_example, package = "NRMstatsML") sb <- nrm_structural_break(nrm_example, time_var = "year", value_var = "crop_yield") expect_s3_class(sb, "nrm_structural_break") expect_true(is.numeric(sb$n_breaks)) expect_true(sb$n_breaks >= 0) }) test_that("nrm_trend integrates all sub-tests", { data(nrm_example, package = "NRMstatsML") tr <- nrm_trend(nrm_example, time_var = "year", value_var = "crop_yield", breaks = TRUE) expect_s3_class(tr, "nrm_trend") expect_named(tr, c("mann_kendall", "sens_slope", "structural_breaks", "data", "time_var", "value_var", "call")) expect_false(is.null(tr$structural_breaks)) }) test_that("nrm_trend with breaks = FALSE has NULL structural_breaks", { data(nrm_example, package = "NRMstatsML") tr <- nrm_trend(nrm_example, time_var = "year", value_var = "soil_OC", breaks = FALSE) expect_null(tr$structural_breaks) }) test_that("nrm_mann_kendall errors on missing column", { data(nrm_example, package = "NRMstatsML") expect_error(nrm_mann_kendall(nrm_example, time_var = "year", value_var = "nonexistent"), "Column\\(s\\) not found") })