tests/testthat/test-generators.R

context("generators")

seed <- 1234567890

test_that("Default generator: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("default")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Default generator: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("default")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Default generator: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("default")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Default generator: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("default")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("PCG64: setting seed produces identical uniformly distributed numbers", {
  skip_if(powerpc_apple)
  dqRNGkind("pcg64")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("PCG64: setting seed and stream produces identical uniformly distributed numbers", {
  skip_if(powerpc_apple)
  dqRNGkind("pcg64")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("PCG64: saving state produces identical uniformly distributed numbers", {
  skip_if(powerpc_apple)
  dqRNGkind("pcg64")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("PCG64: setting same seed but different stream produces different uniformly distributed numbers", {
  skip_if(powerpc_apple)
  dqRNGkind("pcg64")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("Xoroshiro128+: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128+")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128+: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128+")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128+: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128+")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128+: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128+")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("Xoroshiro128++: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128++")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128++: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128++")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128++: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128++")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoroshiro128++: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("Xoroshiro128++")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("Xoshiro256+: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256+")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256+: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256+")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256+: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256+")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256+: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("Xoshiro256+")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("Xoshiro256++: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256++")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256++: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256++")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256++: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("Xoshiro256++")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Xoshiro256++: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("Xoshiro256++")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("Threefry: setting seed produces identical uniformly distributed numbers", {
  dqRNGkind("Threefry")
  dqset.seed(seed)
  u1 <- dqrunif(10)
  dqset.seed(seed)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Threefry: setting seed and stream produces identical uniformly distributed numbers", {
  dqRNGkind("Threefry")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 1)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Threefry: saving state produces identical uniformly distributed numbers", {
  dqRNGkind("Threefry")
  dqset.seed(seed, 1)
  state <- dqrng_get_state()
  u1 <- dqrunif(10)
  dqrng_set_state(state)
  u2 <- dqrunif(10)
  expect_equal(u1, u2)
})

test_that("Threefry: setting same seed but different stream produces different uniformly distributed numbers", {
  dqRNGkind("Threefry")
  dqset.seed(seed, 1)
  u1 <- dqrunif(10)
  dqset.seed(seed, 2)
  u2 <- dqrunif(10)
  expect_false(identical(u1, u2))
})

test_that("non-existant RNG produces error", {
  expect_error(dqRNGkind("does_not_exist"))
})

Try the dqrng package in your browser

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

dqrng documentation built on May 29, 2024, 12:10 p.m.