From 44937d605cf45ddf76a9adbe941c7058d8d17e8d Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 17:25:56 +0900 Subject: [PATCH 01/10] Initialize project by making CalculatorApp --- src/main/java/CalculatorApp.java | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 src/main/java/CalculatorApp.java diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java new file mode 100644 index 0000000..5312cd8 --- /dev/null +++ b/src/main/java/CalculatorApp.java @@ -0,0 +1,5 @@ +public class CalculatorApp { + public static void main(String[] args) { + + } +} From 13f63cfc681b33d17f002011f25b14732e1c4d0b Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 17:31:56 +0900 Subject: [PATCH 02/10] Add class and functions to get input Get input to App from InputView Create InputView and method getInputs to return user Inputs --- src/main/java/CalculatorApp.java | 1 + src/main/java/InputView.java | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 src/main/java/InputView.java diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java index 5312cd8..5feb517 100644 --- a/src/main/java/CalculatorApp.java +++ b/src/main/java/CalculatorApp.java @@ -1,5 +1,6 @@ public class CalculatorApp { public static void main(String[] args) { + String input = InputView.getInputs(); } } diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java new file mode 100644 index 0000000..a16d9be --- /dev/null +++ b/src/main/java/InputView.java @@ -0,0 +1,9 @@ +import java.util.Scanner; + +public class InputView { + private static Scanner scanner = new Scanner(System.in); + + public static String getInputs() { + return scanner.nextLine(); + } +} From 199428bb79078472c5beed7aace19a0dc9a28e91 Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 17:40:24 +0900 Subject: [PATCH 03/10] Add Deciferer to extract elements Add Deciferer Class and extractElements Method --- src/main/java/CalculatorApp.java | 2 +- src/main/java/Deciferer.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 src/main/java/Deciferer.java diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java index 5feb517..ba5028b 100644 --- a/src/main/java/CalculatorApp.java +++ b/src/main/java/CalculatorApp.java @@ -1,6 +1,6 @@ public class CalculatorApp { public static void main(String[] args) { String input = InputView.getInputs(); - + String[] inputs = Deciferer.extractElements(input); } } diff --git a/src/main/java/Deciferer.java b/src/main/java/Deciferer.java new file mode 100644 index 0000000..4a88b91 --- /dev/null +++ b/src/main/java/Deciferer.java @@ -0,0 +1,6 @@ +public class Deciferer { + + public static String[] extractElements (String inputs) { + return new String[] {"a"}; + } +} From 3beea6fde62b3953a31d5fdf7f96d3db8fca7bf8 Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 17:47:13 +0900 Subject: [PATCH 04/10] Add DecifererTest for test --- src/test/java/DecifererTest.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/test/java/DecifererTest.java diff --git a/src/test/java/DecifererTest.java b/src/test/java/DecifererTest.java new file mode 100644 index 0000000..438140f --- /dev/null +++ b/src/test/java/DecifererTest.java @@ -0,0 +1,17 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DecifererTest { + private Deciferer deciferer; + @BeforeEach + void setUp() { + deciferer = new Deciferer(); + } + + @Test + public void extractElements() { + assertThat(deciferer.extractElements("3:3:3")).isEqualTo(new String[] {"3","3","3"}); + } +} From aad49c2f8db047c1efaebb268a979f9e821c5287 Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 20:05:40 +0900 Subject: [PATCH 05/10] Finish Deciferer.extractElements and its test --- src/main/java/Deciferer.java | 18 ++++++++++++++++-- src/test/java/DecifererTest.java | 5 ++++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/main/java/Deciferer.java b/src/main/java/Deciferer.java index 4a88b91..f41be30 100644 --- a/src/main/java/Deciferer.java +++ b/src/main/java/Deciferer.java @@ -1,6 +1,20 @@ +import java.lang.reflect.Array; +import java.util.Arrays; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class Deciferer { - public static String[] extractElements (String inputs) { - return new String[] {"a"}; + public static String[] extractElements (String input) { + Pattern pattern = Pattern.compile("(//([^\\d])\\\\n)(\\p{Alnum}+)"); + Matcher matcher = pattern.matcher(input); + + if (matcher.matches()) { + String customSeparator = matcher.group(2); + String otherString = matcher.group(3); + return otherString.split(customSeparator); + } + + return input.split(",|;"); } } diff --git a/src/test/java/DecifererTest.java b/src/test/java/DecifererTest.java index 438140f..88d3a18 100644 --- a/src/test/java/DecifererTest.java +++ b/src/test/java/DecifererTest.java @@ -12,6 +12,9 @@ void setUp() { @Test public void extractElements() { - assertThat(deciferer.extractElements("3:3:3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("3;3;3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("3,3;3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("//a\\n3a3a3")).isEqualTo(new String[] {"3","3","3"}); + assertThat(deciferer.extractElements("3,3;3")).isEqualTo(new String[] {"3","3","3"}); } } From 423d5ec26318e958d4e977555357e5d98bdc2bcc Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Tue, 16 Jun 2020 20:14:34 +0900 Subject: [PATCH 06/10] Add Calculator CalculatorTest edit CalulatorApp --- src/main/java/Calculator.java | 7 +++++++ src/main/java/CalculatorApp.java | 1 + src/test/java/CalculatorTest.java | 17 +++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/main/java/Calculator.java create mode 100644 src/test/java/CalculatorTest.java diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java new file mode 100644 index 0000000..2472812 --- /dev/null +++ b/src/main/java/Calculator.java @@ -0,0 +1,7 @@ +import java.util.stream.Stream; + +public class Calculator { + public static int getSum(String[] inputs) { + return Stream.of(inputs).mapToInt(x-> Integer.parseInt(x)).reduce((a,b)-> a+b).getAsInt(); + } +} diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java index ba5028b..dc36117 100644 --- a/src/main/java/CalculatorApp.java +++ b/src/main/java/CalculatorApp.java @@ -2,5 +2,6 @@ public class CalculatorApp { public static void main(String[] args) { String input = InputView.getInputs(); String[] inputs = Deciferer.extractElements(input); + int sum = Calculator.getSum(inputs); } } diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java new file mode 100644 index 0000000..1ec4729 --- /dev/null +++ b/src/test/java/CalculatorTest.java @@ -0,0 +1,17 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class CalculatorTest { + private Calculator calculator; + @BeforeEach + void setUp() { + calculator = new Calculator(); + } + + @Test + public void getSum() { + assertThat(calculator.getSum(new String[] {"1","2","3"})).isEqualTo(6); + } +} From 0bc0a3fee1ac6d57c86d26f5ac5165be3c1cd8ee Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Wed, 17 Jun 2020 12:54:40 +0900 Subject: [PATCH 07/10] Create OutputView --- src/main/java/CalculatorApp.java | 1 + src/main/java/OutputView.java | 5 +++++ 2 files changed, 6 insertions(+) create mode 100644 src/main/java/OutputView.java diff --git a/src/main/java/CalculatorApp.java b/src/main/java/CalculatorApp.java index dc36117..f104eee 100644 --- a/src/main/java/CalculatorApp.java +++ b/src/main/java/CalculatorApp.java @@ -3,5 +3,6 @@ public static void main(String[] args) { String input = InputView.getInputs(); String[] inputs = Deciferer.extractElements(input); int sum = Calculator.getSum(inputs); + OutputView.sumResult(sum); } } diff --git a/src/main/java/OutputView.java b/src/main/java/OutputView.java new file mode 100644 index 0000000..ec2e020 --- /dev/null +++ b/src/main/java/OutputView.java @@ -0,0 +1,5 @@ +public class OutputView { + public static void sumResult(int sum) { + System.out.println(sum); + } +} From 1d7350e132494beda0e4ddd73a586c6dd111993d Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Wed, 17 Jun 2020 13:28:18 +0900 Subject: [PATCH 08/10] Add Validator to validate input --- src/main/java/ArithmeticOperator.java | 4 ++++ src/main/java/Validator.java | 8 ++++++++ src/test/java/ArithmeticOperatorTest.java | 4 ++++ src/test/java/ValidatorTest.java | 20 ++++++++++++++++++++ 4 files changed, 36 insertions(+) create mode 100644 src/main/java/ArithmeticOperator.java create mode 100644 src/main/java/Validator.java create mode 100644 src/test/java/ArithmeticOperatorTest.java create mode 100644 src/test/java/ValidatorTest.java diff --git a/src/main/java/ArithmeticOperator.java b/src/main/java/ArithmeticOperator.java new file mode 100644 index 0000000..576cf72 --- /dev/null +++ b/src/main/java/ArithmeticOperator.java @@ -0,0 +1,4 @@ +package PACKAGE_NAME; + +public class ArithmeticOperator { +} diff --git a/src/main/java/Validator.java b/src/main/java/Validator.java new file mode 100644 index 0000000..8b9f516 --- /dev/null +++ b/src/main/java/Validator.java @@ -0,0 +1,8 @@ +public class Validator { + public static boolean checkIfEmpty(String[] input) { + if(input[0].equals("")){ + return false; + } + return true; + } +} diff --git a/src/test/java/ArithmeticOperatorTest.java b/src/test/java/ArithmeticOperatorTest.java new file mode 100644 index 0000000..d4ca499 --- /dev/null +++ b/src/test/java/ArithmeticOperatorTest.java @@ -0,0 +1,4 @@ +package PACKAGE_NAME; + +public class ArithmeticOperatorTest { +} diff --git a/src/test/java/ValidatorTest.java b/src/test/java/ValidatorTest.java new file mode 100644 index 0000000..5230a51 --- /dev/null +++ b/src/test/java/ValidatorTest.java @@ -0,0 +1,20 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +public class ValidatorTest { + private Validator validator; + @BeforeEach + void setUp() { + validator = new Validator(); + } + + @DisplayName("더하기") + @Test + public void getSum() { + assertThat(validator.checkIfEmpty(new String[] {"1","2","3"})).isEqualTo(true); + assertThat(validator.checkIfEmpty(new String[] {""})).isEqualTo(false); + } +} From c6886d4422b8c88c0a5b25e533bbc1fade0aabde Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Wed, 17 Jun 2020 13:29:47 +0900 Subject: [PATCH 09/10] Separate sum part from Calculator and edit test --- src/main/java/ArithmeticOperator.java | 5 ++++- src/main/java/Calculator.java | 8 +++++--- src/test/java/ArithmeticOperatorTest.java | 17 ++++++++++++++++- src/test/java/CalculatorTest.java | 3 +++ 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/main/java/ArithmeticOperator.java b/src/main/java/ArithmeticOperator.java index 576cf72..2ce17f4 100644 --- a/src/main/java/ArithmeticOperator.java +++ b/src/main/java/ArithmeticOperator.java @@ -1,4 +1,7 @@ -package PACKAGE_NAME; +import java.util.stream.Stream; public class ArithmeticOperator { + public static int sum(String[] inputs) { + return Stream.of(inputs).mapToInt(x-> Integer.parseInt(x)).reduce((a, b)-> a+b).getAsInt(); + } } diff --git a/src/main/java/Calculator.java b/src/main/java/Calculator.java index 2472812..73c14df 100644 --- a/src/main/java/Calculator.java +++ b/src/main/java/Calculator.java @@ -1,7 +1,9 @@ -import java.util.stream.Stream; - public class Calculator { + public static int getSum(String[] inputs) { - return Stream.of(inputs).mapToInt(x-> Integer.parseInt(x)).reduce((a,b)-> a+b).getAsInt(); + if(Validator.checkIfEmpty(inputs) == false){ + return 0; + } + return ArithmeticOperator.sum(inputs); } } diff --git a/src/test/java/ArithmeticOperatorTest.java b/src/test/java/ArithmeticOperatorTest.java index d4ca499..25e83e9 100644 --- a/src/test/java/ArithmeticOperatorTest.java +++ b/src/test/java/ArithmeticOperatorTest.java @@ -1,4 +1,19 @@ -package PACKAGE_NAME; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; public class ArithmeticOperatorTest { + private ArithmeticOperator arithmeticOperator; + @BeforeEach + void setUp() { + arithmeticOperator = new ArithmeticOperator(); + } + + @DisplayName("더하기") + @Test + public void getSum() { + assertThat(arithmeticOperator.sum(new String[] {"1","2","3"})).isEqualTo(6); + } } diff --git a/src/test/java/CalculatorTest.java b/src/test/java/CalculatorTest.java index 1ec4729..88827cc 100644 --- a/src/test/java/CalculatorTest.java +++ b/src/test/java/CalculatorTest.java @@ -1,4 +1,5 @@ import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -10,8 +11,10 @@ void setUp() { calculator = new Calculator(); } + @DisplayName("더하기") @Test public void getSum() { assertThat(calculator.getSum(new String[] {"1","2","3"})).isEqualTo(6); + assertThat(calculator.getSum(new String[] {""})).isEqualTo(0); } } From d0b3479e8777f86e6931cf9ab1f37fcbd54dcce9 Mon Sep 17 00:00:00 2001 From: gyim1345 Date: Wed, 17 Jun 2020 13:30:32 +0900 Subject: [PATCH 10/10] Add Display Name --- src/test/java/DecifererTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/DecifererTest.java b/src/test/java/DecifererTest.java index 88d3a18..505fc0b 100644 --- a/src/test/java/DecifererTest.java +++ b/src/test/java/DecifererTest.java @@ -1,4 +1,5 @@ import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -10,6 +11,7 @@ void setUp() { deciferer = new Deciferer(); } + @DisplayName("문자 추출") @Test public void extractElements() { assertThat(deciferer.extractElements("3;3;3")).isEqualTo(new String[] {"3","3","3"});