mod <- " # intercept and slope with fixed coefficients i =~ 1*t1 + 1*t2 + 1*t3 + 1*t4 s =~ 0*t1 + 1*t2 + 2*t3 + 3*t4 # regressions i ~ x1 + x2 s ~ x1 + x2 # time-varying covariates t1 ~ c1 t2 ~ c2 t3 ~ c3 t4 ~ c4 " dat <- lavaan::Demo.growth fit_lav <- lavaan::cfa(mod, dat) NSAMP <- 3 test_that("Method: marggaus (fast)", { expect_no_error({ fit <- agrowth( mod, dat, marginal_method = "marggaus", vb_correction = FALSE, test = "none", verbose = FALSE, nsamp = NSAMP ) }) expect_no_error(out <- capture.output(summary(fit))) expect_s4_class(fit, "INLAvaan") }) test_that("Method: skewnorm", { expect_no_error({ fit <- agrowth( mod, dat, marginal_method = "skewnorm", vb_correction = FALSE, test = "none", verbose = FALSE, nsamp = NSAMP ) }) expect_no_error(out <- capture.output(summary(fit))) expect_s4_class(fit, "INLAvaan") expect_equal(fit@optim$dx, rep(0, length(coef(fit))), tolerance = 1e-3) }) test_that("Method: asymgaus", { expect_no_error({ fit <- agrowth( mod, dat, marginal_method = "asymgaus", vb_correction = FALSE, test = "none", verbose = FALSE, nsamp = NSAMP ) }) expect_no_error(out <- capture.output(summary(fit))) expect_s4_class(fit, "INLAvaan") }) test_that("Method: sampling", { expect_no_error({ fit <- agrowth( mod, dat, marginal_method = "sampling", vb_correction = FALSE, test = "none", verbose = FALSE, nsamp = NSAMP ) }) expect_no_error(out <- capture.output(summary(fit))) expect_s4_class(fit, "INLAvaan") }) test_that("Gradients are correct (Finite Difference Check)", { suppressMessages( tmp <- capture.output(fit <- agrowth(mod, dat, test = "none", debug = TRUE)) ) test_df <- read.table(text = tmp, skip = 1)[, -1] colnames(test_df) <- c("fd", "analytic", "diff") expect_equal( as.numeric(test_df$fd), as.numeric(test_df$diff), tolerance = 1e-3 ) expect_equal( as.numeric(test_df$diff), rep(0, nrow(test_df)), tolerance = 1e-3 ) })