scolebourne 2003/06/08 07:14:01 Modified: lang/src/java/org/apache/commons/lang NumberUtils.java lang/src/test/org/apache/commons/lang NumberUtilsTest.java Log: Fix bug in NumberUtils where '12a' was treated as a number. bug 20538, reported/fix by Eric Pugh/Phil Steitz Revision Changes Path 1.10 +5 -1 jakarta-commons/lang/src/java/org/apache/commons/lang/NumberUtils.java Index: NumberUtils.java =================================================================== RCS file: /home/cvs/jakarta-commons/lang/src/java/org/apache/commons/lang/NumberUtils.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- NumberUtils.java 8 Jun 2003 14:09:36 -0000 1.9 +++ NumberUtils.java 8 Jun 2003 14:14:01 -0000 1.10 @@ -62,6 +62,8 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Rand McNeely</a> * @author Stephen Colebourne * @author <a href="mailto:[EMAIL PROTECTED]">Steve Downey</a> + * @author Eric Pugh + * @author Phil Steitz * @since 1.0 * @version $Id$ */ @@ -763,6 +765,8 @@ // not allowing L with an exponoent return foundDigit && !hasExp; } + // last character is illegal + return false; } // allowSigns is true iff the val ends in 'E' // found digit it to make sure weird stuff like '.' and '1E-' doesn't pass 1.7 +26 -2 jakarta-commons/lang/src/test/org/apache/commons/lang/NumberUtilsTest.java Index: NumberUtilsTest.java =================================================================== RCS file: /home/cvs/jakarta-commons/lang/src/test/org/apache/commons/lang/NumberUtilsTest.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- NumberUtilsTest.java 21 May 2003 23:49:15 -0000 1.6 +++ NumberUtilsTest.java 8 Jun 2003 14:14:01 -0000 1.7 @@ -65,6 +65,9 @@ * * @author <a href="mailto:[EMAIL PROTECTED]">Rand McNeely</a> * @author <a href="mailto:[EMAIL PROTECTED]">Ringo De Smet</a> + * @author Eric Pugh + * @author Phil Steitz + * @author Stephen Colebourne * @version $Id$ */ public class NumberUtilsTest extends TestCase { @@ -493,13 +496,34 @@ val = "1234E5l"; assertTrue("isNumber(String) 14 Neg failed", !NumberUtils.isNumber(val)); assertTrue("isNumber(String)/createNumber(String) 14 Neg failed", !checkCreateNumber(val)); + val = "11a"; + assertTrue("isNumber(String) 15 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 15 Neg failed", !checkCreateNumber(val)); + val = "1a"; + assertTrue("isNumber(String) 16 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 16 Neg failed", !checkCreateNumber(val)); + val = "a"; + assertTrue("isNumber(String) 17 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 17 Neg failed", !checkCreateNumber(val)); + val = "11g"; + assertTrue("isNumber(String) 18 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 18 Neg failed", !checkCreateNumber(val)); + val = "11z"; + assertTrue("isNumber(String) 19 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 19 Neg failed", !checkCreateNumber(val)); + val = "11def"; + assertTrue("isNumber(String) 20 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 20 Neg failed", !checkCreateNumber(val)); + val = "11d11"; + assertTrue("isNumber(String) 21 Neg failed", !NumberUtils.isNumber(val)); + assertTrue("isNumber(String)/createNumber(String) 21 Neg failed", !checkCreateNumber(val)); } private boolean checkCreateNumber(String val) { try { Object obj = NumberUtils.createNumber(val); - if(obj == null) { + if (obj == null) { return false; } return true;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]