This is an automated email from the ASF dual-hosted git repository. erans pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-numbers.git
commit 7427fd0639557f25a2d7274597be70882527ffd0 Author: Schamschi <heinrich.bo...@gmx.at> AuthorDate: Thu Jun 20 22:16:16 2019 +0200 NUMBERS-118: Extract common divide-by-fraction test cases --- .../commons/numbers/fraction/BigFractionTest.java | 42 +++++---------- .../commons/numbers/fraction/CommonTestCases.java | 59 ++++++++++++++++++---- .../commons/numbers/fraction/FractionTest.java | 31 ++---------- 3 files changed, 67 insertions(+), 65 deletions(-) diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java index 3245544..a16d35d 100644 --- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java +++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java @@ -314,9 +314,9 @@ public class BigFractionTest { } { - final BigFraction f3 = BigFraction.of(-17 - 2*13*2, 13*13*17*2*2); + final BigFraction f = BigFraction.of(-17 - 2*13*2, 13*13*17*2*2); Assertions.assertThrows(NullPointerException.class, - () -> f3.add((BigFraction) null) + () -> f.add((BigFraction) null) ); } @@ -351,13 +351,11 @@ public class BigFractionTest { @Test public void testDivide() { - BigFraction a = BigFraction.of(1, 2); - BigFraction b = BigFraction.of(2, 3); - - assertFraction(1, 1, a.divide(a)); - assertFraction(3, 4, a.divide(b)); - assertFraction(4, 3, b.divide(a)); - assertFraction(1, 1, b.divide(b)); + for (CommonTestCases.BinaryOperatorTestCase testCase : CommonTestCases.divideByFractionTestCases()) { + BigFraction f1 = BigFraction.of(testCase.firstOperandNumerator, testCase.firstOperandDenominator); + BigFraction f2 = BigFraction.of(testCase.secondOperandNumerator, testCase.secondOperandDenominator); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f1.divide(f2)); + } BigFraction f1 = BigFraction.of(3, 5); BigFraction f2 = BigFraction.ZERO; @@ -372,27 +370,11 @@ public class BigFractionTest { BigFraction f = f1.divide(f2); Assertions.assertSame(BigFraction.ZERO, f); - f1 = BigFraction.of(2, 7); - f2 = BigFraction.ONE; - f = f1.divide(f2); - Assertions.assertEquals(2, f.getNumeratorAsInt()); - Assertions.assertEquals(7, f.getDenominatorAsInt()); - - f1 = BigFraction.of(1, Integer.MAX_VALUE); - f = f1.divide(f1); - Assertions.assertEquals(1, f.getNumeratorAsInt()); - Assertions.assertEquals(1, f.getDenominatorAsInt()); - - f1 = BigFraction.of(Integer.MIN_VALUE, Integer.MAX_VALUE); - f2 = BigFraction.of(1, Integer.MAX_VALUE); - f = f1.divide(f2); - Assertions.assertEquals(Integer.MIN_VALUE, f.getNumeratorAsInt()); - Assertions.assertEquals(1, f.getDenominatorAsInt()); - - try { - f.divide((BigFraction) null); - Assertions.fail("expecting NullPointerException"); - } catch (NullPointerException ex) { + { + final BigFraction f3 = BigFraction.of(Integer.MIN_VALUE, 1); + Assertions.assertThrows(NullPointerException.class, + () -> f3.divide((BigFraction) null) + ); } f1 = BigFraction.of(Integer.MIN_VALUE, Integer.MAX_VALUE); 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 e405b48..c91f6e3 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 @@ -41,6 +41,11 @@ class CommonTestCases { */ private static final List<BinaryOperatorTestCase> addFractionTestCasesList; + /** + * See {@link #divideByFractionTestCases()} + */ + private static final List<BinaryOperatorTestCase> divideByFractionTestCasesList; + static { numDenConstructorTestCasesList = collectNumDenConstructorTestCases(); doubleConstructorTestCasesList = collectDoubleConstructorTestCases(); @@ -48,6 +53,7 @@ class CommonTestCases { reciprocalTestCasesList = collectReciprocalTestCases(); negateTestCasesList = collectNegateTestCases(); addFractionTestCasesList = collectAddFractionTestCases(); + divideByFractionTestCasesList = collectDivideByFractionTestCases(); } /** @@ -182,15 +188,10 @@ class CommonTestCases { private static List<BinaryOperatorTestCase> collectAddFractionTestCases() { List<BinaryOperatorTestCase> testCases = new ArrayList<>(); - { - int[] a = new int[]{1, 2}; - int[] b = new int[]{2, 3}; - - testCases.add(new BinaryOperatorTestCase(a[0], a[1], a[0], a[1], 1, 1)); - testCases.add(new BinaryOperatorTestCase(a[0], a[1], b[0], b[1], 7, 6)); - testCases.add(new BinaryOperatorTestCase(b[0], b[1], a[0], a[1], 7, 6)); - testCases.add(new BinaryOperatorTestCase(b[0], b[1], b[0], b[1], 4, 3)); - } + testCases.add(new BinaryOperatorTestCase(1, 2, 1, 2, 1, 1)); + testCases.add(new BinaryOperatorTestCase(1, 2, 2, 3, 7, 6)); + testCases.add(new BinaryOperatorTestCase(2, 3, 1, 2, 7, 6)); + testCases.add(new BinaryOperatorTestCase(2, 3, 2, 3, 4, 3)); testCases.add(new BinaryOperatorTestCase( -1, 13*13*2*2, @@ -218,6 +219,35 @@ class CommonTestCases { } /** + * Defines test cases as described in {@link #divideByFractionTestCases()} and collects + * them into a {@code List}. + * @return a list of test cases as described above + */ + private static List<BinaryOperatorTestCase> collectDivideByFractionTestCases() { + List<BinaryOperatorTestCase> testCases = new ArrayList<>(); + + testCases.add(new BinaryOperatorTestCase(1, 2, 1, 2, 1, 1)); + testCases.add(new BinaryOperatorTestCase(1, 2, 2, 3, 3, 4)); + testCases.add(new BinaryOperatorTestCase(2, 3, 1, 2, 4, 3)); + testCases.add(new BinaryOperatorTestCase(2, 3, 2, 3, 1, 1)); + + testCases.add(new BinaryOperatorTestCase( + 2, 7, + 1, 1, + 2, 7)); + testCases.add(new BinaryOperatorTestCase( + 1, Integer.MAX_VALUE, + 1, Integer.MAX_VALUE, + 1, 1)); + testCases.add(new BinaryOperatorTestCase( + Integer.MIN_VALUE, Integer.MAX_VALUE, + 1, Integer.MAX_VALUE, + Integer.MIN_VALUE, 1)); + + return testCases; + } + + /** * Provides a list of test cases where a fraction should be created from a specified * numerator and denominator, both in the {@code int} range, and the expected * numerator and denominator of the created fraction are also in the {@code int} range. @@ -281,6 +311,17 @@ class CommonTestCases { } /** + * Provides a list of test cases where a fraction, created from a specified numerator and denominator + * in the {@code int} range, should be divided by another fraction, also created from a specified numerator and denominator + * in the {@code int} range, and the expected numerator and denominator of the resulting fraction + * are in the {@code int} range as well. + * @return a list of test cases as described above + */ + static List<BinaryOperatorTestCase> divideByFractionTestCases() { + return Collections.unmodifiableList(divideByFractionTestCasesList); + } + + /** * Represents a test case where a unary operation should be performed on a specified combination * of numerator and denominator, both in the {@code int} range, and the numerator and * denominator of the expected result are also in the {@code int} range. diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionTest.java index 84f16d6..4d71a39 100644 --- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionTest.java +++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionTest.java @@ -302,14 +302,10 @@ public class FractionTest { @Test public void testDivide() { - { - Fraction a = Fraction.of(1, 2); - Fraction b = Fraction.of(2, 3); - - assertFraction(1, 1, a.divide(a)); - assertFraction(3, 4, a.divide(b)); - assertFraction(4, 3, b.divide(a)); - assertFraction(1, 1, b.divide(b)); + for (CommonTestCases.BinaryOperatorTestCase testCase : CommonTestCases.divideByFractionTestCases()) { + Fraction f1 = Fraction.of(testCase.firstOperandNumerator, testCase.firstOperandDenominator); + Fraction f2 = Fraction.of(testCase.secondOperandNumerator, testCase.secondOperandDenominator); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f1.divide(f2)); } { @@ -328,24 +324,7 @@ public class FractionTest { } { - Fraction f1 = Fraction.of(2, 7); - Fraction f2 = Fraction.ONE; - Fraction f = f1.divide(f2); - assertFraction(2, 7, f); - } - - { - Fraction f1 = Fraction.of(1, Integer.MAX_VALUE); - Fraction f = f1.divide(f1); - assertFraction(1, 1, f); - } - - { - Fraction f1 = Fraction.of(Integer.MIN_VALUE, Integer.MAX_VALUE); - Fraction f2 = Fraction.of(1, Integer.MAX_VALUE); - final Fraction f = f1.divide(f2); - assertFraction(Integer.MIN_VALUE, 1, f); - + final Fraction f = Fraction.of(Integer.MIN_VALUE, 1); Assertions.assertThrows(NullPointerException.class, () -> f.divide(null) );