tests/testthat/test-piecemeal.R

# (Tests moved to separate files for parallel execution.)


test_that("Identical Piecemeal setups produce identical results", {
  outdir1 <- tempfile("piecemeal_id1_")
  outdir2 <- tempfile("piecemeal_id2_")
  worker_fun <- function(x, y, .seed) {
    set.seed(.seed)
    list(p = x * y, u = runif(1))
  }
  # Setup 1
  sim1 <- piecemeal::init(outdir1)
  sim1$factorial(x = 1:2, y = 3:4)$nrep(3)
  sim1$worker(worker_fun)
  sim1$run(shuffle = FALSE)
  df1 <- sim1$result_df()

  # Setup 2 (identical)
  sim2 <- piecemeal::init(outdir2)
  sim2$factorial(x = 1:2, y = 3:4)$nrep(3)
  sim2$worker(worker_fun)
  sim2$run(shuffle = FALSE)
  df2 <- sim2$result_df()

  # Sort for comparison
  df1 <- df1[order(df1$x, df1$y, df1$.seed), ]
  df2 <- df2[order(df2$x, df2$y, df2$.seed), ]

  expect_equal(df1$p, df2$p)
  expect_equal(df1$u, df2$u)
  expect_equal(df1$x, df2$x)
  expect_equal(df1$y, df2$y)
  expect_equal(df1$.seed, df2$.seed)

  unlink(outdir1, recursive = TRUE)
  unlink(outdir2, recursive = TRUE)
})

Try the piecemeal package in your browser

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

piecemeal documentation built on March 11, 2026, 5:07 p.m.