diff --git a/core-java-modules/core-java-numbers-conversions/pom.xml b/core-java-modules/core-java-numbers-conversions/pom.xml index 55df86d5c7..f745b83f8a 100644 --- a/core-java-modules/core-java-numbers-conversions/pom.xml +++ b/core-java-modules/core-java-numbers-conversions/pom.xml @@ -12,6 +12,14 @@ 0.0.1-SNAPSHOT + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + + + core-java-numbers-conversions diff --git a/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java b/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java new file mode 100644 index 0000000000..151dcb3fdb --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java @@ -0,0 +1,38 @@ +package com.baeldung.stringtoint; + +import java.util.Optional; +import org.apache.commons.lang3.math.NumberUtils; + +public class StringToIntConverter { + Optional convertStringToIntUsingIntegerParseInt(String input){ + try { + return Optional.of(Integer.parseInt(input)); + } catch (NumberFormatException e) { + // log or handle the error + return Optional.empty(); + } + } + + Optional convertStringToIntUsingIntegerValueOf(String input){ + try { + return Optional.of(Integer.valueOf(input)); + } catch (NumberFormatException e) { + // log or handle the error + return Optional.empty(); + } + } + + Optional convertStringToIntUsingIntegerDecode(String input){ + try { + return Optional.of(Integer.decode(input)); + } catch (Exception e) { + // log or handle the error + return Optional.empty(); + } + } + + int convertStringToIntUsingNumberUtils(String input, Integer defaultValue){ + return NumberUtils.toInt(input, defaultValue); + } +} + diff --git a/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java new file mode 100644 index 0000000000..15cc04ed04 --- /dev/null +++ b/core-java-modules/core-java-numbers-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java @@ -0,0 +1,53 @@ +package com.baeldung.stringtoint; + +import java.util.Arrays; +import java.util.List; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class StringToIntConverterUnitTest { + + private StringToIntConverter stringToIntConverter = new StringToIntConverter(); + + @Test + void whenConvertingIntToString_thenInvalidCasesReturnIntegerMinValue() { + List testData = Arrays.asList( + new TestData("", Integer.MIN_VALUE), + new TestData(null, Integer.MIN_VALUE), + new TestData("23,56", Integer.MIN_VALUE), + new TestData("2147483648", Integer.MIN_VALUE), + new TestData("-2147483649", Integer.MIN_VALUE), + new TestData("hello", Integer.MIN_VALUE) + ); + testData.forEach(data -> { + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input).orElse(Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input).orElse(Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerDecode(data.input).orElse(Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingNumberUtils(data.input,Integer.MIN_VALUE )); + }); + } + + @Test + void whenConvertingIntToString_thenValidCasesReturnUnboxedInt() { + List testData = Arrays.asList( + new TestData("23", 23), + new TestData("-23", -23) + ); + testData.forEach(data -> { + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input).orElse(Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input).orElse(Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingNumberUtils(data.input, Integer.MIN_VALUE)); + Assertions.assertEquals(data.expectedOutput, stringToIntConverter.convertStringToIntUsingIntegerDecode(data.input).orElse(Integer.MIN_VALUE)); + }); + } + + public static class TestData{ + String input; + Integer expectedOutput; + + TestData(String input, Integer expectedOutput){ + this.input = input; + this.expectedOutput = expectedOutput; + } + } +} diff --git a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java b/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java deleted file mode 100644 index 03d77c2aea..0000000000 --- a/core-java-modules/core-java-string-conversions/src/main/java/com/baeldung/stringtoint/StringToIntConverter.java +++ /dev/null @@ -1,52 +0,0 @@ -package com.baeldung.stringtoint; - -import java.util.Optional; -import org.apache.commons.lang3.math.NumberUtils; - -public class StringToIntConverter { - - private StringToIntConverter() { - } - - public static Integer convertStringToIntUsingIntegerParseInt(String input){ - try { - return Integer.parseInt(input); - } catch (NumberFormatException e) { - // log or handle the error - return Integer.MIN_VALUE; - } - } - - public static Integer convertStringToIntUsingIntegerValueOf(String input){ - try { - return Integer.valueOf(input); - } catch (NumberFormatException e) { - // log or handle the error - return Integer.MIN_VALUE; - } - } - - public static Integer convertStringToIntUsingIntegerDecode(String input){ - try { - return Integer.decode(input); - } catch (Exception e) { - // log or handle the error - return Integer.MIN_VALUE; - } - } - - public static Integer convertStringToIntUsingOptional(String input){ - Optional parsedInt; - try { - parsedInt = Optional.of(Integer.parseInt(input)); - } catch (Exception e) { - // log or handle the error - parsedInt = Optional.empty(); - } - return parsedInt.orElse(Integer.MIN_VALUE); - } - - public static int convertStringToIntUsingNumberUtils(String input){ - return NumberUtils.toInt(input, Integer.MIN_VALUE); - } -} diff --git a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java b/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java deleted file mode 100644 index 2bfb4db161..0000000000 --- a/core-java-modules/core-java-string-conversions/src/test/java/com/baeldung/stringtoint/StringToIntConverterUnitTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.baeldung.stringtoint; - -import java.util.Arrays; -import java.util.List; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; - -class StringToIntConverterUnitTest { - - @Test - void whenConvertingIntToString_thenInvalidCasesReturnIntegerMinValue() { - List testData = Arrays.asList( - new TestData("", Integer.MIN_VALUE), - new TestData(null, Integer.MIN_VALUE), - new TestData("23,56", Integer.MIN_VALUE), - new TestData("2147483648", Integer.MIN_VALUE), - new TestData("-2147483649", Integer.MIN_VALUE), - new TestData("hello", Integer.MIN_VALUE) - ); - testData.forEach(data -> { - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input)); - }); - } - - @Test - void whenConvertingIntToString_thenValidCasesReturnUnboxedInt() { - List testData = Arrays.asList( - new TestData("23", 23), - new TestData("-23", -23) - ); - testData.forEach(data -> { - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerParseInt(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerValueOf(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingOptional(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingNumberUtils(data.input)); - Assertions.assertEquals(data.expectedOutput, StringToIntConverter.convertStringToIntUsingIntegerDecode(data.input)); - }); - } - - public static class TestData{ - String input; - Integer expectedOutput; - - TestData(String input, Integer expectedOutput){ - this.input = input; - this.expectedOutput = expectedOutput; - } - } -} \ No newline at end of file