tests/testthat/test-cvpost.R

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
})

Try the rxode2random package in your browser

Any scripts or data that you put into this service are public.

rxode2random documentation built on May 29, 2024, 7:30 a.m.