You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2020/04/16 12:18:32 UTC
[commons-numbers] 17/26: Fraction: use factory constructor in
add/subtract
This is an automated email from the ASF dual-hosted git repository.
aherbert pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
commit 5192e10a101ebf7d91706b7ce1b5d4321d664a18
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Tue Apr 14 22:26:10 2020 +0100
Fraction: use factory constructor in add/subtract
These can create zero if the denominator is 1.
Added a case to the common test cases to check the canonical zero (0 /
1) is returned.
---
.../main/java/org/apache/commons/numbers/fraction/BigFraction.java | 6 ++----
.../src/main/java/org/apache/commons/numbers/fraction/Fraction.java | 6 ++----
.../java/org/apache/commons/numbers/fraction/CommonTestCases.java | 2 ++
3 files changed, 6 insertions(+), 8 deletions(-)
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
index 6e1ea48..8e0a8cb 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java
@@ -682,8 +682,7 @@ public final class BigFraction
return of(value);
}
- // Direct constructor: cannot add an integer to a fraction to produce zero
- return new BigFraction(numerator.add(denominator.multiply(value)), denominator);
+ return of(numerator.add(denominator.multiply(value)), denominator);
}
/**
@@ -757,8 +756,7 @@ public final class BigFraction
return of(value.negate());
}
- // Direct constructor: cannot subtract an integer from a fraction to produce zero
- return new BigFraction(numerator.subtract(denominator.multiply(value)), denominator);
+ return of(numerator.subtract(denominator.multiply(value)), denominator);
}
/**
diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
index 6702950..ce6954b 100644
--- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
+++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
@@ -481,8 +481,7 @@ public final class Fraction
* cannot be represented in an {@code int}.
*/
public Fraction add(final int value) {
- // Direct constructor: cannot add an integer to a fraction to produce zero
- return new Fraction(numerator + value * denominator, denominator);
+ return of(numerator + value * denominator, denominator);
}
/**
@@ -509,8 +508,7 @@ public final class Fraction
* cannot be represented in an {@code int}.
*/
public Fraction subtract(final int value) {
- // Direct constructor: cannot subtract an integer from a fraction to produce zero
- return new Fraction(numerator - value * denominator, denominator);
+ return of(numerator - value * denominator, denominator);
}
/**
diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/CommonTestCases.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/CommonTestCases.java
index 5f7c9e7..c582de5 100644
--- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/CommonTestCases.java
+++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/CommonTestCases.java
@@ -322,6 +322,7 @@ final class CommonTestCases {
testCases.add(new BinaryIntOperatorTestCase(-1, 3, 0, -1, 3));
testCases.add(new BinaryIntOperatorTestCase(1, 3, 1, 4, 3));
testCases.add(new BinaryIntOperatorTestCase(1, 3, -1, -2, 3));
+ testCases.add(new BinaryIntOperatorTestCase(2, -1, 2, 0, 1));
testCases.add(new BinaryIntOperatorTestCase(Integer.MAX_VALUE - 1, 1, 1, Integer.MAX_VALUE, 1));
return testCases;
@@ -474,6 +475,7 @@ final class CommonTestCases {
testCases.add(new BinaryIntOperatorTestCase(0, 1, 3, -3, 1));
testCases.add(new BinaryIntOperatorTestCase(2, 3, 3, -7, 3));
testCases.add(new BinaryIntOperatorTestCase(2, 3, 0, 2, 3));
+ testCases.add(new BinaryIntOperatorTestCase(2, -1, -2, 0, 1));
return testCases;
}