From 66edb42eb93522f41b6a3d8ff5b136a928e4adf5 Mon Sep 17 00:00:00 2001 From: Dorchies David <david.dorchies@irstea.fr> Date: Tue, 21 Apr 2020 20:08:51 +0200 Subject: [PATCH] test: Add tests on vignette results (all tests OK) - Test if loaded results are identical with chunks with eval=FALSE - Test if Discharge conversion is OK on inputs Refs #52 --- tests/testthat/helper_vignettes.R | 16 +++++++++++++++ tests/testthat/test-vignettes.R | 34 +++++++++++++++++++------------ 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/tests/testthat/helper_vignettes.R b/tests/testthat/helper_vignettes.R index 1f24851a..53d32a86 100644 --- a/tests/testthat/helper_vignettes.R +++ b/tests/testthat/helper_vignettes.R @@ -57,4 +57,20 @@ RunRmdChunks <- function(fileRmd, writeLines(sTxt, output) # Silently run the chunks invisible(capture.output(suppressMessages(suppressWarnings(source(output))), type="output")) + return(TRUE) } + + +#' Test if conversion from Q in mm per day into Q in L/s is good in BasinObs +#' +#' @param BasinObs A dataframe containing columns Qmm and Qls +#' @param BasinArea Area of the basin in km2 +#' @param tolerance See ?all.equal +#' +#' @return +TestQmmQlsConversion <- function(BasinObs, BasinArea, tolerance = 1E-7) { + Conversion = BasinArea * 1000^2 / 1000 * 1000 # km2 -> m2, mm -> m and m3 -> L + Conversion = Conversion / 86400 # Day -> seconds + notNA = which(!is.na(BasinObs$Qmm)) + expect_equal(BasinObs$Qmm[notNA] * Conversion, BasinObs$Qls[notNA], tolerance=tolerance) +} \ No newline at end of file diff --git a/tests/testthat/test-vignettes.R b/tests/testthat/test-vignettes.R index 93b51d3d..90e89291 100644 --- a/tests/testthat/test-vignettes.R +++ b/tests/testthat/test-vignettes.R @@ -3,39 +3,47 @@ context("Test vignette chunks") test_that("V01_get_started works", { skip_on_cran() rm(list=ls()) - RunRmdChunks("../../vignettes/V01_get_started.Rmd") - # Test Qmm -> Qls conversion in input - notNA = which(!is.na(BasinObs$Qmm)) - expect( - all(abs(BasinObs$Qmm[notNA] * BasinInfo$BasinArea / 86400 * 1E6 - BasinObs$Qls[notNA]) < 1E-7), - "Error in conversion Qmm -> Qls" - ) + expect_true(RunRmdChunks("../../vignettes/V01_get_started.Rmd")) + TestQmmQlsConversion(BasinObs, BasinInfo$BasinArea) }) test_that("V02.1_param_optim works", { skip_on_cran() skip("hydroPSO not working presently") rm(list=ls()) - RunRmdChunks("../../vignettes/V02.1_param_optim.Rmd") + expect_true(RunRmdChunks("../../vignettes/V02.1_param_optim.Rmd")) }) test_that("V02.2_param_mcmc works", { skip_on_cran() rm(list=ls()) - RunRmdChunks("../../vignettes/V02.2_param_mcmc.Rmd") - + load(system.file("vignettesData/vignetteParamMCMC.rda", package = "airGR")) + rda_gelRub <- gelRub + rda_multDRAM <- multDRAM + expect_true(RunRmdChunks("../../vignettes/V02.2_param_mcmc.Rmd")) + expect_equal(gelRub, rda_gelRub, tolerance=1E-7) + expect_equal(multDRAM, rda_multDRAM, tolerance=1E-7) }) test_that("V03_param_sets_GR4J works", { skip_on_cran() rm(list=ls()) - RunRmdChunks("../../vignettes/V03_param_sets_GR4J.Rmd") + expect_true(RunRmdChunks("../../vignettes/V03_param_sets_GR4J.Rmd")) }) test_that("V04_cemaneige_hysteresis works", { skip_on_cran() rm(list=ls()) - RunRmdChunks("../../vignettes/V04_cemaneige_hysteresis.Rmd") - + load(system.file("vignettesData/vignetteCNHysteresis.rda", package = "airGR")) + rda_OutputsCrit_Cal <- OutputsCrit_Cal + rda_OutputsCrit_Cal_NoHyst <- OutputsCrit_Cal_NoHyst + rda_OutputsCrit_Val <- OutputsCrit_Val + rda_OutputsCrit_Val_NoHyst <- OutputsCrit_Val_NoHyst + expect_true(RunRmdChunks("../../vignettes/V04_cemaneige_hysteresis.Rmd")) + TestQmmQlsConversion(BasinObs, BasinInfo$BasinArea) + expect_equal(OutputsCrit_Cal, rda_OutputsCrit_Cal, tolerance=1E-7) + expect_equal(OutputsCrit_Cal_NoHyst, rda_OutputsCrit_Cal_NoHyst, tolerance=1E-7) + expect_equal(OutputsCrit_Val, rda_OutputsCrit_Val, tolerance=1E-7) + expect_equal(OutputsCrit_Val_NoHyst, rda_OutputsCrit_Val_NoHyst, tolerance=1E-7) }) -- GitLab