changing branch

This commit is contained in:
Deboshree
2023-05-22 13:26:06 +05:30
parent 89a7a2f448
commit e0d73ee542
5 changed files with 8 additions and 40 deletions

View File

@@ -0,0 +1,38 @@
package com.baeldung.stringtoint;
import java.util.Optional;
import org.apache.commons.lang3.math.NumberUtils;
public class StringToIntConverter {
Optional<Integer> convertStringToIntUsingIntegerParseInt(String input){
try {
return Optional.of(Integer.parseInt(input));
} catch (NumberFormatException e) {
// log or handle the error
return Optional.empty();
}
}
Optional<Integer> convertStringToIntUsingIntegerValueOf(String input){
try {
return Optional.of(Integer.valueOf(input));
} catch (NumberFormatException e) {
// log or handle the error
return Optional.empty();
}
}
Optional<Integer> 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);
}
}

View File

@@ -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> 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> 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;
}
}
}