mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
tests/factor ~ update RNG usage and variable reports to ease debugging
This commit is contained in:
parent
3bb3080170
commit
2615abe9cc
2 changed files with 18 additions and 6 deletions
|
@ -331,7 +331,7 @@ pin_winapi-util = { version="0.1.2, < 0.1.3", package="winapi-util" } ## winapi-
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
filetime = "0.2"
|
filetime = "0.2"
|
||||||
libc = "0.2"
|
libc = "0.2"
|
||||||
rand = "0.6"
|
rand = "0.7"
|
||||||
regex = "1.0"
|
regex = "1.0"
|
||||||
tempfile = "3.1"
|
tempfile = "3.1"
|
||||||
time = "0.1"
|
time = "0.1"
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
// that was distributed with this source code.
|
// that was distributed with this source code.
|
||||||
|
|
||||||
use crate::common::util::*;
|
use crate::common::util::*;
|
||||||
|
use std::time::SystemTime;
|
||||||
|
|
||||||
#[path = "../../src/uu/factor/sieve.rs"]
|
#[path = "../../src/uu/factor/sieve.rs"]
|
||||||
mod sieve;
|
mod sieve;
|
||||||
|
@ -13,7 +14,7 @@ use self::sieve::Sieve;
|
||||||
|
|
||||||
extern crate rand;
|
extern crate rand;
|
||||||
use self::rand::distributions::{Distribution, Uniform};
|
use self::rand::distributions::{Distribution, Uniform};
|
||||||
use self::rand::{rngs::SmallRng, FromEntropy, Rng};
|
use self::rand::{rngs::SmallRng, Rng, SeedableRng};
|
||||||
|
|
||||||
const NUM_PRIMES: usize = 10000;
|
const NUM_PRIMES: usize = 10000;
|
||||||
const LOG_PRIMES: f64 = 14.0; // ceil(log2(NUM_PRIMES))
|
const LOG_PRIMES: f64 = 14.0; // ceil(log2(NUM_PRIMES))
|
||||||
|
@ -24,8 +25,13 @@ const NUM_TESTS: usize = 100;
|
||||||
fn test_random() {
|
fn test_random() {
|
||||||
let primes = Sieve::primes().take(NUM_PRIMES).collect::<Vec<u64>>();
|
let primes = Sieve::primes().take(NUM_PRIMES).collect::<Vec<u64>>();
|
||||||
|
|
||||||
let mut rng = SmallRng::from_entropy();
|
let rng_seed = SystemTime::now()
|
||||||
println!("(seed) rng={:?}", rng);
|
.duration_since(SystemTime::UNIX_EPOCH)
|
||||||
|
.unwrap()
|
||||||
|
.as_secs();
|
||||||
|
println!("rng_seed={:?}", rng_seed);
|
||||||
|
|
||||||
|
let mut rng = SmallRng::seed_from_u64(rng_seed);
|
||||||
let mut rand_gt = move |min: u64| {
|
let mut rand_gt = move |min: u64| {
|
||||||
let mut product = 1u64;
|
let mut product = 1u64;
|
||||||
let mut factors = Vec::new();
|
let mut factors = Vec::new();
|
||||||
|
@ -73,8 +79,12 @@ fn test_random() {
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_random_big() {
|
fn test_random_big() {
|
||||||
let mut rng = SmallRng::from_entropy();
|
let rng_seed = SystemTime::now()
|
||||||
println!("(seed) rng={:?}", rng);
|
.duration_since(SystemTime::UNIX_EPOCH)
|
||||||
|
.unwrap()
|
||||||
|
.as_secs();
|
||||||
|
println!("rng_seed={:?}", rng_seed);
|
||||||
|
let mut rng = SmallRng::seed_from_u64(rng_seed);
|
||||||
let bitrange_1 = Uniform::new(14usize, 51);
|
let bitrange_1 = Uniform::new(14usize, 51);
|
||||||
let mut rand_64 = move || {
|
let mut rand_64 = move || {
|
||||||
// first, choose a random number of bits for the first factor
|
// first, choose a random number of bits for the first factor
|
||||||
|
@ -161,6 +171,8 @@ fn test_big_primes() {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn run(instring: &[u8], outstring: &[u8]) {
|
fn run(instring: &[u8], outstring: &[u8]) {
|
||||||
|
println!("STDIN='{}'", String::from_utf8_lossy(instring));
|
||||||
|
println!("STDOUT(expected)='{}'", String::from_utf8_lossy(outstring));
|
||||||
// now run factor
|
// now run factor
|
||||||
new_ucmd!()
|
new_ucmd!()
|
||||||
.pipe_in(instring)
|
.pipe_in(instring)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue