tests/testthat/test-extract.R

context("Extract covariates and polygon data")

test_that("getPolygonData function", {

  skip_on_cran()

  expect_error(getPolygonData(spdf, id_var = 'id', response_var = 'response'))
  expect_error(getPolygonData(spdf, id_var = 'area_id', response_var = 'data'))

  result <- getPolygonData(spdf, id_var = 'area_id', response_var = 'response')
  result_binom <- getPolygonData(spdf_binom, id_var = 'area_id', response_var = 'response', sample_size_var = 'sample_size')

  expect_is(result, 'data.frame')
  expect_equal(ncol(result), 3)
  expect_equal(nrow(result), nrow(spdf))
  expect_equal(result$area_id, spdf$area_id)
  expect_equal(result$response, spdf$response)
  expect_equal(result$N, rep(NA, nrow(result)))

  expect_is(result_binom, 'data.frame')
  expect_equal(ncol(result_binom), 3)
  expect_equal(nrow(result_binom), nrow(spdf_binom))
  expect_equal(result_binom$area_id, spdf_binom$area_id)
  expect_equal(result_binom$response, spdf_binom$response)
  expect_equal(result_binom$N, spdf_binom$sample_size)

})

test_that("getCovariateData function gives errors when it should", {

  skip_on_cran()

  expect_error(getCovariateRasters('/home/rasters', '.tif$', spdf))

  # Save .tif files in tempdir()
  terra::writeRaster(r, paste0(tempdir(), '/cov1.tif'), overwrite = TRUE)
  terra::writeRaster(r2, paste0(tempdir(), '/cov2.tif'), overwrite = TRUE)

  expect_is(getCovariateRasters(tempdir(), '.tif$', spdf), 'SpatRaster')

})

test_that("extractCoordsForMesh function behaves as it should", {

  skip_on_cran()

  cov_data <- terra::extract(cov_stack, spdf, cells = TRUE, na.rm = TRUE, ID = TRUE)
  names(cov_data)[1] <- 'area_id'

  result <- extractCoordsForMesh(cov_stack, cov_data$cell)

  result2 <- extractCoordsForMesh(cov_stack)

  expect_error(extractCoordsForMesh(cov_data$cellid, cov_stack))
  expect_is(result, 'matrix')
  expect_is(result2, 'matrix')

})

Try the disaggregation package in your browser

Any scripts or data that you put into this service are public.

disaggregation documentation built on Nov. 8, 2023, 5:07 p.m.