@@ -182,57 +182,24 @@ impl<R: RngCore + SeedableRng, Rsdr: RngCore> RngCore for ReseedingRng<R, Rsdr>
182
182
183
183
#[ cfg( test) ]
184
184
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 ;
227
188
228
189
#[ test]
229
190
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) ;
236
203
}
237
204
}
238
205
}
0 commit comments