From 90177320116c3c5eac46c72bcbbddafcd052c12e Mon Sep 17 00:00:00 2001 From: Mark Wong Date: Sat, 10 Apr 2021 17:35:00 -0700 Subject: [PATCH] Add tests for advancing PCG generators A simple test to check the values after 20 steps. --- rand_pcg/tests/lcg128xsl64.rs | 12 ++++++++++++ rand_pcg/tests/lcg64xsh32.rs | 12 ++++++++++++ rand_pcg/tests/mcg128xsl64.rs | 12 ++++++++++++ 3 files changed, 36 insertions(+) diff --git a/rand_pcg/tests/lcg128xsl64.rs b/rand_pcg/tests/lcg128xsl64.rs index ac238b51..8038d426 100644 --- a/rand_pcg/tests/lcg128xsl64.rs +++ b/rand_pcg/tests/lcg128xsl64.rs @@ -1,6 +1,18 @@ use rand_core::{RngCore, SeedableRng}; use rand_pcg::{Lcg128Xsl64, Pcg64}; +#[test] +fn test_lcg128xsl64_advancing() { + let seed = Default::default(); + let mut rng1 = Lcg128Xsl64::from_seed(seed); + let mut rng2 = Lcg128Xsl64::from_seed(seed); + for _ in 0..20 { + rng1.next_u64(); + } + rng2.advance(20); + assert_eq!(rng1.next_u64(), rng2.next_u64()); +} + #[test] fn test_lcg128xsl64_construction() { // Test that various construction techniques produce a working RNG. diff --git a/rand_pcg/tests/lcg64xsh32.rs b/rand_pcg/tests/lcg64xsh32.rs index 24a06d32..17d87858 100644 --- a/rand_pcg/tests/lcg64xsh32.rs +++ b/rand_pcg/tests/lcg64xsh32.rs @@ -1,6 +1,18 @@ use rand_core::{RngCore, SeedableRng}; use rand_pcg::{Lcg64Xsh32, Pcg32}; +#[test] +fn test_lcg64xsh32_advancing() { + let seed = Default::default(); + let mut rng1 = Lcg64Xsh32::from_seed(seed); + let mut rng2 = Lcg64Xsh32::from_seed(seed); + for _ in 0..20 { + rng1.next_u64(); + } + rng2.advance(20); + assert_eq!(rng1.next_u64(), rng2.next_u64()); +} + #[test] fn test_lcg64xsh32_construction() { // Test that various construction techniques produce a working RNG. diff --git a/rand_pcg/tests/mcg128xsl64.rs b/rand_pcg/tests/mcg128xsl64.rs index 32f363f3..cf145503 100644 --- a/rand_pcg/tests/mcg128xsl64.rs +++ b/rand_pcg/tests/mcg128xsl64.rs @@ -1,6 +1,18 @@ use rand_core::{RngCore, SeedableRng}; use rand_pcg::{Mcg128Xsl64, Pcg64Mcg}; +#[test] +fn test_mcg128xsl64_advancing() { + let seed = Default::default(); + let mut rng1 = Mcg128Xsl64::from_seed(seed); + let mut rng2 = Mcg128Xsl64::from_seed(seed); + for _ in 0..20 { + rng1.next_u64(); + } + rng2.advance(20); + assert_eq!(rng1.next_u64(), rng2.next_u64()); +} + #[test] fn test_mcg128xsl64_construction() { // Test that various construction techniques produce a working RNG.