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 2e41297bccccf685e84e56783afeab11e59a114b Author: Schamschi <heinrich.bo...@gmx.at> AuthorDate: Fri Jun 21 00:43:14 2019 +0200 NUMBERS-118: Extract common multiply-by-fraction test cases --- .../commons/numbers/fraction/BigFractionTest.java | 19 ++++--------- .../commons/numbers/fraction/CommonTestCases.java | 33 ++++++++++++++++++++++ .../commons/numbers/fraction/FractionTest.java | 18 ++++-------- 3 files changed, 44 insertions(+), 26 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 a16d35d..26fc8a1 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 @@ -396,21 +396,14 @@ public class BigFractionTest { @Test public void testMultiply() { - BigFraction a = BigFraction.of(1, 2); - BigFraction b = BigFraction.of(2, 3); - - assertFraction(1, 4, a.multiply(a)); - assertFraction(1, 3, a.multiply(b)); - assertFraction(1, 3, b.multiply(a)); - assertFraction(4, 9, b.multiply(b)); + for (CommonTestCases.BinaryOperatorTestCase testCase : CommonTestCases.multiplyByFractionTestCases()) { + BigFraction f1 = BigFraction.of(testCase.firstOperandNumerator, testCase.firstOperandDenominator); + BigFraction f2 = BigFraction.of(testCase.secondOperandNumerator, testCase.secondOperandDenominator); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f1.multiply(f2)); + } - BigFraction f1 = BigFraction.of(Integer.MAX_VALUE, 1); BigFraction f2 = BigFraction.of(Integer.MIN_VALUE, Integer.MAX_VALUE); - BigFraction f = f1.multiply(f2); - Assertions.assertEquals(Integer.MIN_VALUE, f.getNumeratorAsInt()); - Assertions.assertEquals(1, f.getDenominatorAsInt()); - - f = f2.multiply(Integer.MAX_VALUE); + BigFraction f = f2.multiply(Integer.MAX_VALUE); Assertions.assertEquals(Integer.MIN_VALUE, f.getNumeratorAsInt()); Assertions.assertEquals(1, f.getDenominatorAsInt()); 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 c91f6e3..be19fdb 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 @@ -46,6 +46,11 @@ class CommonTestCases { */ private static final List<BinaryOperatorTestCase> divideByFractionTestCasesList; + /** + * See {@link #multiplyByFractionTestCases()} + */ + private static final List<BinaryOperatorTestCase> multiplyByFractionTestCasesList; + static { numDenConstructorTestCasesList = collectNumDenConstructorTestCases(); doubleConstructorTestCasesList = collectDoubleConstructorTestCases(); @@ -54,6 +59,7 @@ class CommonTestCases { negateTestCasesList = collectNegateTestCases(); addFractionTestCasesList = collectAddFractionTestCases(); divideByFractionTestCasesList = collectDivideByFractionTestCases(); + multiplyByFractionTestCasesList = collectMultiplyByFractionTestCases(); } /** @@ -247,6 +253,22 @@ class CommonTestCases { return testCases; } + private static List<BinaryOperatorTestCase> collectMultiplyByFractionTestCases() { + List<BinaryOperatorTestCase> testCases = new ArrayList<>(); + + testCases.add(new BinaryOperatorTestCase(1, 2, 1, 2, 1, 4)); + testCases.add(new BinaryOperatorTestCase(1, 2, 2, 3, 1, 3)); + testCases.add(new BinaryOperatorTestCase(2, 3, 1, 2, 1, 3)); + testCases.add(new BinaryOperatorTestCase(2, 3, 2, 3, 4, 9)); + + testCases.add(new BinaryOperatorTestCase( + Integer.MAX_VALUE, 1, + Integer.MIN_VALUE, 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 @@ -322,6 +344,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 multiplied 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> multiplyByFractionTestCases() { + return Collections.unmodifiableList(multiplyByFractionTestCasesList); + } + + /** * 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 4d71a39..977e702 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 @@ -353,22 +353,14 @@ public class FractionTest { @Test public void testMultiply() { - { - Fraction a = Fraction.of(1, 2); - Fraction b = Fraction.of(2, 3); - - assertFraction(1, 4, a.multiply(a)); - assertFraction(1, 3, a.multiply(b)); - assertFraction(1, 3, b.multiply(a)); - assertFraction(4, 9, b.multiply(b)); + for (CommonTestCases.BinaryOperatorTestCase testCase : CommonTestCases.multiplyByFractionTestCases()) { + Fraction f1 = Fraction.of(testCase.firstOperandNumerator, testCase.firstOperandDenominator); + Fraction f2 = Fraction.of(testCase.secondOperandNumerator, testCase.secondOperandDenominator); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f1.multiply(f2)); } { - Fraction f1 = Fraction.of(Integer.MAX_VALUE, 1); - Fraction f2 = Fraction.of(Integer.MIN_VALUE, Integer.MAX_VALUE); - final Fraction f = f1.multiply(f2); - assertFraction(Integer.MIN_VALUE, 1, f); - + final Fraction f = Fraction.of(Integer.MIN_VALUE, 1); Assertions.assertThrows(NullPointerException.class, () -> f.multiply(null) );