Repository: commons-numbers Updated Branches: refs/heads/fraction__NUMBERS-6 fbb60fbf9 -> 41e2f65b3
NUMBERS-6: Remove specialized exception from public API. FractionException becomes package private and inherits from java.lang.ArithmeticException. Subclasses of FractionException are eliminated. Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/41e2f65b Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/41e2f65b Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/41e2f65b Branch: refs/heads/fraction__NUMBERS-6 Commit: 41e2f65b34c978f4377b2f043fec28a61402962d Parents: fbb60fb Author: Ray DeCampo <r...@decampo.org> Authored: Tue Jan 31 20:19:35 2017 -0500 Committer: Ray DeCampo <r...@decampo.org> Committed: Tue Jan 31 20:19:35 2017 -0500 ---------------------------------------------------------------------- .../commons/numbers/fraction/BigFraction.java | 21 ++++---- .../commons/numbers/fraction/Fraction.java | 42 +++++++--------- .../fraction/FractionConversionException.java | 49 ------------------ .../numbers/fraction/FractionException.java | 7 ++- .../numbers/fraction/FractionFormat.java | 4 +- .../fraction/FractionOverflowException.java | 47 ----------------- .../fraction/FractionParseException.java | 9 +++- .../fraction/ZeroDenominatorException.java | 53 -------------------- .../numbers/fraction/BigFractionFormatTest.java | 12 ++--- .../numbers/fraction/BigFractionTest.java | 22 ++++---- .../numbers/fraction/FractionFormatTest.java | 16 +++--- .../commons/numbers/fraction/FractionTest.java | 20 ++++---- 12 files changed, 78 insertions(+), 224 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/BigFraction.java ---------------------------------------------------------------------- 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 4ba8e01..a5ab6f7 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 @@ -108,7 +108,7 @@ public class BigFraction checkNotNull(num, "numerator"); checkNotNull(den, "denominator"); if (den.signum() == 0) { - throw new ZeroDenominatorException(); + throw new FractionException(FractionException.ERROR_ZERO_DENOMINATOR); } if (num.signum() == 0) { numerator = BigInteger.ZERO; @@ -214,8 +214,7 @@ public class BigFraction * @see #BigFraction(double) */ public BigFraction(final double value, final double epsilon, - final int maxIterations) - throws FractionConversionException { + final int maxIterations) { this(value, epsilon, Integer.MAX_VALUE, maxIterations); } @@ -254,14 +253,13 @@ public class BigFraction * if the continued fraction failed to converge. */ private BigFraction(final double value, final double epsilon, - final int maxDenominator, int maxIterations) - throws FractionConversionException { + final int maxDenominator, int maxIterations) { long overflow = Integer.MAX_VALUE; double r0 = value; long a0 = (long) Math.floor(r0); if (Math.abs(a0) > overflow) { - throw new FractionConversionException(value, a0, 1l); + throw new FractionException(FractionException.ERROR_CONVERSION_OVERFLOW, value, a0, 1l); } // check for (almost) integer arguments, which should not go @@ -294,7 +292,7 @@ public class BigFraction if (epsilon == 0.0 && Math.abs(q1) < maxDenominator) { break; } - throw new FractionConversionException(value, p2, q2); + throw new FractionException(FractionException.ERROR_CONVERSION_OVERFLOW, value, p2, q2); } final double convergent = (double) p2 / (double) q2; @@ -313,7 +311,7 @@ public class BigFraction } while (!stop); if (n >= maxIterations) { - throw new FractionConversionException(value, maxIterations); + throw new FractionException(FractionException.ERROR_CONVERSION, value, maxIterations); } if (q2 < maxDenominator) { @@ -342,8 +340,7 @@ public class BigFraction * @throws FractionConversionException * if the continued fraction failed to converge. */ - public BigFraction(final double value, final int maxDenominator) - throws FractionConversionException { + public BigFraction(final double value, final int maxDenominator) { this(value, 0, maxDenominator, 100); } @@ -625,7 +622,7 @@ public class BigFraction public BigFraction divide(final BigInteger bg) { checkNotNull(bg, "bg"); if (bg.signum() == 0) { - throw new ZeroDenominatorException(); + throw new FractionException(FractionException.ERROR_ZERO_DENOMINATOR); } if (numerator.signum() == 0) { return ZERO; @@ -674,7 +671,7 @@ public class BigFraction public BigFraction divide(final BigFraction fraction) { checkNotNull(fraction, "fraction"); if (fraction.numerator.signum() == 0) { - throw new ZeroDenominatorException(fraction.denominator, fraction.numerator); + throw new FractionException(FractionException.ERROR_ZERO_DENOMINATOR); } if (numerator.signum() == 0) { return ZERO; http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java ---------------------------------------------------------------------- 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 005e6e6..31abd17 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 @@ -86,10 +86,10 @@ public class Fraction /** * Create a fraction given the double value. * @param value the double value to convert to a fraction. - * @throws FractionConversionException if the continued fraction failed to + * @throws IllegalArgumentException if the continued fraction failed to * converge. */ - public Fraction(double value) throws FractionConversionException { + public Fraction(double value) { this(value, DEFAULT_EPSILON, 100); } @@ -106,11 +106,10 @@ public class Fraction * @param epsilon maximum error allowed. The resulting fraction is within * {@code epsilon} of {@code value}, in absolute terms. * @param maxIterations maximum number of convergents - * @throws FractionConversionException if the continued fraction failed to + * @throws IllegalArgumentException if the continued fraction failed to * converge. */ public Fraction(double value, double epsilon, int maxIterations) - throws FractionConversionException { this(value, epsilon, Integer.MAX_VALUE, maxIterations); } @@ -126,11 +125,10 @@ public class Fraction * </p> * @param value the double value to convert to a fraction. * @param maxDenominator The maximum allowed value for denominator - * @throws FractionConversionException if the continued fraction failed to + * @throws IllegalArgumentException if the continued fraction failed to * converge */ public Fraction(double value, int maxDenominator) - throws FractionConversionException { this(value, 0, maxDenominator, 100); } @@ -163,17 +161,16 @@ public class Fraction * {@code epsilon} of {@code value}, in absolute terms. * @param maxDenominator maximum denominator value allowed. * @param maxIterations maximum number of convergents - * @throws FractionConversionException if the continued fraction failed to + * @throws IllegalArgumentException if the continued fraction failed to * converge. */ private Fraction(double value, double epsilon, int maxDenominator, int maxIterations) - throws FractionConversionException, FractionOverflowException { long overflow = Integer.MAX_VALUE; double r0 = value; long a0 = (long)Math.floor(r0); if (Math.abs(a0) > overflow) { - throw new FractionConversionException(value, a0, 1l); + throw new FractionException(FractionException.ERROR_CONVERSION, value, a0, 1l); } // check for (almost) integer arguments, which should not go to iterations. @@ -206,7 +203,7 @@ public class Fraction if (epsilon == 0.0 && Math.abs(q1) < maxDenominator) { break; } - throw new FractionConversionException(value, p2, q2); + throw new FractionException(FractionException.ERROR_CONVERSION, value, p2, q2); } double convergent = (double)p2 / (double)q2; @@ -223,7 +220,7 @@ public class Fraction } while (!stop); if (n >= maxIterations) { - throw new FractionConversionException(value, maxIterations); + throw new FractionException(FractionException.ERROR_CONVERSION, value, maxIterations); } if (q2 < maxDenominator) { @@ -250,16 +247,17 @@ public class Fraction * reduced to lowest terms. * @param num the numerator. * @param den the denominator. - * @throws FractionException if the denominator is {@code zero} + * @throws ArithmeticException if the denominator is {@code zero} + * or if integer overflow occurs */ public Fraction(int num, int den) { if (den == 0) { - throw new ZeroDenominatorException(num, den); + throw new ArithmeticException("division by zero"); } if (den < 0) { if (num == Integer.MIN_VALUE || den == Integer.MIN_VALUE) { - throw new FractionOverflowException(num, den); + throw new FractionException("overflow in fraction {0}/{1}, cannot negate", num, den); } num = -num; den = -den; @@ -402,7 +400,7 @@ public class Fraction */ public Fraction negate() { if (numerator==Integer.MIN_VALUE) { - throw new FractionOverflowException(numerator, denominator); + throw new FractionException(FractionException.ERROR_NEGATION_OVERFLOW, numerator, denominator); } return new Fraction(-numerator, denominator); } @@ -510,7 +508,7 @@ public class Fraction // result is (t/d2) / (u'/d1)(v'/d2) BigInteger w = t.divide(BigInteger.valueOf(d2)); if (w.bitLength() > 31) { - throw new FractionOverflowException( + throw new FractionException( "overflow, numerator too large after multiply: {0}", w.toString(), ""); } return new Fraction (w.intValue(), @@ -558,10 +556,9 @@ public class Fraction * * @param fraction the fraction to divide by, must not be {@code null} * @return a {@code Fraction} instance with the resulting values - * @throws IllegalArgumentException if the fraction is {@code null} - * @throws FractionException if the fraction to divide by is zero - * @throws ArithmeticException if the resulting numerator or denominator exceeds - * {@code Integer.MAX_VALUE} + * @throws ArithmeticException if the fraction to divide by is zero + * or if the resulting numerator or denominator + * exceeds {@code Integer.MAX_VALUE} */ public Fraction divide(Fraction fraction) { if (fraction == null) { @@ -608,7 +605,7 @@ public class Fraction */ public static Fraction getReducedFraction(int numerator, int denominator) { if (denominator == 0) { - throw new ZeroDenominatorException(numerator, denominator); + throw new FractionException(FractionException.ERROR_ZERO_DENOMINATOR); } if (numerator==0) { return ZERO; // normalize zero. @@ -620,7 +617,7 @@ public class Fraction if (denominator < 0) { if (numerator==Integer.MIN_VALUE || denominator==Integer.MIN_VALUE) { - throw new FractionOverflowException(numerator, denominator); + throw new FractionException("overflow in fraction {0}/{1}, cannot negate", numerator, denominator); } numerator = -numerator; denominator = -denominator; @@ -658,5 +655,4 @@ public class Fraction public FractionField getField() { return FractionField.getInstance(); } - } http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionConversionException.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionConversionException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionConversionException.java deleted file mode 100644 index 9d705aa..0000000 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionConversionException.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.numbers.fraction; - -/** - * Error thrown when a double value cannot be converted to a fraction - * in the allowed number of iterations. - */ -public class FractionConversionException extends FractionException { - - /** Serializable version identifier. */ - private static final long serialVersionUID = 201701181859L; - - /** - * Constructs an exception with specified formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param value double value to convert - * @param maxIterations maximal number of iterations allowed - */ - public FractionConversionException(double value, int maxIterations) { - super("Unable to convert {0} to fraction after {1} iterations", value, maxIterations); - } - - /** - * Constructs an exception with specified formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param value double value to convert - * @param p current numerator - * @param q current denominator - */ - public FractionConversionException(double value, long p, long q) { - super("Overflow trying to convert {0} to fraction ({1}/{2})", value, p, q); - } -} http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java index d0a3788..d5fb6df 100644 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java +++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionException.java @@ -19,11 +19,16 @@ package org.apache.commons.numbers.fraction; /** * Base class for all exceptions thrown in the module. */ -public class FractionException extends ArithmeticException { +class FractionException extends ArithmeticException { /** Serializable version identifier. */ private static final long serialVersionUID = 201701191744L; + public static final String ERROR_CONVERSION_OVERFLOW = "Overflow trying to convert {0} to fraction ({1}/{2})"; + public static final String ERROR_CONVERSION = "Unable to convert {0} to fraction after {1} iterations"; + public static final String ERROR_NEGATION_OVERFLOW = "overflow in fraction {0}/{1}, cannot negate"; + public static final String ERROR_ZERO_DENOMINATOR = "denominator must be different from 0"; + protected Object[] formatArguments; public FractionException() { http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java index be63a7b..be6c8a2 100644 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java +++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionFormat.java @@ -163,8 +163,8 @@ public class FractionFormat extends AbstractFormat { */ @Override public StringBuffer format(final Object obj, - final StringBuffer toAppendTo, final FieldPosition pos) - throws FractionConversionException, IllegalArgumentException { + final StringBuffer toAppendTo, + final FieldPosition pos) { StringBuffer ret = null; if (obj instanceof Fraction) { http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionOverflowException.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionOverflowException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionOverflowException.java deleted file mode 100644 index 08d6f81..0000000 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionOverflowException.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.numbers.fraction; - -/** - * Error thrown when evaluating a fraction causes an overflow. - */ -public class FractionOverflowException extends FractionException { - - /** Serializable version identifier. */ - private static final long serialVersionUID = 201701181869L; - - /** - * Constructs an exception the default formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param p current numerator - * @param q current denominator - */ - public FractionOverflowException(long p, long q) { - super("overflow in fraction {0}/{1}, cannot negate", p, q); - } - - /** - * Constructs an exception with specified formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param message the custom message - * @param formatArguments arguments when formatting the message - */ - public FractionOverflowException(String message, Object... formatArguments) { - super(message, formatArguments); - } -} http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java index 9c1d416..e48441d 100644 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java +++ b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/FractionParseException.java @@ -17,10 +17,13 @@ package org.apache.commons.numbers.fraction; +import java.text.MessageFormat; +import java.text.ParseException; + /** * Error thrown when a string cannot be parsed into a fraction. */ -public class FractionParseException extends FractionException { +public class FractionParseException extends ParseException { /** Serializable version identifier. */ private static final long serialVersionUID = 201701181879L; @@ -33,6 +36,8 @@ public class FractionParseException extends FractionException { * @param type type of target object */ public FractionParseException(String source, int position, Class<?> type) { - super("string \"{0}\" unparseable (from position {1}) as an object of type {2}", source, position, type); + super(MessageFormat.format("string \"{0}\" unparseable (from position {1}) as an object of type {2}", + source, position, type), + position); } } http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/ZeroDenominatorException.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/ZeroDenominatorException.java b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/ZeroDenominatorException.java deleted file mode 100644 index e8940a3..0000000 --- a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/ZeroDenominatorException.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.commons.numbers.fraction; - -import java.math.BigInteger; - -/** - * Error thrown when a fraction with a zero denominator is created. - */ -public class ZeroDenominatorException extends FractionException { - - /** Serializable version identifier. */ - private static final long serialVersionUID = 201701191752L; - - public ZeroDenominatorException() { - super("denominator must be different from 0"); - } - - /** - * Constructs an exception with specified formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param p current numerator - * @param q current denominator - */ - public ZeroDenominatorException(long p, long q) { - super("zero denominator in fraction {0}/{1}", p, q); - } - - /** - * Constructs an exception with specified formatted detail message. - * Message formatting is delegated to {@link java.text.MessageFormat}. - * @param p current numerator - * @param q current denominator - */ - public ZeroDenominatorException(BigInteger p, BigInteger q) { - super("zero denominator in fraction {0}/{1}", p, q); - } -} http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java index fac1f54..b69663e 100644 --- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java +++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionFormatTest.java @@ -101,7 +101,7 @@ public class BigFractionFormatTest { } @Test - public void testParse() { + public void testParse() throws Exception { String source = "1 / 2"; { @@ -118,7 +118,7 @@ public class BigFractionFormatTest { } @Test - public void testParseInteger() { + public void testParseInteger() throws Exception { String source = "10"; { BigFraction c = properFormat.parse(source); @@ -171,7 +171,7 @@ public class BigFractionFormatTest { } @Test - public void testParseNegative() { + public void testParseNegative() throws Exception { { String source = "-1 / 2"; @@ -199,7 +199,7 @@ public class BigFractionFormatTest { } @Test - public void testParseProper() { + public void testParseProper() throws Exception { String source = "1 2 / 3"; { @@ -218,7 +218,7 @@ public class BigFractionFormatTest { } @Test - public void testParseProperNegative() { + public void testParseProperNegative() throws Exception { String source = "-1 2 / 3"; { BigFraction c = properFormat.parse(source); @@ -254,7 +254,7 @@ public class BigFractionFormatTest { } @Test - public void testParseBig() { + public void testParseBig() throws Exception { BigFraction f1 = improperFormat.parse("167213075789791382630275400487886041651764456874403" + " / " + http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/BigFractionTest.java ---------------------------------------------------------------------- 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 b7ce258..55982ea 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 @@ -74,14 +74,14 @@ public class BigFractionTest { } try { new BigFraction(BigInteger.ONE, BigInteger.ZERO); - Assert.fail("Expecting ZeroDenominatorException"); - } catch (ZeroDenominatorException npe) { + Assert.fail("Expecting ArithmeticException"); + } catch (ArithmeticException ignored) { // expected } try { new BigFraction(2.0 * Integer.MAX_VALUE, 1.0e-5, 100000); - Assert.fail("Expecting FractionConversionException"); - } catch (FractionConversionException fce) { + Assert.fail("Expecting ArithmeticException"); + } catch (ArithmeticException ignored) { // expected } } @@ -155,13 +155,13 @@ public class BigFractionTest { } // MATH-1029 - @Test(expected=FractionConversionException.class) + @Test(expected=ArithmeticException.class) public void testPositiveValueOverflow() { assertFraction((long) 1e10, 1, new BigFraction(1e10, 1000)); } // MATH-1029 - @Test(expected=FractionConversionException.class) + @Test(expected=ArithmeticException.class) public void testNegativeValueOverflow() { assertFraction((long) -1e10, 1, new BigFraction(-1e10, 1000)); } @@ -316,8 +316,8 @@ public class BigFractionTest { f = new BigFraction(0, 3); try { f = f.reciprocal(); - Assert.fail("expecting ZeroDenominatorException"); - } catch (ZeroDenominatorException ex) { + Assert.fail("expecting ArithmeticException"); + } catch (ArithmeticException ignored) { } // large values @@ -584,8 +584,8 @@ public class BigFractionTest { Assert.assertTrue(BigFraction.ZERO.equals(BigFraction.getReducedFraction(0, -1))); try { BigFraction.getReducedFraction(1, 0); - Assert.fail("expecting ZeroDenominatorException"); - } catch (ZeroDenominatorException ex) { + Assert.fail("expecting ArithmeticException"); + } catch (ArithmeticException ex) { // expected } Assert.assertEquals(BigFraction.getReducedFraction(2, Integer.MIN_VALUE).getNumeratorAsInt(), -1); @@ -621,7 +621,7 @@ public class BigFractionTest { } @Test - public void testSerial() throws FractionConversionException { + public void testSerial() { BigFraction[] fractions = { new BigFraction(3, 4), BigFraction.ONE, BigFraction.ZERO, new BigFraction(17), new BigFraction(Math.PI, 1000), http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java ---------------------------------------------------------------------- diff --git a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java index 2c9a398..af1f462 100644 --- a/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java +++ b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionFormatTest.java @@ -118,7 +118,7 @@ public class FractionFormatTest { } @Test - public void testParseInteger() { + public void testParseInteger() throws Exception { String source = "10"; { Fraction c = properFormat.parse(source); @@ -135,7 +135,7 @@ public class FractionFormatTest { } @Test - public void testParseOne1() { + public void testParseOne1() throws Exception { String source = "1 / 1"; Fraction c = properFormat.parse(source); Assert.assertNotNull(c); @@ -144,7 +144,7 @@ public class FractionFormatTest { } @Test - public void testParseOne2() { + public void testParseOne2() throws Exception { String source = "10 / 10"; Fraction c = properFormat.parse(source); Assert.assertNotNull(c); @@ -153,7 +153,7 @@ public class FractionFormatTest { } @Test - public void testParseZero1() { + public void testParseZero1() throws Exception { String source = "0 / 1"; Fraction c = properFormat.parse(source); Assert.assertNotNull(c); @@ -162,7 +162,7 @@ public class FractionFormatTest { } @Test - public void testParseZero2() { + public void testParseZero2() throws Exception { String source = "-0 / 1"; Fraction c = properFormat.parse(source); Assert.assertNotNull(c); @@ -209,7 +209,7 @@ public class FractionFormatTest { } @Test - public void testParseNegative() { + public void testParseNegative() throws Exception { { String source = "-1 / 2"; @@ -237,7 +237,7 @@ public class FractionFormatTest { } @Test - public void testParseProper() { + public void testParseProper() throws Exception { String source = "1 2 / 3"; { @@ -256,7 +256,7 @@ public class FractionFormatTest { } @Test - public void testParseProperNegative() { + public void testParseProperNegative() throws Exception { String source = "-1 2 / 3"; { Fraction c = properFormat.parse(source); http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/41e2f65b/commons-numbers-fraction/src/test/java/org/apache/commons/numbers/fraction/FractionTest.java ---------------------------------------------------------------------- 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 a2c1f8e..d35092b 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 @@ -61,7 +61,7 @@ public class FractionTest { assertFraction(15, 1, new Fraction(15.0000000000001)); } - @Test(expected=FractionConversionException.class) + @Test(expected=ArithmeticException.class) public void testGoldenRatio() { // the golden ratio is notoriously a difficult number for continuous fraction new Fraction((1 + Math.sqrt(5)) / 2, 1.0e-12, 25); @@ -143,7 +143,7 @@ public class FractionTest { Fraction f = new Fraction(a, 1.0e-12, 1000); //System.out.println(f.getNumerator() + "/" + f.getDenominator()); Assert.fail("an exception should have been thrown"); - } catch (FractionConversionException ce) { + } catch (ArithmeticException ignored) { // expected behavior } } @@ -289,8 +289,8 @@ public class FractionTest { f = new Fraction(0, 3); try { f = f.reciprocal(); - Assert.fail("expecting ZeroDenominatorException"); - } catch (ZeroDenominatorException ex) {} + Assert.fail("expecting ArithmeticException"); + } catch (ArithmeticException ignored) {} // large values f = new Fraction(Integer.MAX_VALUE, 1); @@ -387,7 +387,7 @@ public class FractionTest { try { f = f1.add(f2); // should overflow Assert.fail("expecting ArithmeticException but got: " + f.toString()); - } catch (FractionOverflowException ex) {} + } catch (ArithmeticException ex) {} try { f= new Fraction(-Integer.MAX_VALUE, 1); @@ -549,8 +549,8 @@ public class FractionTest { f2 = new Fraction(1,5); try { f = f1.subtract(f2); // should overflow - Assert.fail("expecting FractionOverflowException but got: " + f.toString()); - } catch (FractionOverflowException ex) {} + Assert.fail("expecting ArithmeticException but got: " + f.toString()); + } catch (ArithmeticException ex) {} try { f= new Fraction(Integer.MIN_VALUE, 1); @@ -593,8 +593,8 @@ public class FractionTest { Assert.assertTrue(Fraction.ZERO.equals(Fraction.getReducedFraction(0, -1))); try { Fraction.getReducedFraction(1, 0); - Assert.fail("expecting ZeroDenominatorException"); - } catch (ZeroDenominatorException ex) { + Assert.fail("expecting ArithmeticException"); + } catch (ArithmeticException ignored) { // expected } Assert.assertEquals(Fraction.getReducedFraction @@ -611,7 +611,7 @@ public class FractionTest { } @Test - public void testSerial() throws FractionConversionException { + public void testSerial() { Fraction[] fractions = { new Fraction(3, 4), Fraction.ONE, Fraction.ZERO, new Fraction(17), new Fraction(Math.PI, 1000),