From c11cebc4d3ddc1ac2bf8ed3645f90faa8047e234 Mon Sep 17 00:00:00 2001 From: nicoo Date: Wed, 19 Aug 2020 10:21:32 +0200 Subject: [PATCH 1/3] factor::numeric::gcd: Exclude the 0 case from test `divisor` --- src/uu/factor/src/numeric/gcd.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/uu/factor/src/numeric/gcd.rs b/src/uu/factor/src/numeric/gcd.rs index 6273e788c..ee5b165f3 100644 --- a/src/uu/factor/src/numeric/gcd.rs +++ b/src/uu/factor/src/numeric/gcd.rs @@ -75,8 +75,7 @@ mod tests { fn divisor(a: u64, b: u64) -> bool { // Test that gcd(a, b) divides a and b let g = gcd(a, b); - if g == 0 { return a == 0 && b == 0; } - a % g == 0 && b % g == 0 + (a == 0 && b == 0) || (a % g == 0 && b % g == 0) } fn commutative(a: u64, b: u64) -> bool { From 07eaa7fe5a23e49f55c656a89959be23af779a32 Mon Sep 17 00:00:00 2001 From: nicoo Date: Wed, 19 Aug 2020 10:25:39 +0200 Subject: [PATCH 2/3] factor::numeric::gcd: Add explicit test for the 0 case --- src/uu/factor/src/numeric/gcd.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/uu/factor/src/numeric/gcd.rs b/src/uu/factor/src/numeric/gcd.rs index ee5b165f3..f5b66a937 100644 --- a/src/uu/factor/src/numeric/gcd.rs +++ b/src/uu/factor/src/numeric/gcd.rs @@ -72,6 +72,10 @@ mod tests { gcd(1, a) == 1 } + fn zero(a: u64) -> bool { + gcd(0, a) == a + } + fn divisor(a: u64, b: u64) -> bool { // Test that gcd(a, b) divides a and b let g = gcd(a, b); From c33284f38b9d40bd3d08ffebecb7d452bf8e03f4 Mon Sep 17 00:00:00 2001 From: Roy Ivy III Date: Thu, 3 Sep 2020 14:47:36 -0500 Subject: [PATCH 3/3] factor::numeric::gcd: modify `divisor()` test to return correct true/false results for all possible inputs --- src/uu/factor/src/numeric/gcd.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/uu/factor/src/numeric/gcd.rs b/src/uu/factor/src/numeric/gcd.rs index f5b66a937..01e4a23bd 100644 --- a/src/uu/factor/src/numeric/gcd.rs +++ b/src/uu/factor/src/numeric/gcd.rs @@ -79,7 +79,7 @@ mod tests { fn divisor(a: u64, b: u64) -> bool { // Test that gcd(a, b) divides a and b let g = gcd(a, b); - (a == 0 && b == 0) || (a % g == 0 && b % g == 0) + (g != 0 && a % g == 0 && b % g == 0) || (g == 0 && a == 0 && b == 0) } fn commutative(a: u64, b: u64) -> bool {