From b461d2854a5d0c8c12379d53cad760934dd6174b Mon Sep 17 00:00:00 2001
From: Delaigue Olivier <olivier.delaigue@irstea.priv>
Date: Mon, 25 Mar 2019 09:54:18 +0100
Subject: [PATCH] v1.2.11.10 BUG: check of range values now works when there is
 only one Q, SCA or SCE varObs

---
 DESCRIPTION          |  2 +-
 NEWS.rmd             |  2 +-
 R/CreateInputsCrit.R | 17 ++++++++++++++---
 3 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index ecaa3a6b..d5549d6d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: airGR
 Type: Package
 Title: Suite of GR Hydrological Models for Precipitation-Runoff Modelling
-Version: 1.2.11.9
+Version: 1.2.11.10
 Date: 2019-03-25
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")),
diff --git a/NEWS.rmd b/NEWS.rmd
index bc003205..3c71ce5a 100644
--- a/NEWS.rmd
+++ b/NEWS.rmd
@@ -13,7 +13,7 @@ output:
 
 
 
-### 1.2.11.9 Release Notes (2019-03-25) 
+### 1.2.11.10 Release Notes (2019-03-25) 
 
 
 
diff --git a/R/CreateInputsCrit.R b/R/CreateInputsCrit.R
index aa73a2a1..4d84ec94 100644
--- a/R/CreateInputsCrit.R
+++ b/R/CreateInputsCrit.R
@@ -85,6 +85,9 @@ CreateInputsCrit <- function(FUN_CRIT,
         listArgs[[iArgs]] <- lapply(seq_along(listArgs$FUN_CRIT), function(x) NULL)
       }
     }
+    if (iArgs %in% c("FUN_CRIT", "varObs", "transfo", "weights") & length(listArgs[[iArgs]]) > 1L) {
+      listArgs[[iArgs]] <- as.list(listArgs[[iArgs]])
+    }
     if (!is.list(listArgs[[iArgs]])) {
       listArgs[[iArgs]] <- list(listArgs[[iArgs]])
     }
@@ -196,7 +199,11 @@ CreateInputsCrit <- function(FUN_CRIT,
     ## check 'varObs' + 'obs'
     if (any(iListArgs2$varObs %in% "SCA")) {
       idSCA <- which(iListArgs2$varObs == "SCA")
-      vecSCA <- unlist(iListArgs2$obs[idSCA])
+      if (length(idSCA) == 1L) {
+        vecSCA <- iListArgs2$obs
+      } else {
+        vecSCA <- unlist(iListArgs2$obs[idSCA])
+      }
       if (min(vecSCA, na.rm = TRUE) < 0 | max(vecSCA, na.rm = TRUE) > 1) {
         stop("'obs' outside [0,1] for \"SCA\"", call. = FALSE)
       }
@@ -204,7 +211,11 @@ CreateInputsCrit <- function(FUN_CRIT,
     inPosVarObs <- c("Q", "SWE")
     if (any(iListArgs2$varObs %in% inPosVarObs)) {
       idQSS <- which(iListArgs2$varObs %in% inPosVarObs)
-      vecQSS <- unlist(iListArgs2$obs[idQSS])
+      if (length(idQSS) == 1L) {
+        vecQSS <- iListArgs2$obs
+      } else {
+        vecQSS <- unlist(iListArgs2$obs[idQSS])
+      }
       if (min(vecQSS, na.rm = TRUE) < 0) {
         stop(sprintf("'obs' outside [0,Inf[ for \"%s\"", iListArgs2$varObs), call. = FALSE)
       }
@@ -248,7 +259,7 @@ CreateInputsCrit <- function(FUN_CRIT,
                         obs        = iListArgs2$obs,
                         varObs     = iListArgs2$varObs,
                         BoolCrit   = iListArgs2$BoolCrit,
-                        idLayer = iListArgs2$idLayer,
+                        idLayer    = iListArgs2$idLayer,
                         transfo    = iListArgs2$transfo,
                         epsilon    = iListArgs2$epsilon,
                         weights    = iListArgs2$weights)
-- 
GitLab