tests/testthat/test-cvpost.R

rxTest({
  test_that("single cvPost draw makes sense", {
    draw1 <- cvPost(3, matrix(c(1, .3, .3, 1), 2, 2))
    expect_true(is.matrix(draw1))
    expect_equal(dim(draw1), c(2L, 2L))
  })

  test_that("cvPost of 3 items make sense.", {
    rxWithSeed(42, {
      mat1 <- matrix(c(1, .3, .3, 1), 2, 2)
      draw3 <- cvPost(3, mat1, n = 3)
      drawNull <- cvPost(NULL, mat1, n = 1)
      expect_equal(drawNull, mat1)
    })
    rxWithSeed(
      42,
      draw3c <- cvPost(3, matrix(c(1, .3, .3, 1), 2, 2), n = 3, returnChol = TRUE)
    )
    rxWithSeed(
      42,
      draw3ct1 <- cvPost(3, matrix(c(1, .3, .3, 1), 2, 2), n = 3, returnChol = TRUE, type = 1)
    )
    expect_type(draw3, "list")
    expect_type(draw3c, "list")
    for (i in seq_along(draw3)) {
      expect_equal(dim(draw3[[i]]), c(2L, 2L))
      expect_equal(dim(draw3c[[i]]), c(2L, 2L))
      expect_equal(chol(draw3[[i]]), draw3c[[i]])
    }
    expect_equal(draw3c, draw3ct1)
    rxWithSeed(
      42,
      draw3c <- cvPost(3, chol(matrix(c(1, .3, .3, 1), 2, 2)), n = 3, omegaIsChol = TRUE)
    )
    rxWithSeed(
      42,
      draw3 <- cvPost(3, matrix(c(1, .3, .3, 1), 2, 2), n = 3)
    )
    for (i in seq_along(draw3)) {
      expect_equal(draw3[[1]], draw3c[[1]])
    }

    rxWithSeed(
      42,
      lkj <-
        cvPost(
          3,
          vapply(1:3, function(...) {
            rnorm(10)
          },
          numeric(10)),
          type = "lkj",
          returnChol = TRUE
        )
    )
    rxWithSeed(
      42,
      lkjTn <-
        cvPost(
          3,
          vapply(1:3, function(...) {
            rnorm(10)
          }, numeric(10)),
          type = 2,
          returnChol = TRUE, diagXformType = 5
        )
    )
    expect_equal(lkj, lkjTn)
  })

  test_that("rinvchisq produces proper output", {
    expect_equal(length(rinvchisq(3, 4, 1)), 3) ## Scale = 1, degrees of freedom = 4
    expect_equal(length(rinvchisq(3, 4, 1)), 3) ## Scale = 1, degrees of freedom = 4
  })
})
nlmixr2/rxode2 documentation built on Jan. 11, 2025, 8:48 a.m.