From e8dfee5c9de3f0f2e65ec990181ce3ba78f2a25d Mon Sep 17 00:00:00 2001 From: LO Kam Tao Leo Date: Sun, 1 Jan 2023 10:15:18 +0000 Subject: [PATCH] Amending function parseInt --- src/main/java/org/leolo/nrdatad/util/JSONUtil.java | 17 ++++++++++++++++- src/test/java/org/leolo/nrdatad/util/JSONUtilTest.java | 14 ++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/leolo/nrdatad/util/JSONUtil.java b/src/main/java/org/leolo/nrdatad/util/JSONUtil.java index ec4bce4..5e43414 100644 --- a/src/main/java/org/leolo/nrdatad/util/JSONUtil.java +++ b/src/main/java/org/leolo/nrdatad/util/JSONUtil.java @@ -8,8 +8,23 @@ public class JSONUtil { static Logger log = LogManager.getLogger(); public static int parseInt(String val){ + //Throw exception for empty string, or just a plus sign to maintenance backward + //compatibility with previous version. + if(val.length()==0 || "+".equals(val)){ + throw new NumberFormatException(); + } if (val.startsWith("+")) { - return Integer.parseInt(val.substring(1)); + return _parseInt(val.substring(1)); + } + return _parseInt(val); + } + + private static int _parseInt(String val) { + if(val.length()==0){ + return 0; + } + if (val.startsWith("0")) { + return _parseInt(val.substring(1)); } return Integer.parseInt(val); } diff --git a/src/test/java/org/leolo/nrdatad/util/JSONUtilTest.java b/src/test/java/org/leolo/nrdatad/util/JSONUtilTest.java index 6d84321..034eb70 100644 --- a/src/test/java/org/leolo/nrdatad/util/JSONUtilTest.java +++ b/src/test/java/org/leolo/nrdatad/util/JSONUtilTest.java @@ -8,10 +8,24 @@ public class JSONUtilTest { @Test public void testJSONUtilParseIntNormal(){ assertEquals(10, JSONUtil.parseInt("10")); + assertEquals(0, JSONUtil.parseInt("0")); assertEquals(10, JSONUtil.parseInt("+10")); assertEquals(-10, JSONUtil.parseInt("-10")); } + @Test public void testZeroPrefix(){ + assertEquals(75, JSONUtil.parseInt("075")); + assertEquals(5, JSONUtil.parseInt("005")); + assertEquals(75, JSONUtil.parseInt("+075")); + assertEquals(5, JSONUtil.parseInt("+005")); + assertEquals(-75, JSONUtil.parseInt("-075")); + assertEquals(-5, JSONUtil.parseInt("-005")); + } + + @Test public void testAllZero(){ + assertEquals(0, JSONUtil.parseInt("00000000")); + } + @Test(expected = NumberFormatException.class) public void testJSONUtilParseIntError1(){ JSONUtil.parseInt("abcd"); }