Skip to content

Commit 0137144

Browse files
committed
---
yaml --- r: 95283 b: refs/heads/dist-snap c: 6f4ec72 h: refs/heads/master i: 95281: adc05ed 95279: 724c9cc v: v3
1 parent afeaf6a commit 0137144

File tree

4 files changed

+83
-8
lines changed

4 files changed

+83
-8
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ refs/heads/try: c274a6888410ce3e357e014568b43310ed787d36
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c
9-
refs/heads/dist-snap: 29e3b33a0954f2494278d74344792f4b84a44120
9+
refs/heads/dist-snap: 6f4ec72362c2cf223b85d4fae9a1592a02e80317
1010
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596
1111
refs/tags/release-0.3: b5f0d0f648d9a6153664837026ba1be43d3e2503
1212
refs/heads/try3: 9387340aab40a73e8424c48fd42f0c521a4875c0

branches/dist-snap/src/libstd/rand/isaac.rs

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -408,33 +408,58 @@ mod test {
408408
use vec;
409409

410410
#[test]
411-
fn test_rng_seeded() {
411+
fn test_rng_32_rand_seeded() {
412412
let s = unsafe {seed::<u32>(256)};
413413
let mut ra: IsaacRng = SeedableRng::from_seed(s.as_slice());
414414
let mut rb: IsaacRng = SeedableRng::from_seed(s.as_slice());
415415
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
416-
416+
}
417+
#[test]
418+
fn test_rng_64_rand_seeded() {
417419
let s = unsafe {seed::<u64>(256)};
418420
let mut ra: Isaac64Rng = SeedableRng::from_seed(s.as_slice());
419421
let mut rb: Isaac64Rng = SeedableRng::from_seed(s.as_slice());
420422
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
421423
}
422424

423425
#[test]
424-
fn test_rng_seeded_custom_seed() {
425-
// much shorter than generated seeds which are 1024 & 2048
426-
// bytes resp.
426+
fn test_rng_32_seeded() {
427427
let seed = &[2, 32, 4, 32, 51];
428428
let mut ra: IsaacRng = SeedableRng::from_seed(seed);
429429
let mut rb: IsaacRng = SeedableRng::from_seed(seed);
430430
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
431-
431+
}
432+
#[test]
433+
fn test_rng_64_seeded() {
432434
let seed = &[2, 32, 4, 32, 51];
433435
let mut ra: Isaac64Rng = SeedableRng::from_seed(seed);
434436
let mut rb: Isaac64Rng = SeedableRng::from_seed(seed);
435437
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
436438
}
437439

440+
#[test]
441+
fn test_rng_32_reseed() {
442+
let s = unsafe {seed::<u32>(256)};
443+
let mut r: IsaacRng = SeedableRng::from_seed(s.as_slice());
444+
let string1 = r.gen_ascii_str(100);
445+
446+
r.reseed(s);
447+
448+
let string2 = r.gen_ascii_str(100);
449+
assert_eq!(string1, string2);
450+
}
451+
#[test]
452+
fn test_rng_64_reseed() {
453+
let s = unsafe {seed::<u64>(256)};
454+
let mut r: Isaac64Rng = SeedableRng::from_seed(s.as_slice());
455+
let string1 = r.gen_ascii_str(100);
456+
457+
r.reseed(s);
458+
459+
let string2 = r.gen_ascii_str(100);
460+
assert_eq!(string1, string2);
461+
}
462+
438463
#[test]
439464
fn test_rng_32_true_values() {
440465
let seed = &[2, 32, 4, 32, 51];

branches/dist-snap/src/libstd/rand/mod.rs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1141,6 +1141,26 @@ mod test {
11411141
}));
11421142
}
11431143

1144+
#[test]
1145+
fn test_std_rng_seeded() {
1146+
let s = unsafe {seed::<uint>(256)};
1147+
let mut ra: StdRng = SeedableRng::from_seed(s.as_slice());
1148+
let mut rb: StdRng = SeedableRng::from_seed(s.as_slice());
1149+
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
1150+
}
1151+
1152+
#[test]
1153+
fn test_std_rng_reseed() {
1154+
let s = unsafe {seed::<uint>(256)};
1155+
let mut r: StdRng = SeedableRng::from_seed(s.as_slice());
1156+
let string1 = r.gen_ascii_str(100);
1157+
1158+
r.reseed(s);
1159+
1160+
let string2 = r.gen_ascii_str(100);
1161+
assert_eq!(string1, string2);
1162+
}
1163+
11441164
#[test]
11451165
fn test_seed_task_rng() {
11461166
seed_task_rng([1]);

branches/dist-snap/src/libstd/rand/reseeding.rs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,14 @@ impl<R: Rng + Default> Reseeder<R> for ReseedWithDefault {
108108
*rng = Default::default();
109109
}
110110
}
111+
impl Default for ReseedWithDefault {
112+
fn default() -> ReseedWithDefault { ReseedWithDefault }
113+
}
111114

112115
#[cfg(test)]
113116
mod test {
114117
use super::*;
115-
use rand::Rng;
118+
use rand::{SeedableRng, Rng};
116119
use default::Default;
117120
use iter::range;
118121
use option::{None, Some};
@@ -133,6 +136,15 @@ mod test {
133136
Counter { i: 0 }
134137
}
135138
}
139+
impl SeedableRng<u32> for Counter {
140+
fn reseed(&mut self, seed: u32) {
141+
self.i = seed;
142+
}
143+
fn from_seed(seed: u32) -> Counter {
144+
Counter { i: seed }
145+
}
146+
}
147+
type MyRng = ReseedingRng<Counter, ReseedWithDefault>;
136148

137149
#[test]
138150
fn test_reseeding() {
@@ -144,4 +156,22 @@ mod test {
144156
i += 1;
145157
}
146158
}
159+
160+
#[test]
161+
fn test_rng_seeded() {
162+
let mut ra: MyRng = SeedableRng::from_seed(2);
163+
let mut rb: MyRng = SeedableRng::from_seed(2);
164+
assert_eq!(ra.gen_ascii_str(100u), rb.gen_ascii_str(100u));
165+
}
166+
167+
#[test]
168+
fn test_rng_reseed() {
169+
let mut r: MyRng = SeedableRng::from_seed(3);
170+
let string1 = r.gen_ascii_str(100);
171+
172+
r.reseed(3);
173+
174+
let string2 = r.gen_ascii_str(100);
175+
assert_eq!(string1, string2);
176+
}
147177
}

0 commit comments

Comments
 (0)