test_that("nrm_multivariate returns correct structure", { data(nrm_example, package = "NRMstatsML") mv <- nrm_multivariate(nrm_example, formula = crop_yield ~ N + P + K + rainfall) expect_s3_class(mv, "nrm_multivariate") expect_true(is.numeric(mv$r_squared)) expect_true(mv$r_squared >= -1 && mv$r_squared <= 1) expect_true(is.matrix(mv$coefficients)) }) test_that("nrm_multivariate with scale = FALSE still fits", { data(nrm_example, package = "NRMstatsML") mv <- nrm_multivariate(nrm_example, formula = crop_yield ~ N + rainfall, scale = FALSE) expect_false(mv$scaled) expect_s3_class(mv$model, "lm") }) test_that("nrm_multivariate errors when formula is not a formula", { data(nrm_example, package = "NRMstatsML") expect_error(nrm_multivariate(nrm_example, formula = "crop_yield ~ N"), "must be a formula") }) test_that("nrm_pls returns model and rmsep", { data(nrm_example, package = "NRMstatsML") pl <- nrm_pls(nrm_example, formula = crop_yield ~ N + P + K + rainfall + soil_OC, ncomp = 2) expect_s3_class(pl, "nrm_pls") expect_true(pl$ncomp >= 1) expect_true(is.numeric(pl$rmsep)) })