From 86d52816cb2542902e2f11dfdec98eff0574865d Mon Sep 17 00:00:00 2001 From: DuongBaNhat Date: Mon, 12 Sep 2022 15:56:54 +0700 Subject: [PATCH 1/4] Add file test --- .../recursion/RecursiveDigitSumTest.java | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSumTest.java diff --git a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSumTest.java b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSumTest.java new file mode 100644 index 00000000..cc8f9954 --- /dev/null +++ b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSumTest.java @@ -0,0 +1,127 @@ +package recursion; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import javax.annotation.processing.Generated; + +import org.junit.AfterClass; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +@Generated(value = "org.junit-tools-1.1.0") +public class RecursiveDigitSumTest { + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + System.out.println("BeforeClass"); + } + + @AfterClass + public static void tearDownAfterClass() throws Exception { + System.out.println("AfterClass"); + } + + @Test + public void testSuperDigitWithNull() throws Exception { + // TC1 + int k = 0; + String n = null; + String expected = "by input exception [" + n + "]"; + Exception result = assertThrows(Exception.class, + () -> RecursiveDigitSum.superDigit(n, k)); + + Assert.assertEquals(expected, result.getMessage()); + } + + @Test + public void testSuperDigitWithEmpty() throws Exception { + // TC2 + int k = 1; + String n = ""; + int expected = 0; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigitWithNegative1() throws Exception { + // TC3 + int k = -1; + String n = "1"; + String expected = "by input exception [" + k + "]"; + Exception result = assertThrows(Exception.class, + () -> RecursiveDigitSum.superDigit(n, k)); + + Assert.assertEquals(expected, result.getMessage()); + } + + @Test + public void testSuperDigit1() throws Exception { + // TC4 + int k = 0; + String n = "1"; + int expected = 1; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigitMax1() throws Exception { + // TC5 + int k = 999999999; + String n = "1"; + int expected = 9; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigit3() throws Exception { + // TC6 + int k = 0; + String n = "12"; + int expected = 3; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigit4() throws Exception { + // TC7 + int k = 1; + String n = "12"; + int expected = 3; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigitMax2() throws Exception { + // TC8 + int k = 1; + String n = "999999999"; + int expected = 9; + int result = RecursiveDigitSum.superDigit(n, k); + + Assert.assertEquals(expected, result); + } + + @Test + public void testSuperDigitWithNegative2() throws Exception { + // TC9 + int k = 1; + String n = "-a"; + String expected = "by input exception [" + n + "]"; + Exception result = assertThrows(Exception.class, + () -> RecursiveDigitSum.superDigit(n, k)); + + Assert.assertEquals(expected, result.getMessage()); + } + +} \ No newline at end of file From b12a25d0fe7fe456fd5f2291fe49017699150eef Mon Sep 17 00:00:00 2001 From: DuongBaNhat Date: Mon, 12 Sep 2022 16:06:37 +0700 Subject: [PATCH 2/4] Check n == null --- .../com/hackerrank/algorithms/recursion/RecursiveDigitSum.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java index cd9cae21..397f5535 100644 --- a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java +++ b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java @@ -22,6 +22,7 @@ public class RecursiveDigitSum { * @return recursive sum of the digits */ private static int superDigit(String n, int k) { + if(n == null) throw new Exception("by input exception [" + n + "]"); if (n.length() == 1 && k == 0) { return Integer.parseInt(n); } From 1d8b3ae01f49ee557e98d79c5cc628a53f5333ef Mon Sep 17 00:00:00 2001 From: DuongBaNhat Date: Mon, 12 Sep 2022 16:11:31 +0700 Subject: [PATCH 3/4] Check parseInt --- .../hackerrank/algorithms/recursion/RecursiveDigitSum.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java index 397f5535..811f2dbc 100644 --- a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java +++ b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java @@ -24,7 +24,11 @@ public class RecursiveDigitSum { private static int superDigit(String n, int k) { if(n == null) throw new Exception("by input exception [" + n + "]"); if (n.length() == 1 && k == 0) { - return Integer.parseInt(n); + try { + return Integer.parseInt(n); + }catch (Exception e) { + throw new Exception("by input exception [" + n + "]"); + } } Long sum = 0L; From 91ca25be0fc732d00b080550416d81b74c2e36d4 Mon Sep 17 00:00:00 2001 From: DuongBaNhat Date: Mon, 12 Sep 2022 16:14:42 +0700 Subject: [PATCH 4/4] Check parseLong --- .../hackerrank/algorithms/recursion/RecursiveDigitSum.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java index 811f2dbc..2d2da955 100644 --- a/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java +++ b/src/main/java/com/hackerrank/algorithms/recursion/RecursiveDigitSum.java @@ -34,7 +34,11 @@ private static int superDigit(String n, int k) { Long sum = 0L; char[] num = n.toCharArray(); for (int i = 0; i < num.length; i++) { - sum += Long.parseLong(String.valueOf(num[i])); + try { + sum += Long.parseLong(String.valueOf(num[i])); + } catch(Exception ex) { + throw new Exception("by input exception [" + n + "]"); + } } if (k != 0) sum *= k;