tests/testthat/test-plot_perturb.R

context("plot_perturb")

#########################
# plot_perturb testthat #
#########################

# Generate testing data
## Environmental Covariates
library(envi)
library(spatstat.data)
library(spatstat.geom)
library(spatstat.random)
set.seed(1234)

# -------------- #
# Prepare inputs #
# -------------- #

# Using the `bei` and `bei.extra` data from {spatstat.data}

# Scale environmental Covariates
ims <- spatstat.data::bei.extra
ims[[1]]$v <- scale(ims[[1]]$v)
ims[[2]]$v <- scale(ims[[2]]$v)

# Presence locations
presence <- spatstat.data::bei
spatstat.geom::marks(presence) <- data.frame("presence" = rep(1, presence$n),
                                             "lon" = presence$x,
                                             "lat" = presence$y)

# (Pseudo-)Absence locations
absence <- spatstat.random::rpoispp(0.008, win = ims[[1]])
spatstat.geom::marks(absence) <- data.frame("presence" = rep(0, absence$n),
                                            "lon" = absence$x,
                                            "lat" = absence$y)

# Combine into readable format
obs_locs <- spatstat.geom::superimpose(presence, absence, check = FALSE)
spatstat.geom::marks(obs_locs)$id <- seq(1, obs_locs$n, 1)
spatstat.geom::marks(obs_locs) <- spatstat.geom::marks(obs_locs)[ , c(4, 2, 3, 1)]

# Specify categories for varying degrees of spatial uncertainty
## Creates three groups
spatstat.geom::marks(obs_locs)$levels <- as.factor(stats::rpois(obs_locs$n, lambda = 0.05))

# Run perlrren
test_perlrren <-  perlrren(obs_ppp = obs_locs,
                           covariates = ims,
                           radii = c(10, 100, 500),
                           n_sim = 10)

test_that("plot_perturb throws error with invalid arguments", {
  
  # plot_perturb without perlrren output
  expect_error(
    plot_perturb(input = NULL)
  )
  
  # incorrect length mean_cols
  expect_error(
    plot_perturb(input = test_perlrren,
             mean_cols = c("#8b3a3a", "#cccccc"))
  )
  
  # incorrect length var_cols
  expect_error(
    plot_perturb(input = test_perlrren,
             var_cols = c("#cccccc"))
  )
  
  # incorrect length cov_labs
  expect_error(
    plot_perturb(input = test_perlrren,
             cov_labs = c("V1"))
  )
  
}
) 

test_that("plot_obs works", {
  skip_on_cran()
  expect_silent(
    plot_perturb(input = test_perlrren,
                 cref0 = "EPSG:5472")
  )
  
  # cref0 = NULL
  expect_silent(
    plot_perturb(input = test_perlrren,
                 cref0 = NULL)
  )
  
  # With spatial transformation
  expect_silent(
    plot_perturb(input = test_perlrren,
                 cref0 = "EPSG:5472",
                 cref1 = "EPSG:4326")
  )
  
  # Without prediction
  expect_silent(
    plot_perturb(input = test_perlrren,
                 predict = FALSE)
  )
}
)
Waller-SUSAN/envi documentation built on Nov. 8, 2024, 12:35 a.m.