name instead of year; ipynb generator debugged, with logging
[talweg.git] / pkg / tests / testthat / test.computeFilaments.R
index ca2fb69..ec39340 100644 (file)
@@ -8,15 +8,15 @@ I = function(i)
 getDataTest = function(n)
 {
        data = Data$new()
-       x = seq(0,10,0.1)
-       L = length(x)
+       x = seq(0,9.5,0.1)
+       L = length(x) #96 1/4h
        s1 = cos(x)
        s2 = sin(x)
        s3 = c( s1[1:(L%/%2)] , s2[(L%/%2+1):L] )
-       #sum((s1-s2)^2) == 97.59381
-       #sum((s1-s3)^2) == 57.03051
-       #sum((s2-s3)^2) == 40.5633
-       s = list( s1, s2, s3 )
+       #sum((s1-s2)^2) == 96
+       #sum((s1-s3)^2) == 58
+       #sum((s2-s3)^2) == 38
+       s = list(s1, s2, s3)
        series = list()
        for (i in seq_len(n))
        {
@@ -26,7 +26,10 @@ getDataTest = function(n)
                # 10 series with NAs for index 2
                if (I(i) == 2 && i >= 60 && i<= 90)
                        serie[sample(seq_len(L),1)] = NA
-               data$append(c(), serie, level, c(), c()) #no need for more
+               time = as.POSIXct(i*15*60, origin="2007-01-01", tz="GMT")
+               exo = runif(4)
+               exo_hat = runif(4)
+               data$append(time, serie, level, exo, exo_hat)
        }
        data
 }
@@ -36,45 +39,49 @@ test_that("output is as expected on simulated series",
        data = getDataTest(150)
 
        # index 143 : serie type 2
-       f = computeFilaments(data, 143, limit=60, plot=FALSE)
-       # Expected output: 23 series of type 3 (closer), then 50-3-10 series of type 2, then 143
-       expect_identical(length(f$indices), as.integer(61)) #61 because result also contain today
-       expect_identical(length(f$colors),  as.integer(61))
-       expect_true(all(I(f$indices) >= 2))
-       for (i in 1:23)
+       pred = computeForecast(data, 143, "Neighbors", "Zero",
+               horizon=length(data$getSerie(1)), simtype="endo", h_window=1)
+       f = computeFilaments(data, pred, 1, limit=60, plot=FALSE)
+
+       # Expected output: 50-3-10 series of type 2, then 23 series of type 3 (closest next)
+       expect_identical(length(f$neighb_indices), as.integer(60))
+       expect_identical(length(f$colors), as.integer(60))
+       expect_equal(f$index, 143)
+       expect_true(all(I(f$neighb_indices) >= 2))
+       for (i in 1:37)
        {
-               expect_equal(I(f$indices[i]), 3)
+               expect_equal(I(f$neighb_indices[i]), 2)
                expect_match(f$colors[i], f$colors[1])
        }
-       for (i in 24:60)
+       for (i in 38:60)
        {
-               expect_equal(I(f$indices[i]), 2)
-               expect_match(f$colors[i], f$colors[24])
+               expect_equal(I(f$neighb_indices[i]), 3)
+               expect_match(f$colors[i], f$colors[38])
        }
-       expect_equal(f$indices[61], 143)
-       expect_match(f$colors[61], "#FF0000") #special color: current day in red
-       expect_match(f$colors[1], "#E*")
-       expect_match(f$colors[24], "#1*")
+       expect_match(f$colors[1], "#1*")
+       expect_match(f$colors[38], "#E*")
 
        # index 142 : serie type 1
-       f = computeFilaments(data, 142, limit=50, plot=FALSE)
-       # Expected output: 13 series of type 3 (closer), then 50-10-3 series of type 1, then 142
+       pred = computeForecast(data, 142, "Neighbors", "Zero",
+               horizon=length(data$getSerie(1)), simtype="endo", h_window=1)
+       f = computeFilaments(data, pred, 1, limit=50, plot=FALSE)
+
+       # Expected output: 50-10-3 series of type 1, then 13 series of type 3 (closest next)
        # NOTE: -10 because only past days with no-NAs tomorrow => exclude type 1 in [60,90[
-       expect_identical(length(f$indices), as.integer(51))
-       expect_identical(length(f$colors), as.integer(51))
-       expect_true(all(I(f$indices) != 2))
-       for (i in 1:13)
+       expect_identical(length(f$neighb_indices), as.integer(50))
+       expect_identical(length(f$colors), as.integer(50))
+       expect_equal(f$index, 142)
+       expect_true(all(I(f$neighb_indices) != 2))
+       for (i in 1:37)
        {
-               expect_equal(I(f$indices[i]), 3)
+               expect_equal(I(f$neighb_indices[i]), 1)
                expect_match(f$colors[i], f$colors[1])
        }
-       for (i in 14:50)
+       for (i in 38:50)
        {
-               expect_equal(I(f$indices[i]), 1)
-               expect_match(f$colors[i], f$colors[14])
+               expect_equal(I(f$neighb_indices[i]), 3)
+               expect_match(f$colors[i], f$colors[38])
        }
-       expect_equal(f$indices[51], 142)
-       expect_match(f$colors[51], "#FF0000")
-       expect_match(f$colors[1], "#E*")
-       expect_match(f$colors[14], "#1*")
+       expect_match(f$colors[1], "#1*")
+       expect_match(f$colors[38], "#E*")
 })