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 27a4aa18af2f5c27e82a2e93a8f67d4ea35f5162 Author: Schamschi <[email protected]> AuthorDate: Thu Jun 20 14:51:22 2019 +0200 NUMBERS-118: Extract common negate test cases --- .../commons/numbers/fraction/BigFractionTest.java | 23 ++++------------ .../commons/numbers/fraction/CommonTestCases.java | 32 ++++++++++++++++++++++ .../commons/numbers/fraction/FractionTest.java | 19 ++----------- 3 files changed, 40 insertions(+), 34 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 857a385..1e17656 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 @@ -300,24 +300,11 @@ public class BigFractionTest { @Test public void testNegate() { - BigFraction f = null; - - f = BigFraction.of(50, 75); - f = f.negate(); - Assertions.assertEquals(-2, f.getNumeratorAsInt()); - Assertions.assertEquals(3, f.getDenominatorAsInt()); - - f = BigFraction.of(-50, 75); - f = f.negate(); - Assertions.assertEquals(2, f.getNumeratorAsInt()); - Assertions.assertEquals(3, f.getDenominatorAsInt()); - - // large values - f = BigFraction.of(Integer.MAX_VALUE - 1, Integer.MAX_VALUE); - f = f.negate(); - Assertions.assertEquals(Integer.MIN_VALUE + 2, f.getNumeratorAsInt()); - Assertions.assertEquals(Integer.MAX_VALUE, f.getDenominatorAsInt()); - + for (CommonTestCases.UnaryOperatorTestCase testCase : CommonTestCases.negateTestCases()) { + BigFraction f = BigFraction.of(testCase.operandNumerator, testCase.operandDenominator); + f = f.negate(); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f); + } } @Test 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 82cb1e2..ad6e917 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 @@ -31,11 +31,17 @@ public class CommonTestCases { */ private static final List<UnaryOperatorTestCase> reciprocalTestCasesList; + /** + * See {@link #negateTestCases()} + */ + private static final List<UnaryOperatorTestCase> negateTestCasesList; + static { numDenConstructorTestCasesList = collectNumDenConstructorTestCases(); doubleConstructorTestCasesList = collectDoubleConstructorTestCases(); absTestCasesList = collectAbsTestCases(); reciprocalTestCasesList = collectReciprocalTestCases(); + negateTestCasesList = collectNegateTestCases(); } /** @@ -148,6 +154,21 @@ public class CommonTestCases { } /** + * Defines test cases as described in {@link #negateTestCases()} and collects + * them into a {@code List}. + * @return a list of test cases as described above + */ + private static List<UnaryOperatorTestCase> collectNegateTestCases() { + List<UnaryOperatorTestCase> testCases = new ArrayList<>(); + + testCases.add(new UnaryOperatorTestCase(50, 75, -2, 3)); + testCases.add(new UnaryOperatorTestCase(-50, 75, 2, 3)); + testCases.add(new UnaryOperatorTestCase(Integer.MAX_VALUE - 1, Integer.MAX_VALUE, Integer.MIN_VALUE + 2, Integer.MAX_VALUE)); + + 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. @@ -190,6 +211,17 @@ public class CommonTestCases { } /** + * Provides a list of test cases where the additive inverse of a fraction created from a specified + * numerator and denominator, both in the {@code int} range, should be + * calculated, and the expected + * numerator and denominator of the resulting fraction are also in the {@code int} range. + * @return a list of test cases as described above + */ + public static List<UnaryOperatorTestCase> negateTestCases() { + return Collections.unmodifiableList(negateTestCasesList); + } + + /** * 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 543a06e..521741b 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 @@ -226,23 +226,10 @@ public class FractionTest { @Test public void testNegate() { - { - Fraction f = Fraction.of(50, 75); - f = f.negate(); - assertFraction(-2, 3, f); - } - - { - Fraction f = Fraction.of(-50, 75); - f = f.negate(); - assertFraction(2, 3, f); - } - - // large values - { - Fraction f = Fraction.of(Integer.MAX_VALUE - 1, Integer.MAX_VALUE); + for (CommonTestCases.UnaryOperatorTestCase testCase : CommonTestCases.negateTestCases()) { + Fraction f = Fraction.of(testCase.operandNumerator, testCase.operandDenominator); f = f.negate(); - assertFraction(Integer.MIN_VALUE + 2, Integer.MAX_VALUE, f); + assertFraction(testCase.expectedNumerator, testCase.expectedDenominator, f); } {
