test_that("groundwater model shows depletion and subsidy effect", { gw <- agri_groundwater_model() b <- sd_simulate(gw, stop = 30) s <- sd_simulate(gw, stop = 30, params = list(power_subsidy = 1)) expect_lt(b$groundwater[31], b$groundwater[1]) expect_lt(s$groundwater[31], b$groundwater[31]) expect_true(all(b$groundwater >= 0)) expect_error(agri_groundwater_model(foo = 1), "Unknown parameter") }) test_that("soil carbon conservation raises SOC", { sc <- agri_soil_carbon_model() a <- sd_simulate(sc, stop = 20) b <- sd_simulate(sc, stop = 20, params = list(retention = 0.8, tillage_factor = 0.7)) expect_gt(b$soc[21], a$soc[21]) expect_gt(b$yield[21], a$yield[21]) }) test_that("commodity model starts in equilibrium and cycles after shock", { cc <- agri_commodity_cycle_model() r <- sd_simulate(cc, stop = 10, dt = 0.0625) expect_equal(r$price, rep(15000, 11), tolerance = 1e-6) sh <- sd_simulate(agri_commodity_cycle_model(shock_size = 0.3), stop = 20, dt = 0.0625, save_every = 0.25) expect_gt(max(sh$price), 15000 * 1.5) expect_lt(min(sh$price), 15000) }) test_that("Bass model conserves farmers", { r <- sd_simulate(agri_adoption_model(), stop = 30) expect_equal(r$potential + r$adopters, rep(10000, 31)) expect_gt(r$adopters[31], 9900) }) test_that("pest model control strategies differ", { pm <- agri_pest_model() none <- sd_simulate(pm, stop = 60, dt = 0.1, params = list(control = "none")) etl <- sd_simulate(pm, stop = 60, dt = 0.1) expect_equal(none$spray_days[61], 0) expect_gt(etl$spray_days[61], 0) expect_lt(etl$loss[61], none$loss[61]) expect_error(agri_pest_model(control = "magic")) })