This is an automated email from the ASF dual-hosted git repository. garydgregory pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-lang.git
commit 9756d0a84c7b285d734159d5915c0f0b11d7652f Author: Gary Gregory <[email protected]> AuthorDate: Wed Sep 9 02:44:03 2026 -0400 Fraction.add and subtract return the reduced form when an operand is zero (#1787). - Test both operands being unreduced zeros --- src/changes/changes.xml | 1 + src/test/java/org/apache/commons/lang3/math/FractionTest.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 9962cce99..a6770692a 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -282,6 +282,7 @@ java.lang.NullPointerException: Cannot invoke <action type="fix" dev="ggregory" due-to="Gary Gregory">FastDateFormat static caches grow without bound per distinct pattern/zone/locale, untrusted patterns pin several KB each, forever (f033).</action> <action type="fix" dev="ggregory" due-to="Jeff Lenamon, Gary Gregory">Fix Fraction.add and subtract for operands not in lowest terms (#1784).</action> <action type="fix" dev="ggregory" due-to="Jeff Lenamon, Gary Gregory">Fix MethodUtils.invokeMethod on instances of non-public classes (#1783).</action> + <action type="fix" dev="ggregory" due-to="Jeff Lenamon, Gary Gregory">Fraction.add and subtract return the reduced form when an operand is zero (#1787).</action> <!-- ADD --> <action type="add" dev="ggregory" due-to="Gary Gregory">Add JavaVersion.JAVA_27.</action> <action type="add" dev="ggregory" due-to="Gary Gregory">Add SystemUtils.IS_JAVA_27.</action> diff --git a/src/test/java/org/apache/commons/lang3/math/FractionTest.java b/src/test/java/org/apache/commons/lang3/math/FractionTest.java index a3d4c9ed2..6060a926b 100644 --- a/src/test/java/org/apache/commons/lang3/math/FractionTest.java +++ b/src/test/java/org/apache/commons/lang3/math/FractionTest.java @@ -144,6 +144,10 @@ void testAddSubtractZeroOperand() { // Integer.MIN_VALUE/1 is in lowest terms and still cannot be negated. assertThrows(ArithmeticException.class, () -> Fraction.ZERO.subtract(Fraction.getFraction(Integer.MIN_VALUE, 1))); + + // both operands being unreduced zeros + assertEquals(Fraction.ZERO, Fraction.getFraction(0, 2).add(Fraction.getFraction(0, 3))); + assertEquals(Fraction.ZERO, Fraction.getFraction(0, 2).subtract(Fraction.getFraction(0, 3))); } @Test
