diff --git a/src/main/java/kyu7/SquareDigit.java b/src/main/java/kyu7/SquareDigit.java index 5aa3597..e27fe3a 100644 --- a/src/main/java/kyu7/SquareDigit.java +++ b/src/main/java/kyu7/SquareDigit.java @@ -1,11 +1,10 @@ package kyu7; -import static common.SafeParse.parseInt; - - public class SquareDigit { + private static final String MAX_INT = Integer.toString(Integer.MAX_VALUE); + //7 https://www.codewars.com/kata/546e2562b03326a88e000020/train/java public static int squareDigits(int n) { @@ -16,7 +15,12 @@ public static int squareDigits(int n) { n /= 10; stringBuilder.insert(0, i * i); } - return parseInt(stringBuilder.toString()); + String result = stringBuilder.toString(); + if (result.length() > MAX_INT.length() + || result.length() == MAX_INT.length() && result.compareTo(MAX_INT) > 0) { + return Integer.MAX_VALUE; + } + return Integer.parseInt(result); } } diff --git a/src/test/java/kyu7/SquareDigitTest.java b/src/test/java/kyu7/SquareDigitTest.java index e3f663b..26d0e68 100644 --- a/src/test/java/kyu7/SquareDigitTest.java +++ b/src/test/java/kyu7/SquareDigitTest.java @@ -17,6 +17,16 @@ import static kyu7.SquareDigit.*; @Tag("smoke") public class SquareDigitTest { + @Test + void squaresDigitsWhenResultFitsInAnInteger() { + assertEquals(811181, squareDigits(9119)); + } + + @Test + void capsResultsThatExceedIntegerRange() { + assertEquals(Integer.MAX_VALUE, squareDigits(99999)); + } + @Test void smokeTestsShouldExecuteApi() { quality.SmokeMethodTestHarness.verify(kyu7.SquareDigit.class);