Nothing
#
#
# This file contains a unit tests that make sure the complete workflow is working
#
context('Test workflows')
data(forestgap)
data(serengeti)
datasets <- list(forestgap[[3]],
serengeti[5:6])
test_methods <- function(teststring, datalength, obj, .test_df = TRUE) {
ok_print <- any(grepl(teststring, capture.output(print(obj))))
expect_true(ok_print)
ok_summary <- any(grepl(teststring, capture.output(summary(obj))))
expect_true(ok_summary)
if (.test_df) {
ok_as_df <- nrow(as.data.frame(obj)) == datalength
} else {
ok_as_df <- is.data.frame(as.data.frame(obj))
}
expect_true(ok_as_df)
return(TRUE)
}
test_that("The workflow functions work", {
skip_on_cran()
for ( dataset in datasets ) {
# Length of data
datal <- ifelse(is.matrix(dataset), 1, length(dataset))
# Simple/generic indicators
indics <- generic_sews(dataset)
test_methods("Generic indicators",
datal*4, indics) # l(dataset) * 4 indics
# test_methods("Generic Spatial Early-Warnings", 4, indics[[1]])
indics.test <- indictest(indics, nulln = 3)
test_methods("Generic indicators",
datal*4, indics.test)
if ( datal > 1 ) { # multiple values
suppressWarnings( print( plot(indics.test) ) )
suppressWarnings( print( plot(indics) ) )
}
# Warn when matrix is logical but no cg will be performed
expect_warning({
generic_sews(forestgap, subsize = 1)
})
# Spectral indicators
indics <- spectral_sews(dataset,
sdr_low_range = c(0, 0.2),
sdr_high_range = c(.8, 1))
test_methods("Spectrum-based indicators",
length(dataset), indics, .test_df = FALSE)
expect_warning({ spectral_sews(dataset) }) # give a warning when no args are passed
indics.test <- indictest(indics, nulln = 3)
test_methods("Spectrum-based indicators",
datal, indics.test, .test_df = FALSE)
if ( datal > 1 ) { # multiple values
suppressWarnings( print( plot(indics.test) ) )
suppressWarnings( print( plot(indics) ) )
}
suppressWarnings( print( plot_spectrum(indics.test) ) )
suppressWarnings( print( plot_spectrum(indics) ) )
# PSD-based indicators. Suppress warnings that can be produced by optim()
# here.
indics <- suppressWarnings( patchdistr_sews(dataset, fit_lnorm = TRUE) )
test_methods("Patch-based indicators",
datal*4, indics) # l(dataset) * 4 psd types fitted
# test_methods("Patch-based Early-Warnings results",
# datal*4, indics[[1]])
# Here, indictest may produce warnings on the testing datasets, so we
# quiet them down
indics.test <- suppressWarnings( indictest(indics, nulln = 3) )
test_methods("Patch-based indicators",
datal*4, indics.test, .test_df = FALSE)
# Test prediction of PSDs
indics.pred <- predict(indics)
if ( ! is.matrix(dataset) ) {
suppressWarnings( print( plot(indics) ) )
}
suppressWarnings( print( plot_distr(indics) ) )
suppressWarnings( print( plot_distr(indics.test) ) )
# We print a warning when there is no data to display because all fits
# failed. This can happen e.g. when there is a single patch in a matrix
a <- matrix(FALSE, ncol = 10, nrow = 10)
a[1,1] <- TRUE
a <- list(a, a)
expect_warning({
plot(patchdistr_sews(a))
})
# Variogram-based indicators
indics <- suppressWarnings( variogram_sews(dataset, model = "exp") )
test_methods("Variogram-based indicators",
datal*4, indics) # l(dataset) * 4 metrics reported
# Here, indictest may produce warnings on the testing datasets, so we
# quiet them down
indics.test <- suppressWarnings( indictest(indics, nulln = 3) )
test_methods("Variogram-based indicators",
datal*4, indics.test, .test_df = FALSE)
# Test prediction of PSDs
indics.pred <- predict(indics)
if ( ! is.matrix(dataset) ) {
suppressWarnings( print( plot(indics) ) )
}
suppressWarnings( print( plot_variogram(indics) ) )
suppressWarnings( print( plot_variogram(indics.test) ) )
# Flowlength-based indicator
indics <- suppressWarnings( flowlength_sews(dataset, cell_size = 10) )
test_methods("Flow length \\(uniform topography\\)",
datal, indics) # l(dataset) * 4 metrics reported
indics.test <- indictest(indics, nulln = 3)
test_methods("Flow length \\(uniform topography\\)",
datal, indics.test, .test_df = FALSE)
# Make sure that args are passed through the workflow function
indics_standalone <- compute_indicator(dataset, raw_flowlength_uniform,
cell_size = 10, slope = 20)
expect_equal(as.data.frame(indics)[ ,"value"],
as.data.frame(indics_standalone)[ ,"value"])
if ( ! is.matrix(dataset) ) {
suppressWarnings( print( plot(indics) ) )
}
}
})
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.