test_that("process_rasters_patchmorph returns list of rasters", { skip_if_not_installed("lidR") skip_if_not_installed("terra") skip_on_cran() # Create a simple test raster set.seed(123) test_raster <- terra::rast(ncol = 20, nrow = 20, xmin = 0, xmax = 20, ymin = 0, ymax = 20) terra::values(test_raster) <- sample(c(0, 5, 10, 20), 400, replace = TRUE) # Define parameters suitList <- c(2, 10) gapList <- c(1, 2) spurList <- c(1, 2) # Process rasters result <- process_rasters_patchmorph(test_raster, suitList, gapList, spurList) # Test that result is a list expect_type(result, "list") # Test that it has the expected number of rasters expected_count <- length(suitList) * length(gapList) * length(spurList) expect_equal(length(result), expected_count) # Test that all elements are SpatRaster objects expect_true(all(sapply(result, function(x) inherits(x, "SpatRaster")))) # Test that names follow expected pattern expect_true(all(grepl("suit_\\d+_gap_\\d+_spur_\\d+", names(result)))) }) test_that("sum_rasters_by_suitability aggregates correctly", { skip_if_not_installed("terra") skip_on_cran() # Create test rasters with known names set.seed(123) raster1 <- terra::rast(ncol = 10, nrow = 10, xmin = 0, xmax = 10, ymin = 0, ymax = 10) raster2 <- terra::rast(ncol = 10, nrow = 10, xmin = 0, xmax = 10, ymin = 0, ymax = 10) raster3 <- terra::rast(ncol = 10, nrow = 10, xmin = 0, xmax = 10, ymin = 0, ymax = 10) terra::values(raster1) <- 1 terra::values(raster2) <- 2 terra::values(raster3) <- 3 names(raster1) <- "suit_5_gap_1_spur_1" names(raster2) <- "suit_5_gap_2_spur_1" names(raster3) <- "suit_10_gap_1_spur_1" rasters <- list(raster1, raster2, raster3) names(rasters) <- c("suit_5_gap_1_spur_1", "suit_5_gap_2_spur_1", "suit_10_gap_1_spur_1") suitList <- c(5, 10) # Sum rasters result <- sum_rasters_by_suitability(rasters, suitList) # Test that result is a list expect_type(result, "list") # Test that it has the expected number of summed rasters expect_equal(length(result), length(suitList)) # Test that names follow expected pattern expect_true(all(grepl("suit_\\d+_sum", names(result)))) }) test_that("plot_raster_by_name handles valid and invalid names", { skip_if_not_installed("terra") skip_on_cran() # Create a test raster list test_raster <- terra::rast(ncol = 5, nrow = 5) terra::values(test_raster) <- 1:25 names(test_raster) <- "test_raster" rasters <- list(test_raster = test_raster) # Test with valid name (should not error) expect_silent(plot_raster_by_name(rasters, "test_raster")) # Test with invalid name (should give message or warning) expect_message(plot_raster_by_name(rasters, "nonexistent")) })