From 8593b4c46c500b4f03c4e4f64ff635932ac5e792 Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Wed, 7 Oct 2020 22:59:44 -0500 Subject: [PATCH] tests ~ (sub-crate/factor) add tests for known prior factorization failures --- src/uu/factor/src/factor.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/uu/factor/src/factor.rs b/src/uu/factor/src/factor.rs index ef34af030..4f625441c 100644 --- a/src/uu/factor/src/factor.rs +++ b/src/uu/factor/src/factor.rs @@ -224,6 +224,19 @@ mod tests { use super::{factor, Factors}; use quickcheck::quickcheck; + #[test] + fn factor_correctly_recombines_prior_test_failures() { + let prior_failures = [ + // * integers with duplicate factors (ie, N.pow(M)) + 4566769_u64, // == 2137.pow(2) + 2044854919485649_u64, + 18446739546814299361_u64, + 18446738440860217487_u64, + 18446736729316206481_u64, + ]; + assert!(prior_failures.iter().all(|i| factor(*i).product() == *i)); + } + #[test] fn factor_recombines_small() { assert!((1..10_000) @@ -231,6 +244,15 @@ mod tests { .all(|i| factor(i).product() == i)); } + #[test] + fn factor_recombines_small_squares() { + // factor(18446736729316206481) == 4294966441 ** 2 ; causes debug_assert fault for repeated decomposition factor in add() + // ToDO: explain/combine with factor_18446736729316206481 and factor_18446739546814299361 tests + assert!((1..10_000) + .map(|i| (2 * i + 1) * (2 * i + 1)) + .all(|i| factor(i).product() == i)); + } + #[test] fn factor_recombines_overflowing() { assert!((0..250)