# Tests for wb()
mod <- fungible::simFA(Seed = 42)
Omega <- mod$Rpop
set.seed(42)
Sigma <- wb(mod, target_rmsea = 0.05)$Sigma
# Load an indefinite matrix (BadRBY) and create a non-symmetric matrix
data(BadRBY, package = "fungible")
nonsymmetric_matrix <- fungible::rcor(5)
nonsymmetric_matrix[1,2] <- .1
test_that("Errors are thrown when invalid target RMSEA values are given", {
expect_error(wb(mod = mod, target_rmsea = "a"))
expect_error(wb(mod = mod, target_rmsea = -.01))
expect_error(wb(mod = mod, target_rmsea = 1.01))
expect_error(wb(mod = mod, target_rmsea = NULL))
}
)
test_that("Errors are thrown when invalid mod values are given", {
expect_error(wb(mod = "a", target_rmsea = 0.05))
expect_error(wb(mod = list("a" = 1, "b" = 2, "c" = 3), target_rmsea = 0.05))
expect_error(wb(mod = NULL, target_rmsea = 0.05))
})
test_that("Function output has the expected dimension and type", {
expect_equal(dim(Omega), dim(Sigma))
expect_false(any(eigen(Sigma)$values < 0))
expect_false(any(diag(Sigma) != 1))
expect_false(any(abs(Sigma) > 1))
})
test_that("Function works when wb_mod is specified.", {
wb_mod <- get_wb_mod(mod)
expect_error(wb(mod, target_rmsea = 0.05, wb_mod = -0.1))
expect_lte(abs(rmsea(wb(mod, target_rmsea = 0.05, wb_mod = wb_mod)$Sigma,
Omega, k = ncol(mod$loadings)) - 0.05), 0.01)
})
test_that("Function works when target_rmsea value is large", {
expect_lte(abs(rmsea(wb(mod, target_rmsea = 0.1)$Sigma,
Omega, k = ncol(mod$loadings)) - .1),
0.03)
})
test_that("An error is thrown if RMSEA is too large.", {
expect_error(wb(mod, target_rmsea = .35, adjust_target = FALSE))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.