Nothing
test_that("createEngine works and returns expected structure", {
engine <- createEngine(
dimension = 2,
lowerBounds = c(-1, -1),
upperBounds = c(1, 1),
seed = 123,
mean = c(0, 0),
precision = diag(2)
)
expect_type(engine, "list")
expect_named(engine, "engine")
expect_true(is(engine$engine, "externalptr"))
expect_true(length(engine) == 1)
})
test_that("createNutsEngine works", {
nuts_engine <- createNutsEngine(
dimension = 2,
lowerBounds = c(-2, -2),
upperBounds = c(2, 2),
seed = 456,
stepSize = 0.1,
mean = c(0.5, -0.5),
precision = matrix(c(2, 0.3, 0.3, 2), nrow = 2)
)
expect_type(nuts_engine, "list")
expect_named(nuts_engine, "engine")
expect_true(is(nuts_engine$engine, "externalptr"))
})
test_that("setMean updates engine without error", {
engine <- createEngine(
dimension = 2,
lowerBounds = c(-1, -1),
upperBounds = c(1, 1),
seed = 123,
mean = c(0, 0),
precision = diag(2)
)
# Should work without error
expect_error(setMean(engine, mean = c(1, 2)), NA)
# Test with different mean values
expect_error(setMean(engine, mean = c(-1, 1)), NA)
expect_error(setMean(engine, mean = c(0.5, -0.5)), NA)
})
test_that("setPrecision updates engine without error", {
engine <- createEngine(
dimension = 2,
lowerBounds = c(-1, -1),
upperBounds = c(1, 1),
seed = 123,
mean = c(0, 0),
precision = diag(2)
)
# Test diagonal precision
expect_error(setPrecision(engine, precision = diag(c(2, 3))), NA)
# Test correlated precision
corr_prec <- matrix(c(2, 0.5, 0.5, 2), nrow = 2)
expect_error(setPrecision(engine, precision = corr_prec), NA)
# Test identity again
expect_error(setPrecision(engine, precision = diag(2)), NA)
})
test_that("engine functions integrate correctly", {
engine <- createEngine(
dimension = 2,
lowerBounds = c(-1, -1),
upperBounds = c(1, 1),
seed = 123,
mean = c(0, 0),
precision = diag(2)
)
# Get multiple samples to ensure engine works
positions <- matrix(0, nrow = 5, ncol = 2)
current_pos <- c(0.1, 0.2)
for (i in 1:5) {
current_pos <- getZigzagSample(
position = current_pos,
nutsFlg = FALSE,
engine = engine,
stepSize = 0.1
)
positions[i, ] <- current_pos
# Update parameters every other iteration
if (i %% 2 == 0) {
setMean(engine, mean = runif(2, -0.5, 0.5))
setPrecision(engine, precision = diag(runif(2, 0.5, 2)))
}
}
# All positions should be within bounds
expect_true(all(positions >= -1 & positions <= 1))
expect_true(!any(is.na(positions)))
})
test_that("engine works with getMarkovianZigzagSample", {
engine <- createEngine(
dimension = 2,
lowerBounds = c(-1, -1),
upperBounds = c(1, 1),
seed = 123,
mean = c(0, 0),
precision = diag(2)
)
result <- getMarkovianZigzagSample(
position = c(0.1, -0.2),
engine = engine,
travelTime = 0.5
)
expect_type(result, "list")
expect_named(result, c("position", "velocity"))
expect_length(result$position, 2)
expect_length(result$velocity, 2)
expect_type(result$position, "double")
expect_type(result$velocity, "double")
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.