From afb3952211b4a5d9abc39302f04815224615a0d3 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Tue, 24 Sep 2024 17:23:10 +0900 Subject: [PATCH 01/27] =?UTF-8?q?1=EB=8B=A8=EA=B3=84=20-=20=ED=95=99?= =?UTF-8?q?=EC=8A=B5=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=8B=A4=EC=8A=B5=20(#5?= =?UTF-8?q?569)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/.gitkeep | 0 src/test/java/SetCollectionTest.java | 46 +++++++++++++++++++++ src/test/java/StringClassTest.java | 61 ++++++++++++++++++++++++++++ 3 files changed, 107 insertions(+) delete mode 100644 src/test/java/.gitkeep create mode 100644 src/test/java/SetCollectionTest.java create mode 100644 src/test/java/StringClassTest.java diff --git a/src/test/java/.gitkeep b/src/test/java/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java new file mode 100644 index 00000000000..827702129bb --- /dev/null +++ b/src/test/java/SetCollectionTest.java @@ -0,0 +1,46 @@ +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.HashSet; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; + +public class SetCollectionTest { + private Set<Integer> numbers; + + @BeforeEach + void setUp() { + numbers = new HashSet<>(); + numbers.add(1); + numbers.add(1); + numbers.add(2); + numbers.add(3); + } + + @Test + @DisplayName("size()로 Set의 크기 확인") + void sizeTest(){ + assertThat(numbers.size()).isEqualTo(3); + } + + + @ParameterizedTest + @ValueSource(ints = {1,2,3}) + @DisplayName("contains()로 set에 있는 값 확인") + void containsTest(int number){ + assertThat(numbers.contains(number)).isTrue(); + } + + @ParameterizedTest + @CsvSource(value ={"1:true","2:true","3:true","4:false","5:false"},delimiter = ':') + @DisplayName("contains()로 다양한 값 확인") + void containsTest2(int value, boolean expected){ + assertThat(numbers.contains(value)).isEqualTo(expected); + } +} diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java new file mode 100644 index 00000000000..93f961665a5 --- /dev/null +++ b/src/test/java/StringClassTest.java @@ -0,0 +1,61 @@ +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class StringClassTest { + @Test + @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지") + void splitTest1(){ + //given + String str = "1,2"; + + //when + String[] result = str.split(","); + + //Then + assertThat(result).containsExactly("1","2"); + } + + @Test + @DisplayName("\"1\"을 ,로 split 했을 때 {\"1\"}로 반환되는지") + void splitTest2(){ + String[] result = "1".split(","); + + assertThat(result).contains("1"); + } + + @Test + @DisplayName("substring()을 통해 ()제거") + void subStringTest(){ + String str = "(1,2)"; + + String result = str.substring(1,str.length()-1); + + assertThat(result).isEqualTo("1,2"); + } + + @Test + @DisplayName("charAt()을 통해 문자열 범위 안 문자 가져오기") + void charAt_범위_안(){ + final String str = "abc"; + + char result = str.charAt(1); + + assertThat(result).isEqualTo('b'); + } + + @Test + @DisplayName("charAt()을 통해 문자열 범위 밖 문자 가져오기") + void charAt_범위_밖(){ + final String str = "abc"; + + assertThatThrownBy(() ->{ + str.charAt(str.length()); + }).isInstanceOf(IndexOutOfBoundsException.class) + .hasMessageContaining("String index out of range:"); + } + +} From 7f59c4dd90e6bb47e300aa692eac5de3bcfb4f8c Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 08:51:20 +0900 Subject: [PATCH 02/27] feat: implement requirement 1 - when empty string or null is given return 0 --- src/test/java/SetCollectionTest.java | 8 ++++---- src/test/java/StringAddCalculator.java | 27 ++++++++++++++++++++++++++ src/test/java/StringClassTest.java | 2 +- 3 files changed, 32 insertions(+), 5 deletions(-) create mode 100644 src/test/java/StringAddCalculator.java diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java index 827702129bb..2d0e77344b4 100644 --- a/src/test/java/SetCollectionTest.java +++ b/src/test/java/SetCollectionTest.java @@ -11,7 +11,7 @@ import static org.assertj.core.api.Assertions.assertThat; -public class SetCollectionTest { +class SetCollectionTest { private Set<Integer> numbers; @BeforeEach @@ -26,15 +26,15 @@ void setUp() { @Test @DisplayName("size()로 Set의 크기 확인") void sizeTest(){ - assertThat(numbers.size()).isEqualTo(3); + assertThat(numbers).hasSize(3); } @ParameterizedTest - @ValueSource(ints = {1,2,3}) + @ValueSource(ints = {1, 2, 3}) @DisplayName("contains()로 set에 있는 값 확인") void containsTest(int number){ - assertThat(numbers.contains(number)).isTrue(); + assertThat(numbers.contains(number)); } @ParameterizedTest diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java new file mode 100644 index 00000000000..1d011dddd2e --- /dev/null +++ b/src/test/java/StringAddCalculator.java @@ -0,0 +1,27 @@ +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.EmptySource; +import org.junit.jupiter.params.provider.NullSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.Arrays; + +class StringAddCalculator { + @ParameterizedTest + @EmptySource + @NullSource + @DisplayName("빈 문자열 또는 null이면 0을 반환") + void whenGivenNullOrEmpty(String input){ + String str = input; + int result = -1; + + if(str==null || str.equals("")){ + result = 0; + } + + Assertions.assertThat(result).isEqualTo(0); + } +} diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java index 93f961665a5..337f3770b72 100644 --- a/src/test/java/StringClassTest.java +++ b/src/test/java/StringClassTest.java @@ -5,7 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; -public class StringClassTest { +class StringClassTest { @Test @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지") void splitTest1(){ From a7c96bb384313845273ff5fcb642e5ac914872cf Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:03:53 +0900 Subject: [PATCH 03/27] feat: implement requirement 2 - when a number is given as String return it as int --- src/test/java/StringAddCalculator.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java index 1d011dddd2e..254d8e0ba92 100644 --- a/src/test/java/StringAddCalculator.java +++ b/src/test/java/StringAddCalculator.java @@ -24,4 +24,13 @@ void whenGivenNullOrEmpty(String input){ Assertions.assertThat(result).isEqualTo(0); } + + @Test + @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다") + void inputOneStringReturnToInteger(){ + String str = "1"; + int result = Integer.parseInt(str); + Assertions.assertThat(result).isEqualTo(1); + } + } From e8086598d10efdb7dccf0ec0ca46da062c8d252c Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:12:17 +0900 Subject: [PATCH 04/27] feat: implement requirement 3 --- src/test/java/StringAddCalculator.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java index 254d8e0ba92..a561beed589 100644 --- a/src/test/java/StringAddCalculator.java +++ b/src/test/java/StringAddCalculator.java @@ -33,4 +33,16 @@ void inputOneStringReturnToInteger(){ Assertions.assertThat(result).isEqualTo(1); } + @Test + @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다") + void sumAndSplitWithComma(){ + String str = "1,2"; + String[] strs = str.split(","); + int result = 0; + for (String s : strs) { + result += Integer.parseInt(s); + } + Assertions.assertThat(result).isEqualTo(3); + } + } From 2724f87dea311f677b3290ac1efe08b1027c8d13 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:27:24 +0900 Subject: [PATCH 05/27] implement requirement 4 - use comma or colon as delieter --- src/test/java/StringAddCalculator.java | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java index a561beed589..99bd04ab06a 100644 --- a/src/test/java/StringAddCalculator.java +++ b/src/test/java/StringAddCalculator.java @@ -14,11 +14,11 @@ class StringAddCalculator { @EmptySource @NullSource @DisplayName("빈 문자열 또는 null이면 0을 반환") - void whenGivenNullOrEmpty(String input){ + void whenGivenNullOrEmpty(String input) { String str = input; int result = -1; - if(str==null || str.equals("")){ + if (str == null || str.equals("")) { result = 0; } @@ -27,7 +27,7 @@ void whenGivenNullOrEmpty(String input){ @Test @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다") - void inputOneStringReturnToInteger(){ + void inputOneStringReturnToInteger() { String str = "1"; int result = Integer.parseInt(str); Assertions.assertThat(result).isEqualTo(1); @@ -35,7 +35,7 @@ void inputOneStringReturnToInteger(){ @Test @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다") - void sumAndSplitWithComma(){ + void sumAndSplitWithComma() { String str = "1,2"; String[] strs = str.split(","); int result = 0; @@ -45,4 +45,16 @@ void sumAndSplitWithComma(){ Assertions.assertThat(result).isEqualTo(3); } + @Test + @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다") + void sumAndSplitWithCommaOrColon() { + String str = "1,2:3"; + String[] strs = str.split(",|:"); + int result = 0; + for (String s : strs) { + result += Integer.parseInt(s); + } + Assertions.assertThat(result).isEqualTo(6); + } + } From 7255cecbf3a7271026c418dc7da7405e3568d292 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 12:04:55 +0900 Subject: [PATCH 06/27] feat: implement requirement 5 custom delimeter test --- src/test/java/StringAddCalculator.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculator.java index 99bd04ab06a..c3486a4c380 100644 --- a/src/test/java/StringAddCalculator.java +++ b/src/test/java/StringAddCalculator.java @@ -8,6 +8,8 @@ import org.junit.jupiter.params.provider.ValueSource; import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; class StringAddCalculator { @ParameterizedTest @@ -57,4 +59,21 @@ void sumAndSplitWithCommaOrColon() { Assertions.assertThat(result).isEqualTo(6); } + @Test + @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다") + void customDelimeter() { + Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3"); + String[] tokens; + int result = 0; + if (m.find()) { + String customDelimiter = m.group(1); + tokens = m.group(2).split(customDelimiter); + // 덧셈 구현 + for (String token : tokens) { + result +=Integer.parseInt(token); + } + Assertions.assertThat(result).isEqualTo(6); + } + } + } From d751a21f6c60402f15e66c5115fe4f0dc8238d04 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:08:52 +0900 Subject: [PATCH 07/27] chore : rename file - StringAddCalculator to StringAddCalculatorTest (src/test/java) --- ...ringAddCalculator.java => StringAddCalculatorTest.java} | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) rename src/test/java/{StringAddCalculator.java => StringAddCalculatorTest.java} (91%) diff --git a/src/test/java/StringAddCalculator.java b/src/test/java/StringAddCalculatorTest.java similarity index 91% rename from src/test/java/StringAddCalculator.java rename to src/test/java/StringAddCalculatorTest.java index c3486a4c380..863b5488e2b 100644 --- a/src/test/java/StringAddCalculator.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -2,16 +2,13 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.EmptySource; import org.junit.jupiter.params.provider.NullSource; -import org.junit.jupiter.params.provider.ValueSource; -import java.util.Arrays; import java.util.regex.Matcher; import java.util.regex.Pattern; -class StringAddCalculator { +class StringAddCalculatorTest { @ParameterizedTest @EmptySource @NullSource @@ -70,7 +67,7 @@ void customDelimeter() { tokens = m.group(2).split(customDelimiter); // 덧셈 구현 for (String token : tokens) { - result +=Integer.parseInt(token); + result += Integer.parseInt(token); } Assertions.assertThat(result).isEqualTo(6); } From 81050ba94cf88bc37bcc8a9244336c717524047f Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:29:59 +0900 Subject: [PATCH 08/27] feat : implement requirement 6 - when negative number is given, RuntimeException is thrown --- src/main/java/StringAddCalculator.java | 7 +++++++ src/test/java/StringAddCalculatorTest.java | 15 +++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/main/java/StringAddCalculator.java diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java new file mode 100644 index 00000000000..49dc72c0ac4 --- /dev/null +++ b/src/main/java/StringAddCalculator.java @@ -0,0 +1,7 @@ +public class StringAddCalculator { + public static void validNegative(int num) throws RuntimeException{ + if (num < 0) { + throw new RuntimeException(); + } + } +} diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 863b5488e2b..ce2e3d6b99f 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -73,4 +73,19 @@ void customDelimeter() { } } + @Test + @DisplayName("음수를 전달할 경우 RuntimeException") + void negativeReturnRuntimeException() { + String str = "-1,2,3"; + String[] strs = str.split(","); + final int result = 0; + for (String s : strs) { + int num = Integer.parseInt(s); + if (num < 0) { + Assertions.assertThatThrownBy(() -> + StringAddCalculator.validNegative(num)) + .isInstanceOf(RuntimeException.class); + } + } + } } From a6163b76e5b27f5893f2ffe2a40dca902796bb8d Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 15:43:27 +0900 Subject: [PATCH 09/27] =?UTF-8?q?chore=20:=20=EB=AF=B8=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C=20=EB=B0=8F=20?= =?UTF-8?q?=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80=20-=20give=20when=20the?= =?UTF-8?q?n=20=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80=20(src/test/java/St?= =?UTF-8?q?ringAddCalculatorTest)=20-=20.gitkeep=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(src/main/java)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/.gitkeep | 0 src/test/java/StringAddCalculatorTest.java | 24 ++++++++++++++++++++++ 2 files changed, 24 insertions(+) delete mode 100644 src/main/java/.gitkeep diff --git a/src/main/java/.gitkeep b/src/main/java/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index ce2e3d6b99f..e9326dc5885 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -14,54 +14,75 @@ class StringAddCalculatorTest { @NullSource @DisplayName("빈 문자열 또는 null이면 0을 반환") void whenGivenNullOrEmpty(String input) { + // give String str = input; int result = -1; + //when if (str == null || str.equals("")) { result = 0; } + //then Assertions.assertThat(result).isEqualTo(0); } @Test @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다") void inputOneStringReturnToInteger() { + //given String str = "1"; + + //when int result = Integer.parseInt(str); + + //then Assertions.assertThat(result).isEqualTo(1); } @Test @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다") void sumAndSplitWithComma() { + //give String str = "1,2"; String[] strs = str.split(","); int result = 0; + + //when for (String s : strs) { result += Integer.parseInt(s); } + + //then Assertions.assertThat(result).isEqualTo(3); } @Test @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다") void sumAndSplitWithCommaOrColon() { + //give String str = "1,2:3"; String[] strs = str.split(",|:"); int result = 0; + + //when for (String s : strs) { result += Integer.parseInt(s); } + + //then Assertions.assertThat(result).isEqualTo(6); } @Test @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다") void customDelimeter() { + //give Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3"); String[] tokens; int result = 0; + + //when & then if (m.find()) { String customDelimiter = m.group(1); tokens = m.group(2).split(customDelimiter); @@ -76,9 +97,12 @@ void customDelimeter() { @Test @DisplayName("음수를 전달할 경우 RuntimeException") void negativeReturnRuntimeException() { + //give String str = "-1,2,3"; String[] strs = str.split(","); final int result = 0; + + //when & then for (String s : strs) { int num = Integer.parseInt(s); if (num < 0) { From 823b6cbae04340989ccd140b7a756afb6890c186 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:03:58 +0900 Subject: [PATCH 10/27] =?UTF-8?q?chore=20:=20=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EB=82=B4=EC=9A=A9=20=EC=B4=88=EA=B8=B0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/StringAddCalculatorTest.java | 102 --------------------- 1 file changed, 102 deletions(-) diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index e9326dc5885..ffd208c2438 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -9,107 +9,5 @@ import java.util.regex.Pattern; class StringAddCalculatorTest { - @ParameterizedTest - @EmptySource - @NullSource - @DisplayName("빈 문자열 또는 null이면 0을 반환") - void whenGivenNullOrEmpty(String input) { - // give - String str = input; - int result = -1; - //when - if (str == null || str.equals("")) { - result = 0; - } - - //then - Assertions.assertThat(result).isEqualTo(0); - } - - @Test - @DisplayName("하나의 문자열로 입력할 경우 해당 숫자를 반환한다") - void inputOneStringReturnToInteger() { - //given - String str = "1"; - - //when - int result = Integer.parseInt(str); - - //then - Assertions.assertThat(result).isEqualTo(1); - } - - @Test - @DisplayName("숫자 두 개를 컴파(,) 구분자로 입력할 경우 두 숫자의 합을 반환한다") - void sumAndSplitWithComma() { - //give - String str = "1,2"; - String[] strs = str.split(","); - int result = 0; - - //when - for (String s : strs) { - result += Integer.parseInt(s); - } - - //then - Assertions.assertThat(result).isEqualTo(3); - } - - @Test - @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다") - void sumAndSplitWithCommaOrColon() { - //give - String str = "1,2:3"; - String[] strs = str.split(",|:"); - int result = 0; - - //when - for (String s : strs) { - result += Integer.parseInt(s); - } - - //then - Assertions.assertThat(result).isEqualTo(6); - } - - @Test - @DisplayName(" \"//\" 와 \"\\n\" 문자 사이에 커스텀 구분자를 지정할 수 있다") - void customDelimeter() { - //give - Matcher m = Pattern.compile("//(.)\n(.*)").matcher("//;\\n1;2;3"); - String[] tokens; - int result = 0; - - //when & then - if (m.find()) { - String customDelimiter = m.group(1); - tokens = m.group(2).split(customDelimiter); - // 덧셈 구현 - for (String token : tokens) { - result += Integer.parseInt(token); - } - Assertions.assertThat(result).isEqualTo(6); - } - } - - @Test - @DisplayName("음수를 전달할 경우 RuntimeException") - void negativeReturnRuntimeException() { - //give - String str = "-1,2,3"; - String[] strs = str.split(","); - final int result = 0; - - //when & then - for (String s : strs) { - int num = Integer.parseInt(s); - if (num < 0) { - Assertions.assertThatThrownBy(() -> - StringAddCalculator.validNegative(num)) - .isInstanceOf(RuntimeException.class); - } - } - } } From bedc9d1068073a813cf819224cc587797db19cc2 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 17:16:32 +0900 Subject: [PATCH 11/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD1=20=EA=B5=AC=ED=98=84=20-=20=EB=B9=88=20=EB=AC=B8?= =?UTF-8?q?=EC=9E=90=EC=97=B4=20=EB=98=90=EB=8A=94=20null=20=EC=9D=B4?= =?UTF-8?q?=EB=A9=B4=200=EC=9D=84=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 7 +++++++ src/test/java/StringAddCalculatorTest.java | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 49dc72c0ac4..f5197d4fa3a 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -4,4 +4,11 @@ public static void validNegative(int num) throws RuntimeException{ throw new RuntimeException(); } } + + public static int emptyOrNull(String input) { + if(input == null||input.isEmpty()) { + return 0; + } + return 1; + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index ffd208c2438..a7c25b7df8d 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -9,5 +9,13 @@ import java.util.regex.Pattern; class StringAddCalculatorTest { + @ParameterizedTest + @EmptySource + @NullSource + @DisplayName("빈 문자열 또는 null이면 0을 반환") + void whenGivenNullOrEmpty(String input) { + int result = StringAddCalculator.emptyOrNull(input); + Assertions.assertThat(result).isEqualTo(0); + } } From 00b6c48e85e6ad46867b7d5a0240bae4c312d0d9 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 21:52:28 +0900 Subject: [PATCH 12/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD2=20=EA=B5=AC=ED=98=84=20-=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=ED=95=98=EB=82=98=20=EC=9E=85=EB=A0=A5=ED=95=A0=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=20=ED=95=B4=EB=8B=B9=20=EC=88=AB=EC=9E=90=20=EB=B0=98?= =?UTF-8?q?=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 4 ++++ src/test/java/StringAddCalculatorTest.java | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index f5197d4fa3a..abdbb540d4c 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -11,4 +11,8 @@ public static int emptyOrNull(String input) { } return 1; } + + public static int processOneNumberString(String input) { + return Integer.parseInt(input); + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index a7c25b7df8d..15b957660e8 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -2,12 +2,16 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.EmptySource; import org.junit.jupiter.params.provider.NullSource; +import org.junit.jupiter.params.provider.ValueSource; import java.util.regex.Matcher; import java.util.regex.Pattern; +import static org.assertj.core.api.Assertions.assertThat; + class StringAddCalculatorTest { @ParameterizedTest @EmptySource @@ -16,6 +20,15 @@ class StringAddCalculatorTest { void whenGivenNullOrEmpty(String input) { int result = StringAddCalculator.emptyOrNull(input); - Assertions.assertThat(result).isEqualTo(0); + assertThat(result).isEqualTo(0); } + + @Test + @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다") + void inputOneNumberStringReturnToInteger(){ + int intNum = StringAddCalculator.processOneNumberString("1"); + + assertThat(intNum).isEqualTo(1); + } + } From 4f9474d187841712e94f8a9ee630c6c06b466bf1 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:03:35 +0900 Subject: [PATCH 13/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=203=20=EA=B5=AC=ED=98=84=20-=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=EB=91=90=EA=B0=9C=EB=A5=BC=20=EC=BB=B4=EB=A7=88=20=EA=B5=AC?= =?UTF-8?q?=EB=B6=84=EC=9E=90=EB=A1=9C=20=EC=9E=85=EB=A0=A5=ED=95=A0=20?= =?UTF-8?q?=EA=B2=BD=EC=9A=B0=20=EB=91=90=20=EC=88=AB=EC=9E=90=EC=9D=98=20?= =?UTF-8?q?=ED=95=A9=20=EB=B0=98=ED=99=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 13 +++++++++++-- src/test/java/StringAddCalculatorTest.java | 14 +++++++++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index abdbb540d4c..db08ead2f53 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -1,12 +1,12 @@ public class StringAddCalculator { - public static void validNegative(int num) throws RuntimeException{ + public static void validNegative(int num) throws RuntimeException { if (num < 0) { throw new RuntimeException(); } } public static int emptyOrNull(String input) { - if(input == null||input.isEmpty()) { + if (input == null || input.isEmpty()) { return 0; } return 1; @@ -15,4 +15,13 @@ public static int emptyOrNull(String input) { public static int processOneNumberString(String input) { return Integer.parseInt(input); } + + public static int splitAndSumWithComma(String input) { + String[] splited = input.split(","); + int summation = 0; + for (String s : splited) { + summation += Integer.parseInt(s); + } + return summation; + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 15b957660e8..fe11b3a0a67 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -25,10 +25,18 @@ void whenGivenNullOrEmpty(String input) { @Test @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다") - void inputOneNumberStringReturnToInteger(){ - int intNum = StringAddCalculator.processOneNumberString("1"); + void inputOneNumberStringReturnToInteger() { + int result = StringAddCalculator.processOneNumberString("1"); - assertThat(intNum).isEqualTo(1); + assertThat(result).isEqualTo(1); } + @ParameterizedTest + @ValueSource(strings ={"1,2"}) + @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환") + void splitAndSumWithComma(String input) { + int result = StringAddCalculator.splitAndSumWithComma(input); + + assertThat(result).isEqualTo(3); + } } From 7da87902532ac475500c77ca247eb728bd96b6f3 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:14:45 +0900 Subject: [PATCH 14/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=204=20=EA=B5=AC=ED=98=84=20-=20=EA=B5=AC=EB=B6=84?= =?UTF-8?q?=EC=9E=90=EB=A5=BC=20=EC=BB=B4=EB=A7=88=20=EC=9D=B4=EC=99=B8?= =?UTF-8?q?=EC=97=90=20=EC=BD=9C=EB=A1=A0=EC=9D=84=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=ED=95=A0=20=EC=88=98=20=EC=9E=88=EB=8B=A4=20-=20=EC=82=AC?= =?UTF-8?q?=EC=9A=A9=EB=90=98=EC=A7=80=20=EC=95=8A=EB=8A=94=20import=20?= =?UTF-8?q?=EA=B5=AC=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 9 +++++++++ src/test/java/StringAddCalculatorTest.java | 16 ++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index db08ead2f53..b7ca379d1b7 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -24,4 +24,13 @@ public static int splitAndSumWithComma(String input) { } return summation; } + + public static int splitAndSumWithCommaOrColon(String input) { + String[] splited = input.split(",|:"); + int summation = 0; + for (String s : splited) { + summation += Integer.parseInt(s); + } + return summation; + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index fe11b3a0a67..8c10411cc8c 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -1,15 +1,10 @@ -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.CsvSource; import org.junit.jupiter.params.provider.EmptySource; import org.junit.jupiter.params.provider.NullSource; import org.junit.jupiter.params.provider.ValueSource; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import static org.assertj.core.api.Assertions.assertThat; class StringAddCalculatorTest { @@ -32,11 +27,20 @@ void inputOneNumberStringReturnToInteger() { } @ParameterizedTest - @ValueSource(strings ={"1,2"}) + @ValueSource(strings = {"1,2"}) @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환") void splitAndSumWithComma(String input) { int result = StringAddCalculator.splitAndSumWithComma(input); assertThat(result).isEqualTo(3); } + + @ParameterizedTest + @ValueSource(strings = {"1,2:3"}) + @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다") + void splitAndSumWithCommaOrColon(String input) { + int result = StringAddCalculator.splitAndSumWithCommaOrColon(input); + + assertThat(result).isEqualTo(6); + } } From e557d7aaad4e6dae6b4df1e2713c7f688eff02af Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:29:19 +0900 Subject: [PATCH 15/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=205=20=EA=B5=AC=ED=98=84=20-=20=EC=BB=A4=EC=8A=A4?= =?UTF-8?q?=ED=85=80=20=EA=B5=AC=EB=B6=84=EC=9E=90=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EB=A5=BC=20=EC=A7=80=EC=A0=95=ED=95=A0=20=EC=88=98=20=EC=9E=88?= =?UTF-8?q?=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 18 ++++++++++++++++++ src/test/java/SetCollectionTest.java | 1 - src/test/java/StringAddCalculatorTest.java | 10 ++++++++++ src/test/java/StringClassTest.java | 1 - 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index b7ca379d1b7..414791aed6b 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -1,3 +1,6 @@ +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class StringAddCalculator { public static void validNegative(int num) throws RuntimeException { if (num < 0) { @@ -33,4 +36,19 @@ public static int splitAndSumWithCommaOrColon(String input) { } return summation; } + + public static int splitWithCustomDelimeter(String input) { + Matcher m = Pattern.compile("//(.)\n(.*)").matcher(input); + int summation = 0; + if (m.find()) { + String customDelimiter = m.group(1); + String[] tokens = m.group(2).split(customDelimiter); + for (String token : tokens) { + summation += Integer.parseInt(token); + } + return summation; + } + return -1; + } + } diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java index 2d0e77344b4..78b6a5d00ce 100644 --- a/src/test/java/SetCollectionTest.java +++ b/src/test/java/SetCollectionTest.java @@ -1,4 +1,3 @@ -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 8c10411cc8c..e7ac9dec36f 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -43,4 +43,14 @@ void splitAndSumWithCommaOrColon(String input) { assertThat(result).isEqualTo(6); } + + @ParameterizedTest + @ValueSource(strings = {"//;\n1;2;3"}) + @DisplayName("\"//\"와 \"\\n\" 사이의 문자를 커스텀 구분자 사용") + void customDelimeter(String input) { + int result = StringAddCalculator.splitWithCustomDelimeter(input); + + assertThat(result).isEqualTo(6); + } + } diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java index 337f3770b72..656b5c8a1d8 100644 --- a/src/test/java/StringClassTest.java +++ b/src/test/java/StringClassTest.java @@ -1,4 +1,3 @@ -import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; From 7415048c46818529a40280a4ca4591fc5e2d9ebd Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 22:31:47 +0900 Subject: [PATCH 16/27] =?UTF-8?q?feat=20:=20=EC=9A=94=EA=B5=AC=EC=82=AC?= =?UTF-8?q?=ED=95=AD=206=20=EA=B5=AC=ED=98=84=20-=20=EC=9D=8C=EC=88=98?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=84=EB=8B=AC=ED=95=A0=20=EA=B2=BD=EC=9A=B0=20?= =?UTF-8?q?RuntimeException=20=EC=98=88=EC=99=B8=EA=B0=80=20=EB=B0=9C?= =?UTF-8?q?=EC=83=9D=ED=95=B4=EC=95=BC=20=ED=95=9C=EB=8B=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 9 +++++++++ src/test/java/StringAddCalculatorTest.java | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 414791aed6b..e4ec251e590 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -51,4 +51,13 @@ public static int splitWithCustomDelimeter(String input) { return -1; } + public static void negativeValidation(String input) { + String[] splited = input.split(","); + for (String s : splited) { + if (Integer.parseInt(s) < 0) + { + throw new RuntimeException(); + } + } + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index e7ac9dec36f..bc50f9af953 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -6,6 +6,7 @@ import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; class StringAddCalculatorTest { @ParameterizedTest @@ -53,4 +54,11 @@ void customDelimeter(String input) { assertThat(result).isEqualTo(6); } + @ParameterizedTest + @ValueSource(strings = {"-1,2,3"}) + @DisplayName("음수를 전달할 경우 RuntimeException 발생") + void negativeThrowRuntimeException(String input){ + assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input)) + .isInstanceOf(RuntimeException.class); + } } From 3fad8a68b2d774a668838d6f592b4d782f983b41 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Fri, 27 Sep 2024 23:34:16 +0900 Subject: [PATCH 17/27] =?UTF-8?q?chore=20:=20=EC=83=81=EC=88=98=EC=B6=94?= =?UTF-8?q?=EC=B6=9C=20=EB=B0=8F=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C(validnegative)=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index e4ec251e590..3cda6f4f4c0 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -2,11 +2,10 @@ import java.util.regex.Pattern; public class StringAddCalculator { - public static void validNegative(int num) throws RuntimeException { - if (num < 0) { - throw new RuntimeException(); - } - } + + public static final String COMMA = ","; + public static final String DELIMETER = ",|:"; + public static final String CUSTOMDELIMETER = "//(.)\n(.*)"; public static int emptyOrNull(String input) { if (input == null || input.isEmpty()) { @@ -20,7 +19,7 @@ public static int processOneNumberString(String input) { } public static int splitAndSumWithComma(String input) { - String[] splited = input.split(","); + String[] splited = input.split(COMMA); int summation = 0; for (String s : splited) { summation += Integer.parseInt(s); @@ -29,7 +28,7 @@ public static int splitAndSumWithComma(String input) { } public static int splitAndSumWithCommaOrColon(String input) { - String[] splited = input.split(",|:"); + String[] splited = input.split(DELIMETER); int summation = 0; for (String s : splited) { summation += Integer.parseInt(s); @@ -38,7 +37,7 @@ public static int splitAndSumWithCommaOrColon(String input) { } public static int splitWithCustomDelimeter(String input) { - Matcher m = Pattern.compile("//(.)\n(.*)").matcher(input); + Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input); int summation = 0; if (m.find()) { String customDelimiter = m.group(1); @@ -52,7 +51,7 @@ public static int splitWithCustomDelimeter(String input) { } public static void negativeValidation(String input) { - String[] splited = input.split(","); + String[] splited = input.split(COMMA); for (String s : splited) { if (Integer.parseInt(s) < 0) { From c8ea667507c8bb9f27e3129d6e92f56cdc84dad4 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 00:10:33 +0900 Subject: [PATCH 18/27] =?UTF-8?q?refactor=20:=20=EC=88=AB=EC=9E=90=20?= =?UTF-8?q?=ED=95=A9=EC=9D=84=20=EA=B5=AC=ED=95=98=EB=8A=94=20=EA=B3=B5?= =?UTF-8?q?=ED=86=B5=20=EB=A1=9C=EC=A7=81,=20calculateSum=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=20=EC=B6=94=EC=B6=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 3cda6f4f4c0..e30f628cdf6 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -20,19 +20,13 @@ public static int processOneNumberString(String input) { public static int splitAndSumWithComma(String input) { String[] splited = input.split(COMMA); - int summation = 0; - for (String s : splited) { - summation += Integer.parseInt(s); - } + int summation = calculateSum(splited); return summation; } public static int splitAndSumWithCommaOrColon(String input) { String[] splited = input.split(DELIMETER); - int summation = 0; - for (String s : splited) { - summation += Integer.parseInt(s); - } + int summation = calculateSum(splited); return summation; } @@ -42,9 +36,7 @@ public static int splitWithCustomDelimeter(String input) { if (m.find()) { String customDelimiter = m.group(1); String[] tokens = m.group(2).split(customDelimiter); - for (String token : tokens) { - summation += Integer.parseInt(token); - } + summation = calculateSum(tokens); return summation; } return -1; @@ -59,4 +51,13 @@ public static void negativeValidation(String input) { } } } + + private static int calculateSum(String[] splited) { + int summation = 0; + for (String s : splited) { + summation += Integer.parseInt(s); + } + return summation; + } + } From 15b23716cc09bf4539ee7ed0546c7f1184b6d4f2 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 00:41:24 +0900 Subject: [PATCH 19/27] =?UTF-8?q?chore=20:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=A7=80=EC=97=AD=EB=B3=80=EC=88=98=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0=20-=20splitAndSumWithComma=20(src/main/java)=20-=20sp?= =?UTF-8?q?litAndSumWithCommaOrColon=20(src/main/java)=20-=20splitWithCust?= =?UTF-8?q?omDelimeter=20(src/main/java)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index e30f628cdf6..da6bcc7835d 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -20,14 +20,12 @@ public static int processOneNumberString(String input) { public static int splitAndSumWithComma(String input) { String[] splited = input.split(COMMA); - int summation = calculateSum(splited); - return summation; + return calculateSum(splited); } public static int splitAndSumWithCommaOrColon(String input) { String[] splited = input.split(DELIMETER); - int summation = calculateSum(splited); - return summation; + return calculateSum(splited); } public static int splitWithCustomDelimeter(String input) { @@ -36,8 +34,7 @@ public static int splitWithCustomDelimeter(String input) { if (m.find()) { String customDelimiter = m.group(1); String[] tokens = m.group(2).split(customDelimiter); - summation = calculateSum(tokens); - return summation; + return calculateSum(tokens); } return -1; } From 2249f0928f683b93eafa024bcc7bd456ba66e248 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 01:14:21 +0900 Subject: [PATCH 20/27] =?UTF-8?q?refactor=20:=20if=EB=AC=B8=20validNegativ?= =?UTF-8?q?eNumberString=EB=A9=94=EC=84=9C=EB=93=9C=EB=A1=9C=20=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC=20-=20negativeValidation=20(src/main/java/St?= =?UTF-8?q?ringAddCalculator.class)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index da6bcc7835d..64235ae71aa 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -30,7 +30,6 @@ public static int splitAndSumWithCommaOrColon(String input) { public static int splitWithCustomDelimeter(String input) { Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input); - int summation = 0; if (m.find()) { String customDelimiter = m.group(1); String[] tokens = m.group(2).split(customDelimiter); @@ -42,10 +41,14 @@ public static int splitWithCustomDelimeter(String input) { public static void negativeValidation(String input) { String[] splited = input.split(COMMA); for (String s : splited) { - if (Integer.parseInt(s) < 0) - { - throw new RuntimeException(); - } + validNegativeNumberString(s); + } + } + + private static void validNegativeNumberString(String s) { + if (Integer.parseInt(s) < 0) + { + throw new RuntimeException(); } } From 188ea61acb9ad125499f534a0d34a6069cc5db4a Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 01:37:21 +0900 Subject: [PATCH 21/27] =?UTF-8?q?refactor=20:=20=EC=A0=95=EC=88=98=20?= =?UTF-8?q?=ED=98=95=EB=B3=80=ED=99=98=20toInt()=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=EB=A1=9C=20=EC=B1=85=EC=9E=84=20=EB=B6=84=EB=A6=AC=20?= =?UTF-8?q?-=20calculateSum(src/main/java/StringAddCalculator.class)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 64235ae71aa..4b7f9e18048 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -20,12 +20,12 @@ public static int processOneNumberString(String input) { public static int splitAndSumWithComma(String input) { String[] splited = input.split(COMMA); - return calculateSum(splited); + return calculateSum(toInt(splited)); } public static int splitAndSumWithCommaOrColon(String input) { String[] splited = input.split(DELIMETER); - return calculateSum(splited); + return calculateSum(toInt(splited)); } public static int splitWithCustomDelimeter(String input) { @@ -33,7 +33,7 @@ public static int splitWithCustomDelimeter(String input) { if (m.find()) { String customDelimiter = m.group(1); String[] tokens = m.group(2).split(customDelimiter); - return calculateSum(tokens); + return calculateSum(toInt(tokens)); } return -1; } @@ -46,18 +46,25 @@ public static void negativeValidation(String input) { } private static void validNegativeNumberString(String s) { - if (Integer.parseInt(s) < 0) - { + if (Integer.parseInt(s) < 0) { throw new RuntimeException(); } } - private static int calculateSum(String[] splited) { + private static int calculateSum(int[] splited) { int summation = 0; - for (String s : splited) { - summation += Integer.parseInt(s); + for (int num : splited) { + summation += num; } return summation; } + private static int[] toInt(String[] splited) { + int[] numbers = new int[splited.length]; + for (int i = 0; i < splited.length; i++) { + numbers[i] = Integer.parseInt(splited[i]); + } + return numbers; + } + } From 8604a7e3b9a73ad7410b4ecf1b656bf6f2cb296c Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 01:43:45 +0900 Subject: [PATCH 22/27] =?UTF-8?q?chore=20:=20=EC=BD=94=EB=93=9C=20?= =?UTF-8?q?=EC=9E=90=EB=8F=99=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/SetCollectionTest.java | 8 ++++---- src/test/java/StringAddCalculatorTest.java | 2 +- src/test/java/StringClassTest.java | 16 ++++++++-------- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/test/java/SetCollectionTest.java b/src/test/java/SetCollectionTest.java index 78b6a5d00ce..8a596cff7c8 100644 --- a/src/test/java/SetCollectionTest.java +++ b/src/test/java/SetCollectionTest.java @@ -24,7 +24,7 @@ void setUp() { @Test @DisplayName("size()로 Set의 크기 확인") - void sizeTest(){ + void sizeTest() { assertThat(numbers).hasSize(3); } @@ -32,14 +32,14 @@ void sizeTest(){ @ParameterizedTest @ValueSource(ints = {1, 2, 3}) @DisplayName("contains()로 set에 있는 값 확인") - void containsTest(int number){ + void containsTest(int number) { assertThat(numbers.contains(number)); } @ParameterizedTest - @CsvSource(value ={"1:true","2:true","3:true","4:false","5:false"},delimiter = ':') + @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':') @DisplayName("contains()로 다양한 값 확인") - void containsTest2(int value, boolean expected){ + void containsTest2(int value, boolean expected) { assertThat(numbers.contains(value)).isEqualTo(expected); } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index bc50f9af953..a30b4dc68fb 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -57,7 +57,7 @@ void customDelimeter(String input) { @ParameterizedTest @ValueSource(strings = {"-1,2,3"}) @DisplayName("음수를 전달할 경우 RuntimeException 발생") - void negativeThrowRuntimeException(String input){ + void negativeThrowRuntimeException(String input) { assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input)) .isInstanceOf(RuntimeException.class); } diff --git a/src/test/java/StringClassTest.java b/src/test/java/StringClassTest.java index 656b5c8a1d8..861ae05330e 100644 --- a/src/test/java/StringClassTest.java +++ b/src/test/java/StringClassTest.java @@ -7,7 +7,7 @@ class StringClassTest { @Test @DisplayName("\"1,2\"를 ,로 split 했을 때 분리되는지") - void splitTest1(){ + void splitTest1() { //given String str = "1,2"; @@ -15,12 +15,12 @@ void splitTest1(){ String[] result = str.split(","); //Then - assertThat(result).containsExactly("1","2"); + assertThat(result).containsExactly("1", "2"); } @Test @DisplayName("\"1\"을 ,로 split 했을 때 {\"1\"}로 반환되는지") - void splitTest2(){ + void splitTest2() { String[] result = "1".split(","); assertThat(result).contains("1"); @@ -28,17 +28,17 @@ void splitTest2(){ @Test @DisplayName("substring()을 통해 ()제거") - void subStringTest(){ + void subStringTest() { String str = "(1,2)"; - String result = str.substring(1,str.length()-1); + String result = str.substring(1, str.length() - 1); assertThat(result).isEqualTo("1,2"); } @Test @DisplayName("charAt()을 통해 문자열 범위 안 문자 가져오기") - void charAt_범위_안(){ + void charAt_범위_안() { final String str = "abc"; char result = str.charAt(1); @@ -48,10 +48,10 @@ void subStringTest(){ @Test @DisplayName("charAt()을 통해 문자열 범위 밖 문자 가져오기") - void charAt_범위_밖(){ + void charAt_범위_밖() { final String str = "abc"; - assertThatThrownBy(() ->{ + assertThatThrownBy(() -> { str.charAt(str.length()); }).isInstanceOf(IndexOutOfBoundsException.class) .hasMessageContaining("String index out of range:"); From 3f0e23421d8600d62e272c73d8de878bc81e6f52 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 16:37:39 +0900 Subject: [PATCH 23/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=201,=202=20=EC=9E=AC=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EB=B0=8F=20private()=20=EC=83=9D=EC=84=B1=EC=9E=90=20-=20?= =?UTF-8?q?=EC=95=84=EB=9E=98=20=EB=A9=94=EC=84=9C=EB=93=9C=EB=93=A4?= =?UTF-8?q?=EC=9D=84=20splitAndSum=EC=97=90=20=EC=9E=AC=EA=B5=AC=ED=98=84?= =?UTF-8?q?=20-=20emptyOrNull=20-=20processOneNumberString?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 14 +++++++------- src/test/java/StringAddCalculatorTest.java | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 4b7f9e18048..22ac49b6f1d 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -6,15 +6,16 @@ public class StringAddCalculator { public static final String COMMA = ","; public static final String DELIMETER = ",|:"; public static final String CUSTOMDELIMETER = "//(.)\n(.*)"; + public static final int DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING = 0; - public static int emptyOrNull(String input) { - if (input == null || input.isEmpty()) { - return 0; - } - return 1; + private StringAddCalculator() { + throw new RuntimeException(); } - public static int processOneNumberString(String input) { + public static int splitAndSum(String input) { + if (input == null || input.isEmpty()) { + return DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING; + } return Integer.parseInt(input); } @@ -66,5 +67,4 @@ private static int[] toInt(String[] splited) { } return numbers; } - } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index a30b4dc68fb..962081887da 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -14,7 +14,7 @@ class StringAddCalculatorTest { @NullSource @DisplayName("빈 문자열 또는 null이면 0을 반환") void whenGivenNullOrEmpty(String input) { - int result = StringAddCalculator.emptyOrNull(input); + int result = StringAddCalculator.splitAndSum(input); assertThat(result).isEqualTo(0); } @@ -22,7 +22,7 @@ void whenGivenNullOrEmpty(String input) { @Test @DisplayName("숫자 하나를 입력할 경우 해당 숫자를 반환한다") void inputOneNumberStringReturnToInteger() { - int result = StringAddCalculator.processOneNumberString("1"); + int result = StringAddCalculator.splitAndSum("1"); assertThat(result).isEqualTo(1); } From 639fcfc8010a28faf8b65596d23e64185cd001fa Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 21:50:42 +0900 Subject: [PATCH 24/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=203=20=EC=9E=AC=EA=B5=AC=ED=98=84=20-=20spli?= =?UTF-8?q?tAndSumWithComma=EB=A5=BC=20splitAndSum=EC=97=90=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 18 +++++++++++------- src/test/java/StringAddCalculatorTest.java | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 22ac49b6f1d..248a8eb7cb4 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -6,7 +6,7 @@ public class StringAddCalculator { public static final String COMMA = ","; public static final String DELIMETER = ",|:"; public static final String CUSTOMDELIMETER = "//(.)\n(.*)"; - public static final int DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING = 0; + public static final int DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING = 0; private StringAddCalculator() { throw new RuntimeException(); @@ -14,12 +14,8 @@ private StringAddCalculator() { public static int splitAndSum(String input) { if (input == null || input.isEmpty()) { - return DEFAULTVALUE_OF_NULL_AND_EMPTYSTRING; + return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING; } - return Integer.parseInt(input); - } - - public static int splitAndSumWithComma(String input) { String[] splited = input.split(COMMA); return calculateSum(toInt(splited)); } @@ -63,8 +59,16 @@ private static int calculateSum(int[] splited) { private static int[] toInt(String[] splited) { int[] numbers = new int[splited.length]; for (int i = 0; i < splited.length; i++) { - numbers[i] = Integer.parseInt(splited[i]); + numbers[i] = Integer.parseInt(checkDigit(splited[i])); } return numbers; } + private static String checkDigit(String input) { + for (char c : input.toCharArray()) { + if(!Character.isDigit(c)) { + throw new RuntimeException(); + } + } + return input; + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 962081887da..6039ad49986 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -31,7 +31,7 @@ void inputOneNumberStringReturnToInteger() { @ValueSource(strings = {"1,2"}) @DisplayName("숫자 두개를 컴마(,) 구분자로 입력할 경우 두 숫자의 합을 반환") void splitAndSumWithComma(String input) { - int result = StringAddCalculator.splitAndSumWithComma(input); + int result = StringAddCalculator.splitAndSum(input); assertThat(result).isEqualTo(3); } From 4a4aa080f84260b07957833d8ab637af62c98669 Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 21:53:48 +0900 Subject: [PATCH 25/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=204=20=EC=9E=AC=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 6 +----- src/test/java/StringAddCalculatorTest.java | 2 +- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 248a8eb7cb4..88de84f2940 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -16,15 +16,11 @@ public static int splitAndSum(String input) { if (input == null || input.isEmpty()) { return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING; } - String[] splited = input.split(COMMA); - return calculateSum(toInt(splited)); - } - - public static int splitAndSumWithCommaOrColon(String input) { String[] splited = input.split(DELIMETER); return calculateSum(toInt(splited)); } + public static int splitWithCustomDelimeter(String input) { Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input); if (m.find()) { diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 6039ad49986..a80803d81ab 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -40,7 +40,7 @@ void splitAndSumWithComma(String input) { @ValueSource(strings = {"1,2:3"}) @DisplayName("구분자를 컴마 이외에 콜론을 사용할 수 있다") void splitAndSumWithCommaOrColon(String input) { - int result = StringAddCalculator.splitAndSumWithCommaOrColon(input); + int result = StringAddCalculator.splitAndSum(input); assertThat(result).isEqualTo(6); } From 13c211764293eefbd78cdde26fc0b0d1f395dd5d Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 22:46:22 +0900 Subject: [PATCH 26/27] =?UTF-8?q?refactor=20:=20=ED=94=BC=EB=93=9C?= =?UTF-8?q?=EB=B0=B1=20=EB=B0=98=EC=98=81=20=EB=B0=8F=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=205=20=EC=9E=AC=EA=B5=AC=ED=98=84=20-=20Patt?= =?UTF-8?q?ern=20=EA=B0=9D=EC=B2=B4=20=EC=83=81=EC=88=98=EB=A1=9C=20?= =?UTF-8?q?=EC=B6=94=EC=B6=9C=20-=20splitWithCustomDelimeter=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=EC=9D=84=20splitAndSum=EC=97=90=20=ED=86=B5=ED=95=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 12 ++++-------- src/test/java/StringAddCalculatorTest.java | 2 +- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 88de84f2940..cb43eea5032 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -7,6 +7,7 @@ public class StringAddCalculator { public static final String DELIMETER = ",|:"; public static final String CUSTOMDELIMETER = "//(.)\n(.*)"; public static final int DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING = 0; + public static final Pattern pattern = Pattern.compile(CUSTOMDELIMETER); private StringAddCalculator() { throw new RuntimeException(); @@ -16,19 +17,14 @@ public static int splitAndSum(String input) { if (input == null || input.isEmpty()) { return DEFAULT_VALUE_OF_NULL_AND_EMPTYSTRING; } - String[] splited = input.split(DELIMETER); - return calculateSum(toInt(splited)); - } - - - public static int splitWithCustomDelimeter(String input) { - Matcher m = Pattern.compile(CUSTOMDELIMETER).matcher(input); + Matcher m = pattern.matcher(input); if (m.find()) { String customDelimiter = m.group(1); String[] tokens = m.group(2).split(customDelimiter); return calculateSum(toInt(tokens)); } - return -1; + String[] splited = input.split(DELIMETER); + return calculateSum(toInt(splited)); } public static void negativeValidation(String input) { diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index a80803d81ab..29c6209f60c 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -49,7 +49,7 @@ void splitAndSumWithCommaOrColon(String input) { @ValueSource(strings = {"//;\n1;2;3"}) @DisplayName("\"//\"와 \"\\n\" 사이의 문자를 커스텀 구분자 사용") void customDelimeter(String input) { - int result = StringAddCalculator.splitWithCustomDelimeter(input); + int result = StringAddCalculator.splitAndSum(input); assertThat(result).isEqualTo(6); } From f9458c196bd40ec0586ecb303b5f233966afb37a Mon Sep 17 00:00:00 2001 From: kdfasdf <96770726+kdfasdf@users.noreply.github.com> Date: Sat, 28 Sep 2024 23:40:37 +0900 Subject: [PATCH 27/27] =?UTF-8?q?refactor=20:=20=EC=9A=94=EA=B5=AC?= =?UTF-8?q?=EC=82=AC=ED=95=AD=206=20=EC=9E=AC=EA=B5=AC=ED=98=84=20?= =?UTF-8?q?=EB=B0=8F=20=ED=94=BC=EB=93=9C=EB=B0=B1=20=EB=B0=98=EC=98=81=20?= =?UTF-8?q?-=20StringAddCalculator.java=20(src/main/java)=20-=20negativeVa?= =?UTF-8?q?lidation()=EC=9D=84=20splitAndSum()=EC=97=90=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=ED=86=B5=ED=95=A9=20-=20calculateSum()=EC=97=90=20?= =?UTF-8?q?isNegative()=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/StringAddCalculator.java | 31 +++++++++++----------- src/test/java/StringAddCalculatorTest.java | 2 +- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index cb43eea5032..bd29f7decab 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -27,27 +27,21 @@ public static int splitAndSum(String input) { return calculateSum(toInt(splited)); } - public static void negativeValidation(String input) { - String[] splited = input.split(COMMA); - for (String s : splited) { - validNegativeNumberString(s); - } - } - - private static void validNegativeNumberString(String s) { - if (Integer.parseInt(s) < 0) { - throw new RuntimeException(); - } - } - private static int calculateSum(int[] splited) { int summation = 0; for (int num : splited) { + isNegative(num); summation += num; } return summation; } + private static void isNegative(int num) { + if (num < 0) { + throw new RuntimeException(); + } + } + private static int[] toInt(String[] splited) { int[] numbers = new int[splited.length]; for (int i = 0; i < splited.length; i++) { @@ -55,12 +49,17 @@ private static int[] toInt(String[] splited) { } return numbers; } + private static String checkDigit(String input) { for (char c : input.toCharArray()) { - if(!Character.isDigit(c)) { - throw new RuntimeException(); - } + valudateDigit(c); } return input; } + + private static void valudateDigit(char c) { + if (!Character.isDigit(c)) { + throw new RuntimeException(); + } + } } diff --git a/src/test/java/StringAddCalculatorTest.java b/src/test/java/StringAddCalculatorTest.java index 29c6209f60c..408b3a6b84b 100644 --- a/src/test/java/StringAddCalculatorTest.java +++ b/src/test/java/StringAddCalculatorTest.java @@ -58,7 +58,7 @@ void customDelimeter(String input) { @ValueSource(strings = {"-1,2,3"}) @DisplayName("음수를 전달할 경우 RuntimeException 발생") void negativeThrowRuntimeException(String input) { - assertThatThrownBy(() -> StringAddCalculator.negativeValidation(input)) + assertThatThrownBy(() -> StringAddCalculator.splitAndSum(input)) .isInstanceOf(RuntimeException.class); } }