Author: sebb Date: Wed Mar 27 16:29:56 2013 New Revision: 1461698 URL: http://svn.apache.org/r1461698 Log: Add tests to try and break createNumber exponent handling
Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java?rev=1461698&r1=1461697&r2=1461698&view=diff ============================================================================== --- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java (original) +++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/math/NumberUtilsTest.java Wed Mar 27 16:29:56 2013 @@ -225,7 +225,7 @@ public class NumberUtilsTest { // LANG-693 assertEquals("createNumber(String) LANG-693 failed", Double.valueOf(Double.MAX_VALUE), NumberUtils .createNumber("" + Double.MAX_VALUE)); - + // LANG-822 // ensure that the underlying negative number would create a BigDecimal final Number bigNum = NumberUtils.createNumber("-1.1E-700F"); @@ -236,7 +236,25 @@ public class NumberUtilsTest { @Test(expected=NumberFormatException.class) // Check that the code fails to create a valid number when preceeded by -- rather than - public void testCreateNumberFailure_1() { - NumberUtils.createNumber("--1.1E-700F"); + NumberUtils.createNumber("--1.1E-700F"); + } + + @Test(expected=NumberFormatException.class) + // Check that the code fails to create a valid number when both e and E are present (with decimal) + public void testCreateNumberFailure_2() { + NumberUtils.createNumber("-1.1E+0-7e00"); + } + + @Test(expected=NumberFormatException.class) + // Check that the code fails to create a valid number when both e and E are present (no decimal) + public void testCreateNumberFailure_3() { + NumberUtils.createNumber("-11E+0-7e00"); + } + + @Test(expected=NumberFormatException.class) + // Check that the code fails to create a valid number when both e and E are present (no decimal) + public void testCreateNumberFailure_4() { + NumberUtils.createNumber("1eE+00001"); } // Tests to show when magnitude causes switch to next Number type @@ -251,7 +269,7 @@ public class NumberUtilsTest { assertEquals(Double.valueOf(Double.MAX_VALUE), NumberUtils.createNumber("1.7976931348623157e+308")); // Test with +2 in final digit (+1 does not cause roll-over to BigDecimal) assertEquals(new BigDecimal("1.7976931348623159e+308"), NumberUtils.createNumber("1.7976931348623159e+308")); - + assertEquals(Integer.valueOf(0x12345678), NumberUtils.createNumber("0x12345678")); assertEquals(Long.valueOf(0x123456789L), NumberUtils.createNumber("0x123456789"));