@@ -492,6 +492,8 @@ where
492492
493493#[ cfg( test) ]
494494mod test {
495+ use rand:: SeedableRng ;
496+
495497 use super :: Chain ;
496498
497499 #[ test]
@@ -522,6 +524,27 @@ mod test {
522524 assert ! ( [ vec![ 3 , 5 , 10 ] , vec![ 3 , 5 , 12 ] , vec![ 5 , 10 ] , vec![ 5 , 12 ] ] . contains( & v) ) ;
523525 }
524526
527+ #[ test]
528+ fn generate_with_seed ( ) {
529+ let mut chain = Chain :: new ( ) ;
530+ chain. feed ( vec ! [ 3u8 , 5 , 10 ] ) . feed ( vec ! [ 5 , 12 ] ) ;
531+ let v = chain. generate_with_seed ( 3 ) ;
532+ assert ! ( v == vec![ 3 , 5 , 10 ] ) ;
533+ let v = chain. generate_with_seed ( 1 ) ;
534+ assert ! ( v == vec![ 5 , 10 ] ) ;
535+ }
536+
537+ #[ test]
538+ fn generate_with_rng ( ) {
539+ let mut rng = rand:: rngs:: StdRng :: seed_from_u64 ( 3 ) ;
540+ let mut chain = Chain :: new ( ) ;
541+ chain. feed ( vec ! [ 3u8 , 5 , 10 ] ) . feed ( vec ! [ 5 , 12 ] ) ;
542+ let v = chain. generate_with_rng ( & mut rng) ;
543+ assert ! ( v == vec![ 3 , 5 , 10 ] ) ;
544+ let v = chain. generate_with_rng ( & mut rng) ;
545+ assert ! ( v == vec![ 3 , 5 , 12 ] ) ;
546+ }
547+
525548 #[ test]
526549 fn generate_for_higher_order ( ) {
527550 let mut chain = Chain :: of_order ( 2 ) ;
@@ -544,6 +567,27 @@ mod test {
544567 assert ! ( [ vec![ 5 , 10 ] , vec![ 5 , 12 ] ] . contains( & v) ) ;
545568 }
546569
570+ #[ test]
571+ fn generate_from_token_with_seed ( ) {
572+ let mut chain = Chain :: new ( ) ;
573+ chain. feed ( vec ! [ 3u8 , 5 , 10 , 13 ] ) . feed ( vec ! [ 5 , 12 , 10 ] ) ;
574+ let v = chain. generate_from_token_with_seed ( 5 , 3 ) ;
575+ assert ! ( v == vec![ 5 , 10 , 13 ] ) ;
576+ let v = chain. generate_from_token_with_seed ( 5 , 1 ) ;
577+ assert ! ( v == vec![ 5 , 12 , 10 , 13 ] ) ;
578+ }
579+
580+ #[ test]
581+ fn generate_from_token_with_rng ( ) {
582+ let mut rng = rand:: rngs:: StdRng :: seed_from_u64 ( 3 ) ;
583+ let mut chain = Chain :: new ( ) ;
584+ chain. feed ( vec ! [ 3u8 , 5 , 10 , 13 ] ) . feed ( vec ! [ 5 , 12 , 10 ] ) ;
585+ let v = chain. generate_from_token_with_rng ( 5 , & mut rng) ;
586+ assert ! ( v == vec![ 5 , 10 , 13 ] ) ;
587+ let v = chain. generate_from_token_with_rng ( 5 , & mut rng) ;
588+ assert ! ( v == vec![ 5 , 10 ] ) ;
589+ }
590+
547591 #[ test]
548592 fn generate_from_unfound_token ( ) {
549593 let mut chain = Chain :: new ( ) ;
0 commit comments