drop enercast submodule; drop Rcpp requirement; fix doc, complete code, fix fix fix
[epclust.git] / epclust / tests / testthat / test-filterMA.R
index 8dda50e..19ec6fc 100644 (file)
@@ -2,16 +2,30 @@ context("filterMA")
 
 test_that("[time-]serie filtering behave as expected",
 {
-       # Currently just a mean of 3 values
-       M = matrix(runif(1000,min=-7,max=7), ncol=10)
-       ref_fM = stats::filter(M, c(1/3,1/3,1/3), circular=FALSE)
-       fM = epclust:::filterMA(M)
+       # Mean of 3 values
+       M <- matrix(runif(1000,min=-7,max=7), ncol=10)
+       ref_fM <- stats::filter(M, rep(1/3,3), circular=FALSE)
+       fM <- epclust:::filterMA(M, 3)
 
        # Expect an agreement on all inner values
        expect_equal(dim(fM), c(100,10))
        expect_equal(fM[2:99,], ref_fM[2:99,])
 
-       # Border values should be unchanged
-       expect_equal(fM[1,], M[1,])
-       expect_equal(fM[100,], M[100,])
+       # Border values should be averages of 2 values
+       expect_equal(fM[1,], colMeans(M[1:2,]))
+       expect_equal(fM[100,], colMeans(M[99:100,]))
+
+       # Mean of 5 values
+       ref_fM <- stats::filter(M, rep(1/5,5), circular=FALSE)
+       fM <- epclust:::filterMA(M, 5)
+
+       # Expect an agreement on all inner values
+       expect_equal(dim(fM), c(100,10))
+       expect_equal(fM[3:98,], ref_fM[3:98,])
+
+       # Border values should be averages of 3 or 4 values
+       expect_equal(fM[1,], colMeans(M[1:3,]))
+       expect_equal(fM[2,], colMeans(M[1:4,]))
+       expect_equal(fM[99,], colMeans(M[97:100,]))
+       expect_equal(fM[100,], colMeans(M[98:100,]))
 })