# tests/testthat/test-extrema.R In helske/Rlibeemd: Ensemble Empirical Mode Decomposition (EEMD) and Its Complete Variant (CEEMDAN)

```context("Testing extrema")

set.seed(1)

test_that("bogus arguments throw error",{
expect_error(extrema("abc"))
expect_error(extrema(NULL))
})

test_that("length 1 works",{
ex <- extrema(2)
expect_identical(c(ex\$minima), c(0, 2))
expect_identical(c(ex\$maxima), c(0, 2))
})

test_that("length 2 works",{
ex <- extrema(c(2, 5))
expect_identical(c(ex\$minima), c(0, 1, 2, 5))
expect_identical(c(ex\$maxima), c(0, 1, 2, 5))
})

test_that("length 3 works",{
ex <- extrema(c(2, -1, 5))
expect_identical(c(ex\$minima), c(0, 1, 2, 2, -1, 5))
expect_identical(c(ex\$maxima), c(0, 2, 2, 5))
})

test_that("length 3 ts object works",{
ex <- extrema(ts(c(2, -1, 5), start = 10, frequency = 4))
expect_identical(c(ex\$minima), c(10, 10.25, 10.5, 2, -1, 5))
expect_identical(c(ex\$maxima), c(10, 10.5, 2, 5))
})

test_that("zero series works",{
ex <- extrema(rep(0,10))
expect_identical(c(ex\$minima), c(0, 9, 0, 0))
expect_identical(c(ex\$maxima), c(0, 9, 0, 0))
})

test_that("all extremas are found correctly",{
x <- rnorm(128)
ex <- extrema(x)
expect_identical(ex\$minima[1], 0)
expect_identical(ex\$minima[nrow(ex\$minima)], 127)
expect_identical(ex\$maxima[1], 0)
expect_identical(ex\$maxima[nrow(ex\$maxima)], 127)
expect_identical(ex\$minima[2:(nrow(ex\$minima) - 1),2],
x[1 + ex\$minima[2:(nrow(ex\$minima) - 1), 1]])
expect_identical(ex\$maxima[2:(nrow(ex\$maxima) - 1),2],
x[1 + ex\$maxima[2:(nrow(ex\$maxima) - 1), 1]])

for (i in 2:(nrow(ex\$minima) - 1)) {
j <- (1 + ex\$minima[i, 1])
expect_true(ex\$minima[i,2] <= x[j - 1])
expect_true(ex\$minima[i,2] <= x[j + 1])
}
for (i in 2:(nrow(ex\$maxima) - 1)) {
j <- (1 + ex\$maxima[i, 1])
expect_true(ex\$maxima[i,2] >= x[j - 1])
expect_true(ex\$maxima[i,2] >= x[j + 1])
}
})

test_that("check extremas for ts object",{
x <- ts(rnorm(120), start = 2000, frequency = 4)
ex <- extrema(x)
expect_identical(ex\$minima[1], 2000)
expect_identical(ex\$minima[nrow(ex\$minima)], 2029.75)
expect_identical(ex\$maxima[1], 2000)
expect_identical(ex\$maxima[nrow(ex\$maxima)], 2029.75)
expect_identical(ex\$minima[2:(nrow(ex\$minima) - 1),2],
x[time(x) %in% (ex\$minima[2:(nrow(ex\$minima) - 1), 1])])
expect_identical(ex\$maxima[2:(nrow(ex\$maxima) - 1),2],
x[time(x) %in% (ex\$maxima[2:(nrow(ex\$maxima) - 1), 1])])
})
```
helske/Rlibeemd documentation built on Oct. 19, 2017, 7:28 p.m.