# Tests for calc_debt function test_that("calc_debt works with basic data", { set.seed(123) years <- 1970:2010 # Create correlated data with lag gdp <- cumsum(rnorm(41, 10, 2)) invasions <- c(rep(5, 20), 5 + cumsum(rpois(21, lambda = 2))) inv_data <- data.frame(year = years, records = invasions) driver_data <- data.frame(year = years, gdp = gdp) result <- calc_debt( invasion_data = inv_data, driver_data = driver_data, invasion_time_col = "year", invasion_count_col = "records", driver_time_col = "year", driver_col = "gdp", lag_years = 10:25 ) expect_s3_class(result, "invadebt") expect_true(!is.null(result$optimal_lag)) expect_true(is.data.frame(result$debt_estimate)) }) test_that("calc_debt handles multiple drivers", { set.seed(456) years <- 1970:2010 gdp <- cumsum(rnorm(41, 10, 2)) trade <- cumsum(rnorm(41, 5, 1)) invasions <- c(rep(5, 20), 5 + cumsum(rpois(21, lambda = 2))) inv_data <- data.frame(year = years, records = invasions) driver_data <- data.frame(year = years, gdp = gdp, trade = trade) result <- calc_debt( invasion_data = inv_data, driver_data = driver_data, invasion_time_col = "year", invasion_count_col = "records", driver_time_col = "year", driver_col = c("gdp", "trade"), lag_years = 10:20 ) expect_s3_class(result, "invadebt") expect_true(nrow(result$correlations) > 0) }) test_that("calc_debt handles missing columns", { inv_data <- data.frame(year = 1:10, records = 1:10) driver_data <- data.frame(year = 1:10, gdp = 1:10) expect_error( calc_debt(inv_data, driver_data, invasion_time_col = "bad_col", invasion_count_col = "records", driver_time_col = "year", driver_col = "gdp"), "not found" ) })