Nothing
# Additional tests to boost coverage to 90%+
# ============================================================================
# DISTANCES.R - sf support and edge cases
# ============================================================================
test_that("distances.sf with geodesic method works", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5, -122.3), lat = c(37.7, 37.8, 37.6))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
result <- distances(pts_sf, method = "geodesic")
expect_s3_class(result, "spacc_dist")
expect_equal(attr(result, "method"), "geodesic")
expect_equal(dim(result), c(3, 3))
})
test_that("distances.sf with haversine method works", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5, -122.3), lat = c(37.7, 37.8, 37.6))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
result <- distances(pts_sf, method = "haversine")
expect_s3_class(result, "spacc_dist")
expect_equal(attr(result, "method"), "haversine")
})
test_that("distances.sf with euclidean method works", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(x = c(100, 200, 300), y = c(100, 200, 300))
pts_sf <- sf::st_as_sf(coords, coords = c("x", "y"), crs = 32610) # UTM
result <- distances(pts_sf, method = "euclidean")
expect_s3_class(result, "spacc_dist")
expect_equal(attr(result, "method"), "euclidean")
})
test_that("distances.sf auto-detects geodesic for geographic CRS", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5), lat = c(37.7, 37.8))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
expect_message(result <- distances(pts_sf), "geodesic")
expect_equal(attr(result, "method"), "geodesic")
})
test_that("distances.sf auto-detects euclidean for projected CRS", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(x = c(100, 200), y = c(100, 200))
pts_sf <- sf::st_as_sf(coords, coords = c("x", "y"), crs = 32610)
expect_message(result <- distances(pts_sf), "euclidean")
expect_equal(attr(result, "method"), "euclidean")
})
test_that("distances.sf with custom function works", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5, -122.3), lat = c(37.7, 37.8, 37.6))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
# Custom Manhattan distance
manhattan <- function(x, y) {
n <- length(x)
m <- matrix(0, n, n)
for (i in 1:n) for (j in 1:n) {
m[i, j] <- abs(x[i] - x[j]) + abs(y[i] - y[j])
}
m
}
result <- distances(pts_sf, fun = manhattan)
expect_s3_class(result, "spacc_dist")
})
test_that("distances.sfc works", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(x = c(0, 1, 2), y = c(0, 1, 0))
pts_sfc <- sf::st_sfc(
sf::st_point(c(0, 0)),
sf::st_point(c(1, 1)),
sf::st_point(c(2, 0)),
crs = 32610
)
expect_message(result <- distances(pts_sfc), "euclidean")
expect_s3_class(result, "spacc_dist")
expect_equal(dim(result), c(3, 3))
})
test_that("distances.sf errors on non-point geometry", {
skip_on_cran()
skip_if_not_installed("sf")
# Create polygon instead of point
poly <- sf::st_sfc(
sf::st_polygon(list(rbind(c(0, 0), c(1, 0), c(1, 1), c(0, 0))))
)
poly_sf <- sf::st_sf(id = 1, geometry = poly)
expect_error(distances(poly_sf), "POINT")
})
test_that("print.spacc_dist shows CRS info for sf-based distances", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5), lat = c(37.7, 37.8))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
result <- distances(pts_sf, method = "geodesic")
expect_output(print(result), "EPSG")
})
test_that("print.spacc_dist shows (meters) for geodesic", {
skip_on_cran()
skip_if_not_installed("sf")
coords <- data.frame(lon = c(-122.4, -122.5), lat = c(37.7, 37.8))
pts_sf <- sf::st_as_sf(coords, coords = c("lon", "lat"), crs = 4326)
result <- distances(pts_sf, method = "geodesic")
expect_output(print(result), "meters")
})
# ============================================================================
# METHODS.R - More S3 methods coverage
# ============================================================================
test_that("c.spacc combines objects correctly", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
combined <- c(native = sac1, alien = sac2)
expect_s3_class(combined, "spacc")
expect_equal(length(combined$group_names), 2)
expect_equal(combined$group_names, c("native", "alien"))
})
test_that("as.data.frame.spacc_hill returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 2), nrow = 15)
result <- spaccHill(species, coords, q = c(0, 1, 2), n_seeds = 3,
parallel = FALSE, progress = FALSE)
df <- as.data.frame(result)
expect_s3_class(df, "data.frame")
expect_true("q" %in% names(df))
expect_true("mean" %in% names(df))
expect_equal(nrow(df), 15 * 3) # n_sites * n_q
})
test_that("as.data.frame.spacc_beta returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccBeta(species, coords, n_seeds = 3,
parallel = FALSE, progress = FALSE)
df <- as.data.frame(result)
expect_s3_class(df, "data.frame")
expect_true("beta_total" %in% names(df))
expect_true("beta_turnover" %in% names(df))
})
test_that("as.data.frame.spacc_coverage returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 3), nrow = 15)
result <- spaccCoverage(species, coords, n_seeds = 3,
parallel = FALSE, progress = FALSE)
df <- as.data.frame(result)
expect_s3_class(df, "data.frame")
expect_true("richness" %in% names(df))
expect_true("coverage" %in% names(df))
})
test_that("as.data.frame.spacc_fit returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.3), nrow = 20)
sac <- spacc(species, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
fit <- extrapolate(sac, model = "michaelis-menten")
df <- as.data.frame(fit)
expect_s3_class(df, "data.frame")
expect_true("observed" %in% names(df))
expect_true("predicted" %in% names(df))
})
test_that("as.data.frame.spacc_comp returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
comp <- compare(sac1, sac2, n_perm = 10)
df <- as.data.frame(comp)
expect_s3_class(df, "data.frame")
expect_true("auc_diff" %in% names(df))
expect_true("p_value" %in% names(df))
})
test_that("[.spacc subsetting works for ungrouped", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sac <- spacc(species, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
subset <- sac[1:3]
expect_s3_class(subset, "spacc")
expect_equal(subset$n_seeds, 3)
expect_equal(nrow(subset$curves), 3)
})
test_that("[.spacc subsetting works for grouped", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
combined <- c(native = sac1, alien = sac2)
subset <- combined[1:3]
expect_s3_class(subset, "spacc")
expect_equal(subset$n_seeds, 3)
})
test_that("summary.spacc_decay returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.3), nrow = 20)
result <- distanceDecay(species, coords, n_seeds = 3, progress = FALSE)
summ <- summary(result)
expect_s3_class(summ, "summary.spacc_decay")
expect_true("n_bins" %in% names(summ))
})
test_that("print.summary.spacc_decay works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.3), nrow = 20)
result <- distanceDecay(species, coords, n_seeds = 3, progress = FALSE)
summ <- summary(result)
expect_output(print(summ), "Distance-Decay")
})
test_that("summary.spacc_rare returns correct structure", {
skip_on_cran()
set.seed(42)
species <- matrix(rpois(20 * 10, 3), nrow = 20)
rare <- rarefy(species, n_boot = 10)
summ <- summary(rare)
expect_s3_class(summ, "summary.spacc_rare")
expect_true("expected_richness" %in% names(summ))
})
test_that("print.summary.spacc_rare works", {
skip_on_cran()
set.seed(42)
species <- matrix(rpois(20 * 10, 3), nrow = 20)
rare <- rarefy(species, n_boot = 10)
summ <- summary(rare)
expect_output(print(summ), "Rarefaction")
})
test_that("as.data.frame.spacc_metrics includes coords", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
result <- spaccMetrics(species, coords, metrics = c("slope_10"),
parallel = FALSE, progress = FALSE)
df <- as.data.frame(result)
expect_true("x" %in% names(df))
expect_true("y" %in% names(df))
})
# ============================================================================
# EXTRAPOLATE.R - EVT model and edge cases
# ============================================================================
test_that("extrapolate with EVT model works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(30), y = runif(30))
species <- matrix(rbinom(30 * 15, 1, 0.3), nrow = 30)
sac <- spacc(species, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
# EVT requires at least 10 data points
fit <- extrapolate(sac, model = "evt")
expect_s3_class(fit, "spacc_fit")
})
test_that("predict.spacc_fit with NULL n uses data x values", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.3), nrow = 20)
sac <- spacc(species, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
fit <- extrapolate(sac, model = "michaelis-menten")
preds <- predict(fit)
expect_length(preds, 20)
})
test_that("coef.spacc_fit returns NA for failed fit", {
skip_on_cran()
# Create a fake failed fit
fake_fit <- structure(
list(
asymptote = NA,
asymptote_ci = c(NA, NA),
model = "michaelis-menten",
fit = NULL,
aic = NA,
data = data.frame(x = 1:10, y = 1:10),
spacc = NULL
),
class = "spacc_fit"
)
expect_equal(coef(fake_fit), NA)
})
test_that("predict.spacc_fit returns NA for failed fit", {
skip_on_cran()
fake_fit <- structure(
list(
asymptote = NA,
asymptote_ci = c(NA, NA),
model = "michaelis-menten",
fit = NULL,
aic = NA,
data = data.frame(x = 1:10, y = 1:10),
spacc = NULL
),
class = "spacc_fit"
)
expect_equal(predict(fake_fit, n = 1:5), NA)
})
test_that("confint.spacc_fit returns NA for failed fit", {
skip_on_cran()
fake_fit <- structure(
list(
asymptote = NA,
asymptote_ci = c(NA, NA),
model = "michaelis-menten",
fit = NULL,
aic = NA,
data = data.frame(x = 1:10, y = 1:10),
spacc = NULL
),
class = "spacc_fit"
)
expect_equal(confint(fake_fit), NA)
})
test_that("print.spacc_fit handles failed fit", {
skip_on_cran()
fake_fit <- structure(
list(
asymptote = NA,
asymptote_ci = c(NA, NA),
model = "michaelis-menten",
fit = NULL,
aic = NA,
data = data.frame(x = 1:10, y = 1:10),
spacc = NULL
),
class = "spacc_fit"
)
expect_output(print(fake_fit), "failed")
})
test_that("summary.spacc_fit prints for failed fit", {
skip_on_cran()
fake_fit <- structure(
list(
asymptote = NA,
asymptote_ci = c(NA, NA),
model = "michaelis-menten",
fit = NULL,
aic = NA,
data = data.frame(x = 1:10, y = 1:10),
spacc = NULL
),
class = "spacc_fit"
)
expect_output(summary(fake_fit), "failed")
})
# ============================================================================
# COMPARE.R - Bootstrap and AUC methods
# ============================================================================
test_that("compare with bootstrap method works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
comp <- compare(sac1, sac2, method = "bootstrap", n_perm = 50)
expect_s3_class(comp, "spacc_comp")
expect_equal(comp$method, "bootstrap")
})
test_that("compare with auc method works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
comp <- compare(sac1, sac2, method = "auc")
expect_s3_class(comp, "spacc_comp")
expect_equal(comp$method, "auc")
expect_true(is.na(comp$p_value))
})
test_that("summary.spacc_comp returns invisibly", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
sp1 <- matrix(rbinom(15 * 8, 1, 0.4), nrow = 15)
sp2 <- matrix(rbinom(15 * 8, 1, 0.2), nrow = 15)
sac1 <- spacc(sp1, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
sac2 <- spacc(sp2, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
comp <- compare(sac1, sac2, n_perm = 10)
expect_output(summary(comp), "Comparison")
})
# ============================================================================
# BETA.R - spaccBetaFunc and spaccBetaPhylo
# ============================================================================
test_that("spaccBetaFunc returns correct structure", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
colnames(species) <- paste0("sp", 1:8)
traits <- matrix(rnorm(8 * 3), nrow = 8)
rownames(traits) <- paste0("sp", 1:8)
result <- spaccBetaFunc(species, coords, traits, n_seeds = 3,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_equal(result$beta_type, "functional")
})
test_that("spaccBetaFunc with jaccard index works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
colnames(species) <- paste0("sp", 1:8)
traits <- matrix(rnorm(8 * 3), nrow = 8)
rownames(traits) <- paste0("sp", 1:8)
result <- spaccBetaFunc(species, coords, traits, n_seeds = 3,
index = "jaccard",
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_equal(result$index, "jaccard")
})
test_that("spaccBetaPhylo with tree returns correct structure", {
skip_on_cran()
skip_if_not_installed("ape")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
tree <- ape::rtree(8)
colnames(species) <- tree$tip.label
result <- spaccBetaPhylo(species, coords, tree, n_seeds = 3,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_equal(result$beta_type, "phylogenetic")
})
test_that("spaccBetaPhylo with distance matrix works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
phylo_dist <- matrix(runif(8 * 8), nrow = 8)
phylo_dist <- (phylo_dist + t(phylo_dist)) / 2
diag(phylo_dist) <- 0
result <- spaccBetaPhylo(species, coords, phylo_dist, n_seeds = 3,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_equal(result$beta_type, "phylogenetic")
})
test_that("spaccBetaPhylo with jaccard index works", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
phylo_dist <- matrix(runif(8 * 8), nrow = 8)
phylo_dist <- (phylo_dist + t(phylo_dist)) / 2
diag(phylo_dist) <- 0
result <- spaccBetaPhylo(species, coords, phylo_dist, n_seeds = 3,
index = "jaccard",
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_equal(result$index, "jaccard")
})
# ============================================================================
# PLOT.R - Various plot edge cases
# ============================================================================
test_that("plot.spacc_beta with partition=FALSE works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccBeta(species, coords, n_seeds = 3,
parallel = FALSE, progress = FALSE)
p <- plot(result, partition = FALSE)
expect_s3_class(p, "ggplot")
})
test_that("plot.spacc_beta with xaxis=distance works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccBeta(species, coords, n_seeds = 3,
parallel = FALSE, progress = FALSE)
p <- plot(result, xaxis = "distance")
expect_s3_class(p, "ggplot")
})
test_that("plot.spacc_endemism without richness works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccEndemism(species, coords, n_seeds = 3,
parallel = FALSE, progress = FALSE)
p <- plot(result, show_richness = FALSE)
expect_s3_class(p, "ggplot")
})
test_that("plot.spacc_fit with extrapolate_to works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.3), nrow = 20)
sac <- spacc(species, coords, n_seeds = 3, parallel = FALSE, progress = FALSE)
fit <- extrapolate(sac, model = "michaelis-menten")
p <- plot(fit, extrapolate_to = 100)
expect_s3_class(p, "ggplot")
})
# ============================================================================
# COVERAGE.R - spaccCoverage with map=TRUE
# ============================================================================
test_that("spaccCoverage with map=TRUE returns site_values", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 3), nrow = 15)
result <- spaccCoverage(species, coords, n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_coverage")
expect_false(is.null(result$site_values))
expect_true("final_coverage" %in% names(result$site_values))
})
test_that("plot.spacc_coverage with map type works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 3), nrow = 15)
result <- spaccCoverage(species, coords, n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
p <- plot(result, type = "map", metric = "final_coverage")
expect_s3_class(p, "ggplot")
})
# ============================================================================
# HILL.R - spaccHill with map=TRUE and map plot
# ============================================================================
test_that("spaccHill with map=TRUE returns site_values", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 2), nrow = 15)
result <- spaccHill(species, coords, q = c(0, 1), n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_hill")
expect_false(is.null(result$site_values))
})
test_that("plot.spacc_hill with map type works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rpois(15 * 8, 2), nrow = 15)
result <- spaccHill(species, coords, q = c(0, 1), n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
p <- plot(result, type = "map", q = 0)
expect_s3_class(p, "ggplot")
})
# ============================================================================
# BETA.R - spaccBeta with map=TRUE
# ============================================================================
test_that("spaccBeta with map=TRUE returns site_values", {
skip_on_cran()
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccBeta(species, coords, n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
expect_s3_class(result, "spacc_beta")
expect_false(is.null(result$site_values))
})
test_that("plot.spacc_beta with map type works", {
skip_on_cran()
skip_if_not_installed("ggplot2")
set.seed(42)
coords <- data.frame(x = runif(15), y = runif(15))
species <- matrix(rbinom(15 * 8, 1, 0.3), nrow = 15)
result <- spaccBeta(species, coords, n_seeds = 3, map = TRUE,
parallel = FALSE, progress = FALSE)
p <- plot(result, type = "map", component = "beta_total")
expect_s3_class(p, "ggplot")
})
# ============================================================================
# SAR.R - sfar with negative f interpretation
# ============================================================================
test_that("sfar print shows no fragmentation message when f <= 0", {
skip_on_cran()
set.seed(123)
coords <- data.frame(x = runif(20), y = runif(20))
species <- matrix(rbinom(20 * 10, 1, 0.5), nrow = 20)
sac <- spacc(species, coords, n_seeds = 5, parallel = FALSE, progress = FALSE)
patches <- rep(1:4, each = 5)
result <- sfar(sac, patches)
# Just verify print doesn't error (f may be positive or negative)
expect_output(print(result), "SFAR")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.