Repository: commons-numbers Updated Branches: refs/heads/fraction-dev c7e6c93ed -> 9a827a5d6
NUMBERS-74: Conformed unit tests to new factory methods Project: http://git-wip-us.apache.org/repos/asf/commons-numbers/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-numbers/commit/9a827a5d Tree: http://git-wip-us.apache.org/repos/asf/commons-numbers/tree/9a827a5d Diff: http://git-wip-us.apache.org/repos/asf/commons-numbers/diff/9a827a5d Branch: refs/heads/fraction-dev Commit: 9a827a5d6d7f61cd90fba1a074dc578efe54fa1a Parents: c7e6c93 Author: Eric Barnhill <ericbarnh...@protonmail.ch> Authored: Fri Nov 30 16:25:57 2018 -0800 Committer: Eric Barnhill <ericbarnh...@protonmail.ch> Committed: Fri Nov 30 16:25:57 2018 -0800 ---------------------------------------------------------------------- .../numbers/fraction/FractionFormatTest.java | 10 +- .../commons/numbers/fraction/FractionTest.java | 360 +++++++++---------- 2 files changed, 177 insertions(+), 193 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/9a827a5d/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 1cb3d6d..0a7d89c 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 @@ -43,7 +43,7 @@ public class FractionFormatTest { @Test public void testFormat() { - Fraction c = new Fraction(1, 2); + Fraction c = Fraction.ofInt(1, 2); String expected = "1 / 2"; String actual = properFormat.format(c); @@ -55,7 +55,7 @@ public class FractionFormatTest { @Test public void testFormatNegative() { - Fraction c = new Fraction(-1, 2); + Fraction c = Fraction.ofInt(-1, 2); String expected = "-1 / 2"; String actual = properFormat.format(c); @@ -67,7 +67,7 @@ public class FractionFormatTest { @Test public void testFormatZero() { - Fraction c = new Fraction(0, 1); + Fraction c = Fraction.ofInt(0, 1); String expected = "0 / 1"; String actual = properFormat.format(c); @@ -79,7 +79,7 @@ public class FractionFormatTest { @Test public void testFormatImproper() { - Fraction c = new Fraction(5, 3); + Fraction c = Fraction.ofInt(5, 3); String actual = properFormat.format(c); Assert.assertEquals("1 2 / 3", actual); @@ -90,7 +90,7 @@ public class FractionFormatTest { @Test public void testFormatImproperNegative() { - Fraction c = new Fraction(-5, 3); + Fraction c = Fraction.ofInt(-5, 3); String actual = properFormat.format(c); Assert.assertEquals("-1 2 / 3", actual); http://git-wip-us.apache.org/repos/asf/commons-numbers/blob/9a827a5d/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 5ea5f4e..d689de0 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 @@ -32,101 +32,101 @@ public class FractionTest { @Test public void testConstructor() { - assertFraction(0, 1, new Fraction(0, 1)); - assertFraction(0, 1, new Fraction(0, 2)); - assertFraction(0, 1, new Fraction(0, -1)); - assertFraction(1, 2, new Fraction(1, 2)); - assertFraction(1, 2, new Fraction(2, 4)); - assertFraction(-1, 2, new Fraction(-1, 2)); - assertFraction(-1, 2, new Fraction(1, -2)); - assertFraction(-1, 2, new Fraction(-2, 4)); - assertFraction(-1, 2, new Fraction(2, -4)); + assertFraction(0, 1, Fraction.ofInt(0, 1)); + assertFraction(0, 1, Fraction.ofInt(0, 2)); + assertFraction(0, 1, Fraction.ofInt(0, -1)); + assertFraction(1, 2, Fraction.ofInt(1, 2)); + assertFraction(1, 2, Fraction.ofInt(2, 4)); + assertFraction(-1, 2, Fraction.ofInt(-1, 2)); + assertFraction(-1, 2, Fraction.ofInt(1, -2)); + assertFraction(-1, 2, Fraction.ofInt(-2, 4)); + assertFraction(-1, 2, Fraction.ofInt(2, -4)); // overflow try { - new Fraction(Integer.MIN_VALUE, -1); + Fraction.ofInt(Integer.MIN_VALUE, -1); Assert.fail(); } catch (ArithmeticException ex) { // success } try { - new Fraction(1, Integer.MIN_VALUE); + Fraction.ofInt(1, Integer.MIN_VALUE); Assert.fail(); } catch (ArithmeticException ex) { // success } - assertFraction(0, 1, new Fraction(0.00000000000001)); - assertFraction(2, 5, new Fraction(0.40000000000001)); - assertFraction(15, 1, new Fraction(15.0000000000001)); + assertFraction(0, 1, Fraction.ofDouble(0.00000000000001)); + assertFraction(2, 5, Fraction.ofDouble(0.40000000000001)); + assertFraction(15, 1, Fraction.ofDouble(15.0000000000001)); } @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); + Fraction.ofDouble((1 + Math.sqrt(5)) / 2, 1.0e-12, 25); } // MATH-179 @Test public void testDoubleConstructor() throws Exception { - assertFraction(1, 2, new Fraction((double)1 / (double)2)); - assertFraction(1, 3, new Fraction((double)1 / (double)3)); - assertFraction(2, 3, new Fraction((double)2 / (double)3)); - assertFraction(1, 4, new Fraction((double)1 / (double)4)); - assertFraction(3, 4, new Fraction((double)3 / (double)4)); - assertFraction(1, 5, new Fraction((double)1 / (double)5)); - assertFraction(2, 5, new Fraction((double)2 / (double)5)); - assertFraction(3, 5, new Fraction((double)3 / (double)5)); - assertFraction(4, 5, new Fraction((double)4 / (double)5)); - assertFraction(1, 6, new Fraction((double)1 / (double)6)); - assertFraction(5, 6, new Fraction((double)5 / (double)6)); - assertFraction(1, 7, new Fraction((double)1 / (double)7)); - assertFraction(2, 7, new Fraction((double)2 / (double)7)); - assertFraction(3, 7, new Fraction((double)3 / (double)7)); - assertFraction(4, 7, new Fraction((double)4 / (double)7)); - assertFraction(5, 7, new Fraction((double)5 / (double)7)); - assertFraction(6, 7, new Fraction((double)6 / (double)7)); - assertFraction(1, 8, new Fraction((double)1 / (double)8)); - assertFraction(3, 8, new Fraction((double)3 / (double)8)); - assertFraction(5, 8, new Fraction((double)5 / (double)8)); - assertFraction(7, 8, new Fraction((double)7 / (double)8)); - assertFraction(1, 9, new Fraction((double)1 / (double)9)); - assertFraction(2, 9, new Fraction((double)2 / (double)9)); - assertFraction(4, 9, new Fraction((double)4 / (double)9)); - assertFraction(5, 9, new Fraction((double)5 / (double)9)); - assertFraction(7, 9, new Fraction((double)7 / (double)9)); - assertFraction(8, 9, new Fraction((double)8 / (double)9)); - assertFraction(1, 10, new Fraction((double)1 / (double)10)); - assertFraction(3, 10, new Fraction((double)3 / (double)10)); - assertFraction(7, 10, new Fraction((double)7 / (double)10)); - assertFraction(9, 10, new Fraction((double)9 / (double)10)); - assertFraction(1, 11, new Fraction((double)1 / (double)11)); - assertFraction(2, 11, new Fraction((double)2 / (double)11)); - assertFraction(3, 11, new Fraction((double)3 / (double)11)); - assertFraction(4, 11, new Fraction((double)4 / (double)11)); - assertFraction(5, 11, new Fraction((double)5 / (double)11)); - assertFraction(6, 11, new Fraction((double)6 / (double)11)); - assertFraction(7, 11, new Fraction((double)7 / (double)11)); - assertFraction(8, 11, new Fraction((double)8 / (double)11)); - assertFraction(9, 11, new Fraction((double)9 / (double)11)); - assertFraction(10, 11, new Fraction((double)10 / (double)11)); + assertFraction(1, 2, Fraction.ofDouble((double)1 / (double)2)); + assertFraction(1, 3, Fraction.ofDouble((double)1 / (double)3)); + assertFraction(2, 3, Fraction.ofDouble((double)2 / (double)3)); + assertFraction(1, 4, Fraction.ofDouble((double)1 / (double)4)); + assertFraction(3, 4, Fraction.ofDouble((double)3 / (double)4)); + assertFraction(1, 5, Fraction.ofDouble((double)1 / (double)5)); + assertFraction(2, 5, Fraction.ofDouble((double)2 / (double)5)); + assertFraction(3, 5, Fraction.ofDouble((double)3 / (double)5)); + assertFraction(4, 5, Fraction.ofDouble((double)4 / (double)5)); + assertFraction(1, 6, Fraction.ofDouble((double)1 / (double)6)); + assertFraction(5, 6, Fraction.ofDouble((double)5 / (double)6)); + assertFraction(1, 7, Fraction.ofDouble((double)1 / (double)7)); + assertFraction(2, 7, Fraction.ofDouble((double)2 / (double)7)); + assertFraction(3, 7, Fraction.ofDouble((double)3 / (double)7)); + assertFraction(4, 7, Fraction.ofDouble((double)4 / (double)7)); + assertFraction(5, 7, Fraction.ofDouble((double)5 / (double)7)); + assertFraction(6, 7, Fraction.ofDouble((double)6 / (double)7)); + assertFraction(1, 8, Fraction.ofDouble((double)1 / (double)8)); + assertFraction(3, 8, Fraction.ofDouble((double)3 / (double)8)); + assertFraction(5, 8, Fraction.ofDouble((double)5 / (double)8)); + assertFraction(7, 8, Fraction.ofDouble((double)7 / (double)8)); + assertFraction(1, 9, Fraction.ofDouble((double)1 / (double)9)); + assertFraction(2, 9, Fraction.ofDouble((double)2 / (double)9)); + assertFraction(4, 9, Fraction.ofDouble((double)4 / (double)9)); + assertFraction(5, 9, Fraction.ofDouble((double)5 / (double)9)); + assertFraction(7, 9, Fraction.ofDouble((double)7 / (double)9)); + assertFraction(8, 9, Fraction.ofDouble((double)8 / (double)9)); + assertFraction(1, 10, Fraction.ofDouble((double)1 / (double)10)); + assertFraction(3, 10, Fraction.ofDouble((double)3 / (double)10)); + assertFraction(7, 10, Fraction.ofDouble((double)7 / (double)10)); + assertFraction(9, 10, Fraction.ofDouble((double)9 / (double)10)); + assertFraction(1, 11, Fraction.ofDouble((double)1 / (double)11)); + assertFraction(2, 11, Fraction.ofDouble((double)2 / (double)11)); + assertFraction(3, 11, Fraction.ofDouble((double)3 / (double)11)); + assertFraction(4, 11, Fraction.ofDouble((double)4 / (double)11)); + assertFraction(5, 11, Fraction.ofDouble((double)5 / (double)11)); + assertFraction(6, 11, Fraction.ofDouble((double)6 / (double)11)); + assertFraction(7, 11, Fraction.ofDouble((double)7 / (double)11)); + assertFraction(8, 11, Fraction.ofDouble((double)8 / (double)11)); + assertFraction(9, 11, Fraction.ofDouble((double)9 / (double)11)); + assertFraction(10, 11, Fraction.ofDouble((double)10 / (double)11)); } // MATH-181 @Test public void testDigitLimitConstructor() throws Exception { - assertFraction(2, 5, new Fraction(0.4, 9)); - assertFraction(2, 5, new Fraction(0.4, 99)); - assertFraction(2, 5, new Fraction(0.4, 999)); + assertFraction(2, 5, Fraction.ofDouble(0.4, 9)); + assertFraction(2, 5, Fraction.ofDouble(0.4, 99)); + assertFraction(2, 5, Fraction.ofDouble(0.4, 999)); - assertFraction(3, 5, new Fraction(0.6152, 9)); - assertFraction(8, 13, new Fraction(0.6152, 99)); - assertFraction(510, 829, new Fraction(0.6152, 999)); - assertFraction(769, 1250, new Fraction(0.6152, 9999)); + assertFraction(3, 5, Fraction.ofDouble(0.6152, 9)); + assertFraction(8, 13, Fraction.ofDouble(0.6152, 99)); + assertFraction(510, 829, Fraction.ofDouble(0.6152, 999)); + assertFraction(769, 1250, Fraction.ofDouble(0.6152, 9999)); // MATH-996 - assertFraction(1, 2, new Fraction(0.5000000001, 10)); + assertFraction(1, 2, Fraction.ofDouble(0.5000000001, 10)); } @Test @@ -140,7 +140,7 @@ public class FractionTest { private void checkIntegerOverflow(double a) { try { @SuppressWarnings("unused") - Fraction f = new Fraction(a, 1.0e-12, 1000); + Fraction f = Fraction.ofDouble(a, 1.0e-12, 1000); //System.out.println(f.getNumerator() + "/" + f.getDenominator()); Assert.fail("an exception should have been thrown"); } catch (ArithmeticException ignored) { @@ -150,21 +150,21 @@ public class FractionTest { @Test public void testEpsilonLimitConstructor() throws Exception { - assertFraction(2, 5, new Fraction(0.4, 1.0e-5, 100)); - - assertFraction(3, 5, new Fraction(0.6152, 0.02, 100)); - assertFraction(8, 13, new Fraction(0.6152, 1.0e-3, 100)); - assertFraction(251, 408, new Fraction(0.6152, 1.0e-4, 100)); - assertFraction(251, 408, new Fraction(0.6152, 1.0e-5, 100)); - assertFraction(510, 829, new Fraction(0.6152, 1.0e-6, 100)); - assertFraction(769, 1250, new Fraction(0.6152, 1.0e-7, 100)); + assertFraction(2, 5, Fraction.ofDouble(0.4, 1.0e-5, 100)); + + assertFraction(3, 5, Fraction.ofDouble(0.6152, 0.02, 100)); + assertFraction(8, 13, Fraction.ofDouble(0.6152, 1.0e-3, 100)); + assertFraction(251, 408, Fraction.ofDouble(0.6152, 1.0e-4, 100)); + assertFraction(251, 408, Fraction.ofDouble(0.6152, 1.0e-5, 100)); + assertFraction(510, 829, Fraction.ofDouble(0.6152, 1.0e-6, 100)); + assertFraction(769, 1250, Fraction.ofDouble(0.6152, 1.0e-7, 100)); } @Test public void testCompareTo() { - Fraction first = new Fraction(1, 2); - Fraction second = new Fraction(1, 3); - Fraction third = new Fraction(1, 2); + Fraction first = Fraction.ofDouble(1, 2); + Fraction second = Fraction.ofDouble(1, 3); + Fraction third = Fraction.ofDouble(1, 2); Assert.assertEquals(0, first.compareTo(first)); Assert.assertEquals(0, first.compareTo(third)); @@ -174,8 +174,8 @@ public class FractionTest { // these two values are different approximations of PI // the first one is approximately PI - 3.07e-18 // the second one is approximately PI + 1.936e-17 - Fraction pi1 = new Fraction(1068966896, 340262731); - Fraction pi2 = new Fraction( 411557987, 131002976); + Fraction pi1 = Fraction.ofDouble(1068966896, 340262731); + Fraction pi2 = Fraction.ofDouble( 411557987, 131002976); Assert.assertEquals(-1, pi1.compareTo(pi2)); Assert.assertEquals( 1, pi2.compareTo(pi1)); Assert.assertEquals(0.0, pi1.doubleValue() - pi2.doubleValue(), 1.0e-20); @@ -183,8 +183,8 @@ public class FractionTest { @Test public void testDoubleValue() { - Fraction first = new Fraction(1, 2); - Fraction second = new Fraction(1, 3); + Fraction first = Fraction.ofDouble(1, 2); + Fraction second = Fraction.ofDouble(1, 3); Assert.assertEquals(0.5, first.doubleValue(), 0.0); Assert.assertEquals(1.0 / 3.0, second.doubleValue(), 0.0); @@ -192,8 +192,8 @@ public class FractionTest { @Test public void testFloatValue() { - Fraction first = new Fraction(1, 2); - Fraction second = new Fraction(1, 3); + Fraction first = Fraction.ofDouble(1, 2); + Fraction second = Fraction.ofDouble(1, 3); Assert.assertEquals(0.5f, first.floatValue(), 0.0f); Assert.assertEquals((float)(1.0 / 3.0), second.floatValue(), 0.0f); @@ -201,8 +201,8 @@ public class FractionTest { @Test public void testIntValue() { - Fraction first = new Fraction(1, 2); - Fraction second = new Fraction(3, 2); + Fraction first = Fraction.ofDouble(1, 2); + Fraction second = Fraction.ofDouble(3, 2); Assert.assertEquals(0, first.intValue()); Assert.assertEquals(1, second.intValue()); @@ -210,8 +210,8 @@ public class FractionTest { @Test public void testLongValue() { - Fraction first = new Fraction(1, 2); - Fraction second = new Fraction(3, 2); + Fraction first = Fraction.ofDouble(1, 2); + Fraction second = Fraction.ofDouble(3, 2); Assert.assertEquals(0L, first.longValue()); Assert.assertEquals(1L, second.longValue()); @@ -219,21 +219,21 @@ public class FractionTest { @Test public void testConstructorDouble() { - assertFraction(1, 2, new Fraction(0.5)); - assertFraction(1, 3, new Fraction(1.0 / 3.0)); - assertFraction(17, 100, new Fraction(17.0 / 100.0)); - assertFraction(317, 100, new Fraction(317.0 / 100.0)); - assertFraction(-1, 2, new Fraction(-0.5)); - assertFraction(-1, 3, new Fraction(-1.0 / 3.0)); - assertFraction(-17, 100, new Fraction(17.0 / -100.0)); - assertFraction(-317, 100, new Fraction(-317.0 / 100.0)); + assertFraction(1, 2, Fraction.ofDouble(0.5)); + assertFraction(1, 3, Fraction.ofDouble(1.0 / 3.0)); + assertFraction(17, 100, Fraction.ofDouble(17.0 / 100.0)); + assertFraction(317, 100, Fraction.ofDouble(317.0 / 100.0)); + assertFraction(-1, 2, Fraction.ofDouble(-0.5)); + assertFraction(-1, 3, Fraction.ofDouble(-1.0 / 3.0)); + assertFraction(-17, 100, Fraction.ofDouble(17.0 / -100.0)); + assertFraction(-317, 100, Fraction.ofDouble(-317.0 / 100.0)); } @Test public void testAbs() { - Fraction a = new Fraction(10, 21); - Fraction b = new Fraction(-10, 21); - Fraction c = new Fraction(10, -21); + Fraction a = Fraction.ofInt(10, 21); + Fraction b = Fraction.ofInt(-10, 21); + Fraction c = Fraction.ofInt(10, -21); assertFraction(10, 21, a.abs()); assertFraction(10, 21, b.abs()); @@ -241,59 +241,43 @@ public class FractionTest { } @Test - public void testPercentage() { - Assert.assertEquals(50.0, new Fraction(1, 2).percentageValue(), 1.0e-15); - } - - @Test - public void testMath835() { - final int numer = Integer.MAX_VALUE / 99; - final int denom = 1; - final double percentage = 100 * ((double) numer) / denom; - final Fraction frac = new Fraction(numer, denom); - // With the implementation that preceded the fix suggested in MATH-835, - // this test was failing, due to overflow. - Assert.assertEquals(percentage, frac.percentageValue(), Math.ulp(percentage)); - } - - @Test public void testMath1261() { - final Fraction a = new Fraction(Integer.MAX_VALUE, 2); + final Fraction a = Fraction.ofInt(Integer.MAX_VALUE, 2); final Fraction b = a.multiply(2); - Assert.assertTrue(b.equals(new Fraction(Integer.MAX_VALUE))); + Assert.assertTrue(b.equals(Fraction.ofInt(Integer.MAX_VALUE))); - final Fraction c = new Fraction(2, Integer.MAX_VALUE); + final Fraction c = Fraction.ofInt(2, Integer.MAX_VALUE); final Fraction d = c.divide(2); - Assert.assertTrue(d.equals(new Fraction(1, Integer.MAX_VALUE))); + Assert.assertTrue(d.equals(Fraction.ofInt(1, Integer.MAX_VALUE))); } @Test public void testReciprocal() { Fraction f = null; - f = new Fraction(50, 75); + f = Fraction.ofInt(50, 75); f = f.reciprocal(); Assert.assertEquals(3, f.getNumerator()); Assert.assertEquals(2, f.getDenominator()); - f = new Fraction(4, 3); + f = Fraction.ofInt(4, 3); f = f.reciprocal(); Assert.assertEquals(3, f.getNumerator()); Assert.assertEquals(4, f.getDenominator()); - f = new Fraction(-15, 47); + f = Fraction.ofInt(-15, 47); f = f.reciprocal(); Assert.assertEquals(-47, f.getNumerator()); Assert.assertEquals(15, f.getDenominator()); - f = new Fraction(0, 3); + f = Fraction.ofInt(0, 3); try { f = f.reciprocal(); Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ignored) {} // large values - f = new Fraction(Integer.MAX_VALUE, 1); + f = Fraction.ofInt(Integer.MAX_VALUE, 1); f = f.reciprocal(); Assert.assertEquals(1, f.getNumerator()); Assert.assertEquals(Integer.MAX_VALUE, f.getDenominator()); @@ -303,23 +287,23 @@ public class FractionTest { public void testNegate() { Fraction f = null; - f = new Fraction(50, 75); + f = Fraction.ofInt(50, 75); f = f.negate(); Assert.assertEquals(-2, f.getNumerator()); Assert.assertEquals(3, f.getDenominator()); - f = new Fraction(-50, 75); + f = Fraction.ofInt(-50, 75); f = f.negate(); Assert.assertEquals(2, f.getNumerator()); Assert.assertEquals(3, f.getDenominator()); // large values - f = new Fraction(Integer.MAX_VALUE-1, Integer.MAX_VALUE); + f = Fraction.ofInt(Integer.MAX_VALUE-1, Integer.MAX_VALUE); f = f.negate(); Assert.assertEquals(Integer.MIN_VALUE+2, f.getNumerator()); Assert.assertEquals(Integer.MAX_VALUE, f.getDenominator()); - f = new Fraction(Integer.MIN_VALUE, 1); + f = Fraction.ofInt(Integer.MIN_VALUE, 1); try { f = f.negate(); Assert.fail("expecting ArithmeticException"); @@ -328,15 +312,15 @@ public class FractionTest { @Test public void testAdd() { - Fraction a = new Fraction(1, 2); - Fraction b = new Fraction(2, 3); + Fraction a = Fraction.ofInt(1, 2); + Fraction b = Fraction.ofInt(2, 3); assertFraction(1, 1, a.add(a)); assertFraction(7, 6, a.add(b)); assertFraction(7, 6, b.add(a)); assertFraction(4, 3, b.add(b)); - Fraction f1 = new Fraction(Integer.MAX_VALUE - 1, 1); + Fraction f1 = Fraction.ofInt(Integer.MAX_VALUE - 1, 1); Fraction f2 = Fraction.ONE; Fraction f = f1.add(f2); Assert.assertEquals(Integer.MAX_VALUE, f.getNumerator()); @@ -345,8 +329,8 @@ public class FractionTest { Assert.assertEquals(Integer.MAX_VALUE, f.getNumerator()); Assert.assertEquals(1, f.getDenominator()); - f1 = new Fraction(-1, 13*13*2*2); - f2 = new Fraction(-2, 13*17*2); + f1 = Fraction.ofInt(-1, 13*13*2*2); + f2 = Fraction.ofInt(-2, 13*17*2); f = f1.add(f2); Assert.assertEquals(13*13*17*2*2, f.getDenominator()); Assert.assertEquals(-17 - 2*13*2, f.getNumerator()); @@ -358,19 +342,19 @@ public class FractionTest { // if this fraction is added naively, it will overflow. // check that it doesn't. - f1 = new Fraction(1,32768*3); - f2 = new Fraction(1,59049); + f1 = Fraction.ofInt(1,32768*3); + f2 = Fraction.ofInt(1,59049); f = f1.add(f2); Assert.assertEquals(52451, f.getNumerator()); Assert.assertEquals(1934917632, f.getDenominator()); - f1 = new Fraction(Integer.MIN_VALUE, 3); - f2 = new Fraction(1,3); + f1 = Fraction.ofInt(Integer.MIN_VALUE, 3); + f2 = Fraction.ofInt(1,3); f = f1.add(f2); Assert.assertEquals(Integer.MIN_VALUE+1, f.getNumerator()); Assert.assertEquals(3, f.getDenominator()); - f1 = new Fraction(Integer.MAX_VALUE - 1, 1); + f1 = Fraction.ofInt(Integer.MAX_VALUE - 1, 1); f2 = Fraction.ONE; f = f1.add(f2); Assert.assertEquals(Integer.MAX_VALUE, f.getNumerator()); @@ -382,27 +366,27 @@ public class FractionTest { } catch (ArithmeticException ex) {} // denominator should not be a multiple of 2 or 3 to trigger overflow - f1 = new Fraction(Integer.MIN_VALUE, 5); - f2 = new Fraction(-1,5); + f1 = Fraction.ofInt(Integer.MIN_VALUE, 5); + f2 = Fraction.ofInt(-1,5); try { f = f1.add(f2); // should overflow Assert.fail("expecting ArithmeticException but got: " + f.toString()); } catch (ArithmeticException ex) {} try { - f= new Fraction(-Integer.MAX_VALUE, 1); + f= Fraction.ofInt(-Integer.MAX_VALUE, 1); f = f.add(f); Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} try { - f= new Fraction(-Integer.MAX_VALUE, 1); + f= Fraction.ofInt(-Integer.MAX_VALUE, 1); f = f.add(f); Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} - f1 = new Fraction(3,327680); - f2 = new Fraction(2,59049); + f1 = Fraction.ofInt(3,327680); + f2 = Fraction.ofInt(2,59049); try { f = f1.add(f2); // should overflow Assert.fail("expecting ArithmeticException but got: " + f.toString()); @@ -411,39 +395,39 @@ public class FractionTest { @Test public void testDivide() { - Fraction a = new Fraction(1, 2); - Fraction b = new Fraction(2, 3); + Fraction a = Fraction.ofInt(1, 2); + Fraction b = Fraction.ofInt(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)); - Fraction f1 = new Fraction(3, 5); + Fraction f1 = Fraction.ofInt(3, 5); Fraction f2 = Fraction.ZERO; try { f1.divide(f2); Assert.fail("expecting FractionException"); } catch (FractionException ex) {} - f1 = new Fraction(0, 5); - f2 = new Fraction(2, 7); + f1 = Fraction.ofInt(0, 5); + f2 = Fraction.ofInt(2, 7); Fraction f = f1.divide(f2); Assert.assertSame(Fraction.ZERO, f); - f1 = new Fraction(2, 7); + f1 = Fraction.ofInt(2, 7); f2 = Fraction.ONE; f = f1.divide(f2); Assert.assertEquals(2, f.getNumerator()); Assert.assertEquals(7, f.getDenominator()); - f1 = new Fraction(1, Integer.MAX_VALUE); + f1 = Fraction.ofInt(1, Integer.MAX_VALUE); f = f1.divide(f1); Assert.assertEquals(1, f.getNumerator()); Assert.assertEquals(1, f.getDenominator()); - f1 = new Fraction(Integer.MIN_VALUE, Integer.MAX_VALUE); - f2 = new Fraction(1, Integer.MAX_VALUE); + f1 = Fraction.ofInt(Integer.MIN_VALUE, Integer.MAX_VALUE); + f2 = Fraction.ofInt(1, Integer.MAX_VALUE); f = f1.divide(f2); Assert.assertEquals(Integer.MIN_VALUE, f.getNumerator()); Assert.assertEquals(1, f.getDenominator()); @@ -454,17 +438,17 @@ public class FractionTest { } catch (NullPointerException ex) {} try { - f1 = new Fraction(1, Integer.MAX_VALUE); + f1 = Fraction.ofInt(1, Integer.MAX_VALUE); f = f1.divide(f1.reciprocal()); // should overflow Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} try { - f1 = new Fraction(1, -Integer.MAX_VALUE); + f1 = Fraction.ofInt(1, -Integer.MAX_VALUE); f = f1.divide(f1.reciprocal()); // should overflow Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} - f1 = new Fraction(6, 35); + f1 = Fraction.ofInt(6, 35); f = f1.divide(15); Assert.assertEquals(2, f.getNumerator()); Assert.assertEquals(175, f.getDenominator()); @@ -473,16 +457,16 @@ public class FractionTest { @Test public void testMultiply() { - Fraction a = new Fraction(1, 2); - Fraction b = new Fraction(2, 3); + Fraction a = Fraction.ofInt(1, 2); + Fraction b = Fraction.ofInt(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)); - Fraction f1 = new Fraction(Integer.MAX_VALUE, 1); - Fraction f2 = new Fraction(Integer.MIN_VALUE, Integer.MAX_VALUE); + Fraction f1 = Fraction.ofInt(Integer.MAX_VALUE, 1); + Fraction f2 = Fraction.ofInt(Integer.MIN_VALUE, Integer.MAX_VALUE); Fraction f = f1.multiply(f2); Assert.assertEquals(Integer.MIN_VALUE, f.getNumerator()); Assert.assertEquals(1, f.getDenominator()); @@ -492,7 +476,7 @@ public class FractionTest { Assert.fail("expecting NullArgumentException"); } catch (NullPointerException ex) {} - f1 = new Fraction(6, 35); + f1 = Fraction.ofInt(6, 35); f = f1.multiply(15); Assert.assertEquals(18, f.getNumerator()); Assert.assertEquals(7, f.getDenominator()); @@ -500,35 +484,35 @@ public class FractionTest { @Test public void testPow() { - Fraction a = new Fraction(3, 7); + Fraction a = Fraction.ofInt(3, 7); assertFraction(1, 1, a.pow(0)); assertFraction(3, 7, a.pow(1)); assertFraction(7, 3, a.pow(-1)); assertFraction(9, 49, a.pow(2)); assertFraction(49, 9, a.pow(-2)); - Fraction b = new Fraction(3, -7); + Fraction b = Fraction.ofInt(3, -7); assertFraction(1, 1, b.pow(0)); assertFraction(-3, 7, b.pow(1)); assertFraction(-7, 3, b.pow(-1)); assertFraction(9, 49, a.pow(2)); assertFraction(49, 9, a.pow(-2)); - Fraction c = new Fraction(0, -11); + Fraction c = Fraction.ofInt(0, -11); assertFraction(0, 1, c.pow(Integer.MAX_VALUE)); } @Test public void testSubtract() { - Fraction a = new Fraction(1, 2); - Fraction b = new Fraction(2, 3); + Fraction a = Fraction.ofInt(1, 2); + Fraction b = Fraction.ofInt(2, 3); assertFraction(0, 1, a.subtract(a)); assertFraction(-1, 6, a.subtract(b)); assertFraction(1, 6, b.subtract(a)); assertFraction(0, 1, b.subtract(b)); - Fraction f = new Fraction(1,1); + Fraction f = Fraction.ofInt(1,1); try { f.subtract(null); Assert.fail("expecting NullArgumentException"); @@ -536,19 +520,19 @@ public class FractionTest { // if this fraction is subtracted naively, it will overflow. // check that it doesn't. - Fraction f1 = new Fraction(1,32768*3); - Fraction f2 = new Fraction(1,59049); + Fraction f1 = Fraction.ofInt(1,32768*3); + Fraction f2 = Fraction.ofInt(1,59049); f = f1.subtract(f2); Assert.assertEquals(-13085, f.getNumerator()); Assert.assertEquals(1934917632, f.getDenominator()); - f1 = new Fraction(Integer.MIN_VALUE, 3); - f2 = new Fraction(1,3).negate(); + f1 = Fraction.ofInt(Integer.MIN_VALUE, 3); + f2 = Fraction.ofInt(1,3).negate(); f = f1.subtract(f2); Assert.assertEquals(Integer.MIN_VALUE+1, f.getNumerator()); Assert.assertEquals(3, f.getDenominator()); - f1 = new Fraction(Integer.MAX_VALUE, 1); + f1 = Fraction.ofInt(Integer.MAX_VALUE, 1); f2 = Fraction.ONE; f = f1.subtract(f2); Assert.assertEquals(Integer.MAX_VALUE-1, f.getNumerator()); @@ -558,34 +542,34 @@ public class FractionTest { Assert.assertEquals(1, f.getDenominator()); try { - f1 = new Fraction(1, Integer.MAX_VALUE); - f2 = new Fraction(1, Integer.MAX_VALUE - 1); + f1 = Fraction.ofInt(1, Integer.MAX_VALUE); + f2 = Fraction.ofInt(1, Integer.MAX_VALUE - 1); f = f1.subtract(f2); Assert.fail("expecting ArithmeticException"); //should overflow } catch (ArithmeticException ex) {} // denominator should not be a multiple of 2 or 3 to trigger overflow - f1 = new Fraction(Integer.MIN_VALUE, 5); - f2 = new Fraction(1,5); + f1 = Fraction.ofInt(Integer.MIN_VALUE, 5); + f2 = Fraction.ofInt(1,5); try { f = f1.subtract(f2); // should overflow Assert.fail("expecting ArithmeticException but got: " + f.toString()); } catch (ArithmeticException ex) {} try { - f= new Fraction(Integer.MIN_VALUE, 1); + f= Fraction.ofInt(Integer.MIN_VALUE, 1); f = f.subtract(Fraction.ONE); Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} try { - f= new Fraction(Integer.MAX_VALUE, 1); + f= Fraction.ofInt(Integer.MAX_VALUE, 1); f = f.subtract(Fraction.ONE.negate()); Assert.fail("expecting ArithmeticException"); } catch (ArithmeticException ex) {} - f1 = new Fraction(3,327680); - f2 = new Fraction(2,59049); + f1 = Fraction.ofInt(3,327680); + f2 = Fraction.ofInt(2,59049); try { f = f1.subtract(f2); // should overflow Assert.fail("expecting ArithmeticException but got: " + f.toString()); @@ -594,21 +578,21 @@ public class FractionTest { @Test public void testEqualsAndHashCode() { - Fraction zero = new Fraction(0,1); + Fraction zero = Fraction.ofInt(0,1); Fraction nullFraction = null; Assert.assertTrue( zero.equals(zero)); Assert.assertFalse(zero.equals(nullFraction)); Assert.assertFalse(zero.equals(Double.valueOf(0))); - Fraction zero2 = new Fraction(0,2); + Fraction zero2 = Fraction.ofInt(0,2); Assert.assertTrue(zero.equals(zero2)); Assert.assertEquals(zero.hashCode(), zero2.hashCode()); - Fraction one = new Fraction(1,1); + Fraction one = Fraction.ofInt(1,1); Assert.assertFalse((one.equals(zero) ||zero.equals(one))); } @Test public void testGetReducedFraction() { - Fraction threeFourths = new Fraction(3, 4); + Fraction threeFourths = Fraction.ofInt(3, 4); Assert.assertTrue(threeFourths.equals(Fraction.getReducedFraction(6, 8))); Assert.assertTrue(Fraction.ZERO.equals(Fraction.getReducedFraction(0, -1))); try { @@ -625,17 +609,17 @@ public class FractionTest { @Test public void testToString() { - Assert.assertEquals("0", new Fraction(0, 3).toString()); - Assert.assertEquals("3", new Fraction(6, 2).toString()); - Assert.assertEquals("2 / 3", new Fraction(18, 27).toString()); + Assert.assertEquals("0", Fraction.ofInt(0, 3).toString()); + Assert.assertEquals("3", Fraction.ofInt(6, 2).toString()); + Assert.assertEquals("2 / 3", Fraction.ofInt(18, 27).toString()); } @Test public void testSerial() { Fraction[] fractions = { - new Fraction(3, 4), Fraction.ONE, Fraction.ZERO, - new Fraction(17), new Fraction(Math.PI, 1000), - new Fraction(-5, 2) + Fraction.ofInt(3, 4), Fraction.ONE, Fraction.ZERO, + Fraction.ofInt(17), Fraction.ofDouble(Math.PI, 1000), + Fraction.ofInt(-5, 2) }; for (Fraction fraction : fractions) { Assert.assertEquals(fraction, TestUtils.serializeAndRecover(fraction));