Skip to content

Commit cecb84c

Browse files
Artem Kryvokrysenkodwrensha
Artem Kryvokrysenko
authored andcommitted
capnp: use 'rand' in unit tests
1 parent ba7090f commit cecb84c

File tree

2 files changed

+12
-33
lines changed

2 files changed

+12
-33
lines changed

capnp/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ quickcheck = { version = "0.9", optional = true }
2323

2424
[dev-dependencies]
2525
quickcheck = "0.9"
26+
rand = "0.7"
2627

2728
[features]
2829
default = ["std"]

capnp/src/serialize/no_alloc_slice_segments.rs

+11-33
Original file line numberDiff line numberDiff line change
@@ -328,30 +328,13 @@ mod tests {
328328
};
329329

330330
use alloc::vec::Vec;
331+
use rand::{thread_rng, Rng};
331332

332-
// Perhaps this should be replaced with `rand` crate; I did not took liberty of importing that as
333-
// dependency.
334-
struct Rng(u32);
335-
336-
impl Rng {
337-
fn new() -> Self {
338-
Rng(1234)
339-
}
340-
341-
fn next(&mut self) -> u8 {
342-
self.0 = (self.0 * 75 + 74) % (65537);
343-
344-
(self.0 % 256) as u8
345-
}
346-
347-
fn next_vec(&mut self, len: usize) -> Vec<u8> {
348-
let mut result = vec![];
349-
for _ in 0..len {
350-
result.push(self.next());
351-
}
352-
353-
result
354-
}
333+
fn generate_random_vec(len: usize) -> Vec<u8> {
334+
let mut result = vec![0_u8; len];
335+
let mut rng = thread_rng();
336+
rng.fill(result.as_mut_slice());
337+
result
355338
}
356339

357340
#[cfg(feature = "unaligned")]
@@ -421,8 +404,7 @@ mod tests {
421404

422405
#[test]
423406
fn test_no_alloc_buffer_segments_single_segment_optimization() {
424-
let mut rng = Rng::new();
425-
let segment_0 = rng.next_vec(128);
407+
let segment_0 = generate_random_vec(128);
426408
let output_segments = OutputSegments::SingleSegment([&segment_0]);
427409

428410
let mut msg = vec![];
@@ -445,11 +427,10 @@ mod tests {
445427
#[test]
446428
fn test_no_alloc_buffer_segments_multiple_segments() {
447429
for count in 1..10 {
448-
let mut rng = Rng::new();
449430
let mut segments_vec = vec![];
450431
for i in 0..count {
451432
let vec_len = 8 * 2_usize.pow(i as u32);
452-
segments_vec.push(rng.next_vec(vec_len));
433+
segments_vec.push(generate_random_vec(vec_len));
453434
}
454435
let segments: Vec<_> = segments_vec.iter().map(|s| s.as_slice()).collect();
455436

@@ -513,11 +494,10 @@ mod tests {
513494

514495
#[test]
515496
fn test_no_alloc_buffer_segments_message_truncated() {
516-
let mut rng = Rng::new();
517497
let mut segments_vec = vec![];
518498
for i in 0..5 {
519499
let vec_len = 8 * 2_usize.pow(i as u32);
520-
segments_vec.push(rng.next_vec(vec_len));
500+
segments_vec.push(generate_random_vec(vec_len));
521501
}
522502
let segments: Vec<_> = segments_vec.iter().map(|s| s.as_slice()).collect();
523503

@@ -536,10 +516,9 @@ mod tests {
536516

537517
#[test]
538518
fn test_no_alloc_buffer_segments_message_options_limit() {
539-
let mut rng = Rng::new();
540519
let mut segments_vec = vec![];
541520
for _ in 0..10 {
542-
segments_vec.push(rng.next_vec(128));
521+
segments_vec.push(generate_random_vec(128));
543522
}
544523
let segments: Vec<_> = segments_vec.iter().map(|s| s.as_slice()).collect();
545524

@@ -565,8 +544,7 @@ mod tests {
565544

566545
#[test]
567546
fn test_no_alloc_buffer_segments_bad_alignment() {
568-
let mut rng = Rng::new();
569-
let segment_0 = rng.next_vec(128);
547+
let segment_0 = generate_random_vec(128);
570548
let output_segments = OutputSegments::SingleSegment([&segment_0]);
571549

572550
let mut msg = vec![];

0 commit comments

Comments
 (0)