# Define the test cases
test_that("create_lags returns correct lagged variables", {
# Test case 1: Basic test with one lag --------------------------------------
y1 <- 1:5
lags1 <- 1
expected_output1 <- matrix(
data = c(NA, 1, 2, 3, 4),
nrow = 5,
ncol = 1,
dimnames = list(NULL, c("lag(1)"))
)
expect_equal(create_lags(y1, lags1), expected_output1)
# Test case 2: Multiple lags ------------------------------------------------
y2 <- 5:1
lags2 <- c(1, 2)
expected_output2 <- matrix(
data = c(NA, 5, 4, 3, 2, NA, NA, 5, 4, 3),
nrow = 5,
ncol = 2,
dimnames = list(NULL, c("lag(1)", "lag(2)"))
)
expect_equal(create_lags(y2, lags2), expected_output2)
# Test case 3: Zero lag -----------------------------------------------------
y3 <- c(2.5, 4.2, 6.7)
lags3 <- 0
expected_output3 <- matrix(
data = c(2.5, 4.2, 6.7),
nrow = 3,
ncol = 1,
dimnames = list(NULL, c("lag(0)"))
)
expect_equal(create_lags(y3, lags3), expected_output3)
# Test case 4: Empty input --------------------------------------------------
y4 <- numeric(0)
lags4 <- c(1, 2)
expected_output4 <- matrix(
data = numeric(0),
nrow = 0,
ncol = 2,
dimnames = list(NULL, c("lag(1)", "lag(2)"))
)
expect_equal(create_lags(y4, lags4), expected_output4)
})
# Define the test cases
test_that("create_revolved returns correct revolved variables", {
# Test case 1: Basic test with one lag and one step ahead -------------------
y1 <- 1:5
lags1 <- 1
n_ahead1 <- 1
expected_output1 <- matrix(
data = c(0, 5, NA_real_),
nrow = 3,
ncol = 1,
dimnames = list(NULL, c("lag(1)"))
)
expect_equal(create_revolved(y1, lags1, n_ahead1), expected_output1)
# Test case 2: Multiple lags and multiple steps ahead -----------------------
y2 <- 5:1
lags2 <- c(1, 2)
n_ahead2 <- 2
expected_output2 <- matrix(
data = c(0, 1, NA_real_, NA_real_, NA_real_, 0, 2, 1, NA_real_, NA_real_),
nrow = 5,
ncol = 2,
dimnames = list(NULL, c("lag(1)", "lag(2)"))
)
expect_equal(create_revolved(y2, lags2, n_ahead2), expected_output2)
# Test case 3: Zero lag and zero steps ahead --------------------------------
y3 <- c(2.5, 4.2, 6.7)
lags3 <- 0
n_ahead3 <- 0
expected_output3 <- matrix(
data = 0,
nrow = 1,
ncol = 1,
dimnames = list(NULL, c("lag(0)"))
)
expect_equal(create_revolved(y3, lags3, n_ahead3), expected_output3)
# Test case 4: Empty input --------------------------------------------------
y4 <- numeric(0)
lags4 <- c(1, 2)
n_ahead4 <- 2
expected_output4 <- matrix(
data = c(0, NA_real_, NA_real_, NA_real_, NA_real_, 0, NA_real_, NA_real_, NA_real_, NA_real_),
nrow = 5,
ncol = 2,
dimnames = list(NULL, c("lag(1)", "lag(2)"))
)
expect_equal(create_revolved(y4, lags4, n_ahead4), expected_output4)
})
# Define the test cases
test_that("create_win returns matrix with correct dimensions", {
# Set a random seed for reproducibility
set.seed(123)
# Test case 1: Basic test with small inputs ---------------------------------
n_inputs1 <- 2
n_states1 <- 3
scale_runif1 <- c(0, 1)
output1 <- create_win(n_inputs1, n_states1, scale_runif1)
expect_equal(dim(output1), c(n_states1, n_inputs1))
# Test case 2: Large inputs -------------------------------------------------
n_inputs2 <- 5
n_states2 <- 10
scale_runif2 <- c(-1, 1)
output2 <- create_win(n_inputs2, n_states2, scale_runif2)
expect_equal(dim(output2), c(n_states2, n_inputs2))
# Test case 3: Zero inputs and states ---------------------------------------
n_inputs3 <- 0
n_states3 <- 0
scale_runif3 <- c(0, 0)
output3 <- create_win(n_inputs3, n_states3, scale_runif3)
expect_equal(dim(output3), c(n_states3, n_inputs3))
})
# Define the test cases
test_that("create_wres returns correct reservoir weight matrix", {
# Test case 1: Basic test with small states and density ---------------------
n_states1 <- 5
rho1 <- 0.9
density1 <- 0.3
scale_runif1 <- c(-1, 1)
symmetric1 <- FALSE
output1 <- create_wres(n_states1, rho1, density1, scale_runif1, symmetric1)
# Check the dimensions of the output matrix
expect_equal(dim(output1), c(n_states1, n_states1))
# Test case 2: Large states and density with symmetric matrix ---------------
n_states2 <- 10
rho2 <- 0.95
density2 <- 0.6
scale_runif2 <- c(0, 0.5)
symmetric2 <- TRUE
output2 <- create_wres(n_states2, rho2, density2, scale_runif2, symmetric2)
# Check the dimensions of the output matrix
expect_equal(dim(output2), c(n_states2, n_states2))
})
# Define the test cases
test_that("paste_names returns correct names", {
# Test case 1: Basic test with single character x and multiple n ------------
x1 <- "A"
n1 <- 5
expected_output1 <- c("A(1)", "A(2)", "A(3)", "A(4)", "A(5)")
expect_equal(paste_names(x1, n1), expected_output1)
# Test case 2: Multi-character x and multiple n -----------------------------
x2 <- "name"
n2 <- 10
expected_output2 <- c(
"name(01)", "name(02)", "name(03)", "name(04)", "name(05)",
"name(06)", "name(07)", "name(08)", "name(09)", "name(10)"
)
expect_equal(paste_names(x2, n2), expected_output2)
# Test case 3: Single character x and single n ------------------------------
x3 <- "X"
n3 <- 1
expected_output3 <- "X(1)"
expect_equal(paste_names(x3, n3), expected_output3)
# Test case 4: Empty string x and multiple n --------------------------------
x4 <- ""
n4 <- 2
expected_output4 <- c("(1)", "(2)")
expect_equal(paste_names(x4, n4), expected_output4)
})
# Define the test cases
test_that("diff_vec returns correct vector with differences", {
# Test case 1: Basic test with small vector and n_diff = 1 ------------------
y1 <- c(3, 8, 2, 10, 5)
n_diff1 <- 1
expected_output1 <- c(NA_real_, 5, -6, 8, -5)
expect_equal(diff_vec(y1, n_diff1), expected_output1)
# Test case 2: Large vector and n_diff = 2 ----------------------------------
y2 <- 1:10
n_diff2 <- 2
expected_output2 <- c(NA_real_, NA_real_, 0, 0, 0, 0, 0, 0, 0, 0)
expect_equal(diff_vec(y2, n_diff2), expected_output2)
# Test case 3: Empty vector and n_diff = 3 ----------------------------------
y3 <- numeric(0)
n_diff3 <- 3
expected_output3 <- c(NA_real_, NA_real_, NA_real_)
expect_equal(diff_vec(y3, n_diff3), expected_output3)
})
# Define the test cases
test_that("inv_diff_vec returns correct inverse differenced vector", {
# Test case 1: Basic test with n_diff = 1
y1 <- c(3, 8, 2, 10, 5, 8, 4, 9, 10, 12)
yd1 <- diff(y1, differences = 1, lag = 1L)
ytrain1 <- head(y1, 6)
yfc1 <- tail(yd1, 4)
n_diff1 <- 1
expected_output1 <- c(4, 9, 10, 12)
expect_equal(inv_diff_vec(ytrain1, yfc1, n_diff1), expected_output1)
# Test case 2: Basic test with n_diff = 2 -----------------------------------
y2 <- c(5, 8, 10, 3, 12, 9, 2, 8, 6, 4, 3, 8)
yd2 <- diff(y2, differences = 2, lag = 1L)
ytrain2 <- head(y2, 6)
yfc2 <- tail(yd2, 6)
n_diff2 <- 2
expected_output2 <- c(2, 8, 6, 4, 3, 8)
expect_equal(inv_diff_vec(ytrain2, yfc2, n_diff2), expected_output2)
})
# Define the test cases
test_that("scale_vec returns correct scaled vector and old range", {
# Test case 1: Basic test with default new_range ----------------------------
y1 <- c(3, 8, 2, 10, 5)
expected_output1 <- list(
ys = c(-0.75, 0.50, -1.00, 1.00, -0.25),
old_range = c(2, 10)
)
expect_equal(scale_vec(y1), expected_output1)
# Test case 2: Basic test with custom new_range -----------------------------
y2 <- c(2, 8, 2, 10, 12)
new_range2 <- c(0, 1)
expected_output2 <- list(
ys = c(0.0, 0.6, 0.0, 0.8, 1.0),
old_range = c(2, 12)
)
expect_equal(scale_vec(y2, new_range2), expected_output2)
})
# Define the test cases
test_that("scale_vec returns correct scaled vector and old range", {
# Test case 1: Basic test with default new_range ----------------------------
ys1 <- c(-0.75, 0.50, -1.00, 1.00, -0.25)
old_range1 <- c(2, 10)
new_range1 <- c(-1, 1)
expected_output1 <- c(3, 8, 2, 10, 5)
expect_equal(rescale_vec(ys1, old_range1, new_range1), expected_output1)
# Test case 2: Basic test with custom new_range -----------------------------
ys2 <- c(0.0, 0.6, 0.0, 0.8, 1.0)
old_range2 <- c(2, 12)
new_range2 <- c(0, 1)
expected_output2 <- c(2, 8, 2, 10, 12)
expect_equal(rescale_vec(ys2, old_range2, new_range2), expected_output2)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.