tests/testthat/test_koeppen_geiger.R

# set up data path for this test
data_path <- file.path(tempdir(), "pastclim_data")
unlink(data_path, recursive = TRUE) # it should not exist, but remove it just in case
# set data path
set_data_path(
  path_to_nc = data_path,
  ask = FALSE,
  write_config = FALSE,
  copy_example = TRUE
)
################################################################################

test_that("koeppen geiger for numeric and matrix", {
  prec_num <- matrix(c(66, 51, 53, 53, 33, 34.2, 70.9, 58, 54, 104.3, 81.2, 82.8), 
                     ncol = 12)
  tavg_num <- matrix(c(-0.2, 1.7, 2.9, 0.3, 4.2, 5, 4, 9, 9.2, 7.3, 12.6, 12.7), 
                     ncol = 12)
  expect_error(koeppen_geiger(prec= prec_num, tavg=tavg_num),
               "only one valid row of data")
  
  prec <- matrix(c(
    66, 51, 53, 53, 33, 34.2, 70.9, 58, 54, 104.3, 81.2, 82.8, 113.3,
    97.4, 89, 109.7, 89, 93.4, 99.8, 92.6, 85.3, 102.3, 84, 81.6, 108.6, 88.4,
    82.7, 140.1, 120.4, 111.6, 120.4, 113.9, 96.7, 90, 77.4, 79.1), 
    ncol = 12)
  tavg <- matrix(c(
    -0.2, 1.7, 2.9, 0.3, 4.2, 5, 4, 9, 9.2, 7.3, 12.6, 12.7, 12.1,
    17.2, 17, 15.5, 20.5, 20.3, 17.9, 22.8, 22.9, 17.4, 22.3, 22.4, 13.2, 18.2,
    18.6, 8.8, 13, 13.6, 3.5, 6.4, 7.5, 0.3, 2.1, 3.4), 
    ncol = 12)
  koeppen_results <- koeppen_geiger(prec, tavg, broad = TRUE)
  expect_true(ncol(koeppen_results)==2)
  # check for errors
  expect_error(koeppen_geiger(prec[,-1], tavg),
               "prec needs to have 12 columns")
  expect_error(koeppen_geiger(prec, tavg[,-1]),
               "tavg needs to have 12 columns")  
  expect_error(koeppen_geiger(prec, tavg[-1,]),
               "prec and tavg need to have the same number of rows")
  expect_error(koeppen_geiger(prec, tavg+273),
               "tavg should be in ")
})

test_that("koeppen geiger for SpatRaster and SpatRasterDataset", {
  prec_series <- terra::sds(system.file("/extdata/delta/prec_series.nc",
                                        package = "pastclim"
  ))
  tavg_series <- terra::sds(system.file("/extdata/delta/tavg_series.nc",
                                        package = "pastclim"
  ))
  prec_present <- pastclim::slice_region_series(prec_series, time_bp = 0)
  tavg_present <- pastclim::slice_region_series(tavg_series, time_bp = 0)
  koeppen_raster <- koeppen_geiger(
    prec = prec_present,
    tavg = tavg_present
  )
  expect_true(inherits(koeppen_raster,"SpatRaster"))
  # expect mostly Af
  koeppen_series <- koeppen_geiger(
    prec = prec_series,
    tavg = tavg_series
  )
  expect_true(inherits(koeppen_series,"SpatRasterDataset"))
  
})

################################################################################
# clean up for the next test
unlink(data_path, recursive = TRUE)
EvolEcolGroup/pastclim documentation built on Aug. 8, 2024, 11:11 a.m.