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]