From 6995f167a79c839e702bd02e758cccdcf2d75cc0 Mon Sep 17 00:00:00 2001
From: Dorchies David <david.dorchies@irstea.fr>
Date: Thu, 3 Dec 2020 18:10:40 +0100
Subject: [PATCH] v1.6.8.26 fix: NA produced when aggregating from montly time
 step

Refs #41, #73
---
 DESCRIPTION                        |  2 +-
 R/SeriesAggreg.data.frame.R        | 14 ++++++++++----
 tests/testthat/test-SeriesAggreg.R |  4 ++--
 3 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/DESCRIPTION b/DESCRIPTION
index 4166d09d..2e9044b9 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.6.8.25
+Version: 1.6.8.26
 Date: 2020-12-02
 Authors@R: c(
   person("Laurent", "Coron", role = c("aut", "trl"), comment = c(ORCID = "0000-0002-1503-6204")),
diff --git a/R/SeriesAggreg.data.frame.R b/R/SeriesAggreg.data.frame.R
index ad37d16b..12c4184f 100644
--- a/R/SeriesAggreg.data.frame.R
+++ b/R/SeriesAggreg.data.frame.R
@@ -102,10 +102,16 @@ SeriesAggreg.data.frame <- function(x,
     stop  <-
       sprintf("%i-12-31 00:00:00", as.numeric(format(TabSeries2$DatesR[nrow(TabSeries2)], format = "%Y")) +
                 1)
-    by <-
-      ifelse(grepl("hours", format(diff(
-        x$DatesR[1:2]
-      ))), yes = "hours", no = "days")
+    Ts <- format(diff(x$DatesR[1:2]))
+    if(gsub("[0-9]+ ", "", Ts) == "hours") {
+      by <- "hours"
+    } else {
+      if(gsub(" days$", "", Ts) == "1") {
+        by <- "days"
+      } else {
+        by <- "months"
+      }
+    }
     fakeTs <-
       data.frame(DatesR = seq(
         from = as.POSIXct(start, tz = "UTC"),
diff --git a/tests/testthat/test-SeriesAggreg.R b/tests/testthat/test-SeriesAggreg.R
index 3c84e4e3..50994219 100644
--- a/tests/testthat/test-SeriesAggreg.R
+++ b/tests/testthat/test-SeriesAggreg.R
@@ -194,6 +194,6 @@ test_that("SeriesAggreg from and to the same time step should return initial tim
     PotEvap = BasinObs$E
   )
   I2 <- SeriesAggreg(InputsModel, "%Y%m")
-  I3 <- SeriesAggreg(I2, "%Y%m")
-  expect_equal(I2, I3)
+  expect_warning(SeriesAggreg(I2, "%Y%m"), regexp = "No time-step conversion was performed")
+  expect_equal(I2, suppressWarnings(SeriesAggreg(I2, "%Y%m")))
 })
-- 
GitLab