Skip to content

Commit a03677c

Browse files
committed
Reseeding test: replace custom RNGs with standard ones
1 parent 6dd358a commit a03677c

File tree

1 file changed

+15
-48
lines changed

1 file changed

+15
-48
lines changed

src/reseeding.rs

Lines changed: 15 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -182,57 +182,24 @@ impl<R: RngCore + SeedableRng, Rsdr: RngCore> RngCore for ReseedingRng<R, Rsdr>
182182

183183
#[cfg(test)]
184184
mod test {
185-
use {impls, le};
186-
use super::{ReseedingRng};
187-
use {SeedableRng, RngCore, Error};
188-
189-
struct Counter {
190-
i: u32
191-
}
192-
193-
impl RngCore for Counter {
194-
fn next_u32(&mut self) -> u32 {
195-
self.i += 1;
196-
// very random
197-
self.i - 1
198-
}
199-
fn next_u64(&mut self) -> u64 {
200-
impls::next_u64_via_u32(self)
201-
}
202-
203-
fn fill_bytes(&mut self, dest: &mut [u8]) {
204-
impls::fill_bytes_via_u64(self, dest)
205-
}
206-
}
207-
impl SeedableRng for Counter {
208-
type Seed = [u8; 4];
209-
fn from_seed(seed: Self::Seed) -> Self {
210-
let mut seed_u32 = [0u32; 1];
211-
le::read_u32_into(&seed, &mut seed_u32);
212-
Counter { i: seed_u32[0] }
213-
}
214-
}
215-
216-
#[derive(Debug, Clone)]
217-
struct ResetCounter;
218-
impl RngCore for ResetCounter {
219-
fn next_u32(&mut self) -> u32 { unimplemented!() }
220-
fn next_u64(&mut self) -> u64 { unimplemented!() }
221-
fn fill_bytes(&mut self, _dest: &mut [u8]) { unimplemented!() }
222-
fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), Error> {
223-
for i in dest.iter_mut() { *i = 0; }
224-
Ok(())
225-
}
226-
}
185+
use {Rng, SeedableRng, StdRng};
186+
use mock::StepRng;
187+
use super::ReseedingRng;
227188

228189
#[test]
229190
fn test_reseeding() {
230-
let mut rs = ReseedingRng::new(Counter {i:0}, 400, ResetCounter);
231-
232-
let mut i = 0;
233-
for _ in 0..1000 {
234-
assert_eq!(rs.next_u32(), i % 100);
235-
i += 1;
191+
let mut zero = StepRng::new(0, 0);
192+
let rng = StdRng::from_rng(&mut zero).unwrap();
193+
let mut reseeding = ReseedingRng::new(rng, 32, zero);
194+
195+
// Currently we only support for arrays up to length 32.
196+
// TODO: cannot generate seq via Rng::gen because it uses different alg
197+
let mut buf = [0u8; 32];
198+
reseeding.fill(&mut buf);
199+
let seq = buf;
200+
for _ in 0..10 {
201+
reseeding.fill(&mut buf);
202+
assert_eq!(buf, seq);
236203
}
237204
}
238205
}

0 commit comments

Comments
 (0)