From 0a5d9634a16a9b1b31a68f63131268511f05f9e4 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 17:38:07 +0900 Subject: [PATCH 01/61] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84=20=EB=AA=A9=EB=A1=9D=20=EB=B0=8F=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/README.md b/README.md index 90a5236..792c074 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,41 @@ # 미션 - 자동차 경주 게임 +## 📋 기능 구현 목록 +- 사용자 입력 요구문 출력 +- 사용자 입력 + - 예외 처리 + - 플레이어 생성 + +- 경주 게임 실행 + - 무작위 수 생성 + - 4이상 인지 비교 + - 1초 간격두고 라운드 결과 출력 + +- 우승자 판별 + - 우승자 출력 + +## 🚬 클래스와 메서드? +- Application +- Input + - inputName + - inputNumber +- io.Printer + - printMessage +- domain.GamePlayer + - gameStart + - check 4 +- Generator + - generateRandomNumber +- Car + - getPosition + setter없이 해야함 +- Validate + - [a-z][0-9], 아니면 예외 + - 숫자 아니면 예외 +- Message + - 하면서 만들기 + + ## 🚀 기능 요구사항 - 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. From 216cb6de1fa6f54decd176149900c12c19577964 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 21:41:53 +0900 Subject: [PATCH 02/61] =?UTF-8?q?test:=20=EC=9E=85=EB=A0=A5=20=EB=B0=8F=20?= =?UTF-8?q?=EC=9C=A0=ED=9A=A8=EC=84=B1=20=EA=B2=80=EC=82=AC=20=ED=81=B4?= =?UTF-8?q?=EB=9E=98=EC=8A=A4=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BC=80?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/ValidatorTest.java | 38 ++++++++++++++++++++++++ src/test/java/io/ReceiverTest.java | 39 +++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 src/test/java/domain/ValidatorTest.java create mode 100644 src/test/java/io/ReceiverTest.java diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java new file mode 100644 index 0000000..b1428b6 --- /dev/null +++ b/src/test/java/domain/ValidatorTest.java @@ -0,0 +1,38 @@ +package domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +import static org.junit.jupiter.api.Assertions.*; + +class ValidatorTest { + + Validator vd; + + @BeforeEach + void setup() { + vd = new Validator(); + } + + @Test + void validateNameTest(){ + boolean result = vd.validateName("asdasd,,,,"); + assertThat(result).isEqualTo(false); + } + + + @Test + void validateNumberTest(){ + boolean result = vd.validateNumber("1e"); + assertThat(result).isEqualTo(false); + } + + @Test + void callErrorMessageTest(){ + String result = vd.callErrorMessage("asdasdasd"); + assertThat(result).isEqualTo("아무 문자도 입력되지 않았습니다."); + + } +} \ No newline at end of file diff --git a/src/test/java/io/ReceiverTest.java b/src/test/java/io/ReceiverTest.java new file mode 100644 index 0000000..09afd06 --- /dev/null +++ b/src/test/java/io/ReceiverTest.java @@ -0,0 +1,39 @@ +package io; + +import io.Receiver; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Arrays; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatExceptionOfType; + +public class ReceiverTest { + + Receiver rc; + + @BeforeEach + void setUp() { + rc = new Receiver(); + } + + @Test + void receiveLineTest() { + String result = rc.receiveLine(); + // pobi,crong,honux + assertThat(result).isEqualTo("pobi,crong,honux"); + } + + @Test + void receiveNameTest() { + String[] result = rc.receiveName("pobi,crong,honux"); + assertThat(result).isEqualTo(Arrays.asList("pobi", "crong", "honux")); + } + + @Test + void receiveNumberTest() { + int result = rc.receiveNumber("3"); + assertThat(result).isEqualTo(3); + } +} \ No newline at end of file From ae04e19e36238c5b5d7b7ea2da64fa8987218fa9 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 21:44:45 +0900 Subject: [PATCH 03/61] =?UTF-8?q?feat:=20Receiver=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Receiver.java | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/io/Receiver.java diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java new file mode 100644 index 0000000..0a1e8a9 --- /dev/null +++ b/src/main/java/io/Receiver.java @@ -0,0 +1,27 @@ +package io; + +import java.util.Scanner; + +public class Receiver { + Scanner scanner = new Scanner(System.in); + + public String receiveLine(){ + return scanner.nextLine(); + } + + public String[] receiveName(String s) { + //ValidationcheckforString + + return s.split(","); + } + + public int receiveNumber(String s) { + + //Validation Check for number + //if it's true + + return Integer.parseInt(s); + } + + +} From a6e8c0fa73a761834c890d112ea3aa9a5a809977 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 21:46:43 +0900 Subject: [PATCH 04/61] =?UTF-8?q?feat:=20Validator=20=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/ValidatorInterface.java | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 src/main/java/domain/ValidatorInterface.java diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java new file mode 100644 index 0000000..41b511a --- /dev/null +++ b/src/main/java/domain/ValidatorInterface.java @@ -0,0 +1,9 @@ +package domain; + +public interface ValidatorInterface { + boolean validateName(String s); + + boolean validateNumber(String s); + + String callErrorMessage(String key); +} From 804fe2d3f5f67607194e255cbf22d7b4a060a001 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 21:47:46 +0900 Subject: [PATCH 05/61] =?UTF-8?q?docs:=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=B6=84=EB=A5=98=20=EC=9E=AC=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 792c074..a4755c6 100644 --- a/README.md +++ b/README.md @@ -16,19 +16,20 @@ ## 🚬 클래스와 메서드? - Application -- Input - - inputName - - inputNumber -- io.Printer +- Receiver + - receiveLine + - receiveName + - receiveNumber +- Printer - printMessage -- domain.GamePlayer - - gameStart - - check 4 +- GamePlayer + - run - Generator - generateRandomNumber - Car - getPosition - setter없이 해야함 + - judgeMove + - check 4 - Validate - [a-z][0-9], 아니면 예외 - 숫자 아니면 예외 From a02977dc8e71fc592f03e68e22c055c13fafa8fe Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 22:00:46 +0900 Subject: [PATCH 06/61] =?UTF-8?q?feat:=20Message=EC=9D=B8=ED=84=B0?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=8A=A4=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/MessageInterface.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/main/java/io/MessageInterface.java diff --git a/src/main/java/io/MessageInterface.java b/src/main/java/io/MessageInterface.java new file mode 100644 index 0000000..78dcc72 --- /dev/null +++ b/src/main/java/io/MessageInterface.java @@ -0,0 +1,22 @@ +package io; + +import java.util.HashMap; +import java.util.Map; + +public interface MessageInterface { + Map generalMessageList = new HashMap(); + + private void genralMessageList() { + generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); + generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); + generalMessageList.put("OPERATION_RESULT", "실행 결과"); + generalMessageList.put("", "아무 문자도 입력되지 않았습니다."); + generalMessageList.put("", "쉼표(,)가 연속으로 입력되었습니다."); + generalMessageList.put("", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); + generalMessageList.put("", "같은 이름이 입력되었습니다."); + generalMessageList.put("", "이름이 5자 이상입니다."); + generalMessageList.put("", "숫자 이외의 다른 문자가 입력되었습니다."); + } + + void selectMessage(String Keyword); +} From 3ac806d0cd94f7f5f5cf8a462d0d37cffc5098d4 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:26:56 +0900 Subject: [PATCH 07/61] =?UTF-8?q?test:=20validator=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=EC=A1=B0=20=EB=B3=80=EA=B2=BD=EC=97=90=20?= =?UTF-8?q?=EB=94=B0=EB=A5=B8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/ValidatorTest.java | 49 ++++++++++++++++++++----- 1 file changed, 39 insertions(+), 10 deletions(-) diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index b1428b6..a9be2b3 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -2,11 +2,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.*; - class ValidatorTest { Validator vd; @@ -17,22 +17,51 @@ void setup() { } @Test + //이름 유효성 체크 void validateNameTest(){ - boolean result = vd.validateName("asdasd,,,,"); - assertThat(result).isEqualTo(false); + assertThat(vd.validateName("asdasd,,,,")).isEqualTo(false); } - @Test + //숫자 유효성 체크 void validateNumberTest(){ - boolean result = vd.validateNumber("1e"); - assertThat(result).isEqualTo(false); + assertThat(vd.validateNumber("1")).isEqualTo(true); } @Test - void callErrorMessageTest(){ - String result = vd.callErrorMessage("asdasdasd"); - assertThat(result).isEqualTo("아무 문자도 입력되지 않았습니다."); + //입력에 아무것도 없을 경우 + void inputNothingTest(){ + assertThat(vd.inputNothing("")).isEqualTo(false); + } + + @Test + //쉼표(,)가 연속으로 나올 경우 + void inputCommaInARowTest(){ assertThat(vd.inputCommaInARow("name,,")).isEqualTo(false); } + + @Test + //쉼표(,)로 시작할 경우 + void startWithCommaTest(){ assertThat(vd.startWithComma(",name")).isEqualTo(false); } + @Test + //쉼표(,)로 끝날 경우 + void endWithCommaTest(){ assertThat(vd.endWithComma("name,")).isEqualTo(false); } + + @Test + //입력에 영문, 쉼표(,) 이외의 문자가 있을 경우 + void inputCharactersOtherThanNameTest(){ assertThat(vd.inputCharactersOtherThanName("name,이름")).isEqualTo(false); } + + @Test + //같은 이름이 있을 경우 + void inputSameNameTest(){ assertThat(vd.inputSameName("name,name")).isEqualTo(false); } + + @Test + //이름이 5글자 이상을 경우 + void over5CharactersTest(){ assertThat(vd.over5Characters("person,name")).isEqualTo(false); } + + @ParameterizedTest + @ValueSource(strings = {"hobihobi,hoho,hoho", "hobihobi,hoho,hoho", "hobihobi,hoho,hoho"}) + void over5CharacterTest(String s) { + boolean result = vd.over5Characters(s); + assertThat(result).isEqualTo(false); } } \ No newline at end of file From a9734071dfa0c6ca290c9dec9085c507ee46d11b Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:29:23 +0900 Subject: [PATCH 08/61] =?UTF-8?q?feat:=20=EC=B6=9C=EB=A0=A5=20=EB=A9=94?= =?UTF-8?q?=EC=84=B8=EC=A7=80=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4?= =?UTF-8?q?=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/MessageInterface.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/main/java/io/MessageInterface.java b/src/main/java/io/MessageInterface.java index 78dcc72..5e5bf84 100644 --- a/src/main/java/io/MessageInterface.java +++ b/src/main/java/io/MessageInterface.java @@ -5,18 +5,25 @@ public interface MessageInterface { Map generalMessageList = new HashMap(); + Map exceptionMessageList = new HashMap(); private void genralMessageList() { generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); generalMessageList.put("OPERATION_RESULT", "실행 결과"); - generalMessageList.put("", "아무 문자도 입력되지 않았습니다."); - generalMessageList.put("", "쉼표(,)가 연속으로 입력되었습니다."); - generalMessageList.put("", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); - generalMessageList.put("", "같은 이름이 입력되었습니다."); - generalMessageList.put("", "이름이 5자 이상입니다."); - generalMessageList.put("", "숫자 이외의 다른 문자가 입력되었습니다."); } - void selectMessage(String Keyword); + private void exceptionMessageList() { + exceptionMessageList.put("INPUT_NOTHING", "아무 문자도 입력되지 않았습니다."); + exceptionMessageList.put("INPUT_COMMA_IN_A_ROW", "쉼표(,)가 연속으로 입력되었습니다."); + exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작됩니다."); + exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); + exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); + exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); + exceptionMessageList.put("OVER_5_CHARACTERS", "이름이 5자 이상입니다."); + exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); + } + + String selectMessageFromGeneral(String Keyword); + String selectMessageFromException(String Keyword); } From 78bb06db79fc8d06f4af237a0924e8f203e19af8 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:31:23 +0900 Subject: [PATCH 09/61] =?UTF-8?q?refactor:=20=EB=A9=94=EC=84=B8=EC=A7=80?= =?UTF-8?q?=20=ED=98=B8=EC=B6=9C=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C,=20=EC=9E=85=EB=A0=A5=20=EC=98=88=EC=99=B8=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/ValidatorInterface.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java index 41b511a..26ea5dd 100644 --- a/src/main/java/domain/ValidatorInterface.java +++ b/src/main/java/domain/ValidatorInterface.java @@ -5,5 +5,18 @@ public interface ValidatorInterface { boolean validateNumber(String s); - String callErrorMessage(String key); + + boolean inputNothing(String s); + + boolean inputCommaInARow(String s); + + boolean startWithComma(String s); + + boolean endWithComma(String s); + + boolean inputCharactersOtherThanName(String s); + + boolean inputSameName(String s); + + boolean over5Characters(String s); } From bb9c87be0e95c528df2143af6ffca8dcadf4c75f Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:32:17 +0900 Subject: [PATCH 10/61] =?UTF-8?q?feat:=20=ED=94=84=EB=A6=B0=ED=84=B0=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Printer.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/io/Printer.java diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java new file mode 100644 index 0000000..1435ff3 --- /dev/null +++ b/src/main/java/io/Printer.java @@ -0,0 +1,13 @@ +package io; + +public class Printer { + Message message = new Message(); + + public void printGeneralMessage(String s){ + System.out.println(message.selectMessageFromGeneral(s)); + } + + public void printExceptionMessage(String s){ + System.out.println(message.selectMessageFromException(s)); + } +} From 07f6628eee16add7aba0835879f1ce392816e3a2 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:33:06 +0900 Subject: [PATCH 11/61] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91=20=EA=B8=B0=EB=8A=A5=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/Application.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/Application.java diff --git a/src/main/java/Application.java b/src/main/java/Application.java new file mode 100644 index 0000000..cc58b44 --- /dev/null +++ b/src/main/java/Application.java @@ -0,0 +1,8 @@ +import domain.GamePlayer; + +public class Application { + public static void main(String[] args){ + GamePlayer gamePlayer = new GamePlayer(); + gamePlayer.run(); + } +} From cdfc8265f6f5929d9d627813d2dd62c2a65b39bc Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:42:47 +0900 Subject: [PATCH 12/61] =?UTF-8?q?docs:=20=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=B0=8F=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EB=B6=84=EB=A5=98=20?= =?UTF-8?q?=EC=9E=AC=EC=A0=95=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index a4755c6..2b5e2a2 100644 --- a/README.md +++ b/README.md @@ -17,24 +17,34 @@ ## 🚬 클래스와 메서드? - Application - Receiver - - receiveLine - receiveName - receiveNumber - Printer - printMessage - GamePlayer - run + - judgeToMove + - makeArrayAfterGettingName + - makeCountAfterGettingNumber + - launchAllRound + - checkWhoIsWinner - Generator - generateRandomNumber - Car - getPosition - - judgeMove - - check 4 + - getName + - moveForward - Validate - - [a-z][0-9], 아니면 예외 - - 숫자 아니면 예외 + - validateName(s) + - inputNothing(s) + - inputCommaInARow(s) + - inputCharactersOtherThanName(s) + - startWithComma(s) + - endWithComma(s) + - over5Characters(s) + - inputSameName(s)) + - validateNumber(s) - Message - - 하면서 만들기 ## 🚀 기능 요구사항 From 0ff13cc3671cc50371d9a4ccc5896ebe559696ea Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:45:18 +0900 Subject: [PATCH 13/61] =?UTF-8?q?feat:=20Car=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Car.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/domain/Car.java b/src/main/java/domain/Car.java index e5b4a0a..f3e992f 100644 --- a/src/main/java/domain/Car.java +++ b/src/main/java/domain/Car.java @@ -8,5 +8,15 @@ public Car(String name) { this.name = name; } - // 추가 기능 구현 + public int getPosition() { + return this.position; + } + + public String getName() { + return this.name; + } + + public void moveForward() { + this.position++; + } } From 6519379fa1923cdd2f1cdf5025fad17646981b77 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:47:33 +0900 Subject: [PATCH 14/61] =?UTF-8?q?feat:=20Message=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Message.java | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/main/java/io/Message.java diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java new file mode 100644 index 0000000..6f7d076 --- /dev/null +++ b/src/main/java/io/Message.java @@ -0,0 +1,40 @@ +package io; + +import java.util.HashMap; +import java.util.Map; + +public class Message implements MessageInterface { + Map generalMessageList = new HashMap(); + Map exceptionMessageList = new HashMap(); + + public Message() { + this.exceptionMessageList(); + this.generalMessageList(); + } + private void generalMessageList() { + generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); + generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); + generalMessageList.put("OPERATION_RESULT", "실행 결과"); + } + + private void exceptionMessageList() { + exceptionMessageList.put("INPUT_NOTHING", "아무 문자도 입력되지 않았습니다."); + exceptionMessageList.put("INPUT_COMMA_IN_A_ROW", "쉼표(,)가 연속으로 입력되었습니다."); + exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); + exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작합니다."); + exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); + exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); + exceptionMessageList.put("OVER_5_CHARACTERS", "이름이 5자 이상입니다."); + exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); + } + + @Override + public String selectMessageFromGeneral(String Keyword) { + return generalMessageList.get(Keyword); + } + + @Override + public String selectMessageFromException(String Keyword) { + return exceptionMessageList.get(Keyword); + } +} \ No newline at end of file From 7aaac17278dca6f58e3ed90d65409149b5fb53ec Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 20:50:45 +0900 Subject: [PATCH 15/61] =?UTF-8?q?feat:=20Validator=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 108 ++++++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 src/main/java/domain/Validator.java diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java new file mode 100644 index 0000000..b65f242 --- /dev/null +++ b/src/main/java/domain/Validator.java @@ -0,0 +1,108 @@ +package domain; + +import io.Printer; + +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.TreeSet; +import java.util.regex.Pattern; + +public class Validator implements ValidatorInterface { + private static final int MAX_NAME_SIZE = 5; + private static final String valiNumber = "^[0-9]+$"; + private static final String commaInARow = "^(,,)+$"; + private static final String characterOTN = "^[a-zA-Z,]+$"; + Printer printer; + + public Validator() { + printer = new Printer(); + } + + @Override + public boolean validateName(String s) { + return inputNothing(s) + && inputCommaInARow(s) + && inputCharactersOtherThanName(s) + && startWithComma(s) + && endWithComma(s) + && over5Characters(s) + && inputSameName(s); + } + + @Override + public boolean validateNumber(String s) { + return s.matches(valiNumber); + } + + @Override + public boolean inputNothing(String s) { + if (s.equals("")) { + printer.printExceptionMessage("INPUT_NOTHING"); + return false; + } + return true; + } + + @Override + public boolean inputCommaInARow(String s) { + if (Pattern.matches("^.*(,,).*+$", s)) { //체크 필요 + printer.printExceptionMessage("INPUT_COMMA_IN_A_ROW"); + return false; + } + return true; + } + + @Override + public boolean startWithComma(String s) { + if (s.charAt(0) == ',') { + printer.printExceptionMessage("START_WITH_COMMA"); + return false; + } + return true; + } + + @Override + public boolean endWithComma(String s) { + if (s.charAt(s.length() - 1) == ',') { + printer.printExceptionMessage("END_WITH_COMMA"); + return false; + } + return true; + } + + @Override + public boolean inputCharactersOtherThanName(String s) { + if (!Pattern.matches(characterOTN, s)) { + printer.printExceptionMessage("INPUT_CHARACTERS_OTHER_THAN_NAME"); + return false; + } + return true; + } + + @Override + public boolean inputSameName(String s) { + List CAR_NAME_LIST = Arrays.asList(s.split(",")); + int sizeOfNameList = CAR_NAME_LIST.size(); + + for (int i = 0; i < sizeOfNameList; i++) { + if (CAR_NAME_LIST.subList(i + 1, sizeOfNameList).contains(CAR_NAME_LIST.get(i))) { + printer.printExceptionMessage("INPUT_SAME_NAME"); + return false; + } + } + return true; + } + + @Override + public boolean over5Characters(String s) { + String[] splitName = s.split(","); + for (String i : splitName) + if (i.length() > MAX_NAME_SIZE) { + printer.printExceptionMessage("OVER_5_CHARACTERS"); + return false; + } + return true; + } + +} From b1154362ba55623912f578c4115c684f368ca84b Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 21:00:30 +0900 Subject: [PATCH 16/61] =?UTF-8?q?refactor:=20receiveLine=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Receiver.java | 35 +++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java index 0a1e8a9..c9a54c7 100644 --- a/src/main/java/io/Receiver.java +++ b/src/main/java/io/Receiver.java @@ -1,27 +1,28 @@ package io; +import domain.Validator; + import java.util.Scanner; public class Receiver { + boolean reEnter = false; + String inputLine = ""; Scanner scanner = new Scanner(System.in); - - public String receiveLine(){ - return scanner.nextLine(); + Validator validator = new Validator(); + + public String[] receiveName() { + do{ + inputLine = scanner.nextLine(); + reEnter = validator.validateName(inputLine); + }while (!reEnter); + return inputLine.split(","); } - public String[] receiveName(String s) { - //ValidationcheckforString - - return s.split(","); + public int receiveNumber() { + do{ + inputLine = scanner.nextLine(); + reEnter = validator.validateNumber(inputLine); + }while (!reEnter); + return Integer.parseInt(inputLine); } - - public int receiveNumber(String s) { - - //Validation Check for number - //if it's true - - return Integer.parseInt(s); - } - - } From 8d840f7705b7f434745575a57547a3df1b86c21c Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 21:03:00 +0900 Subject: [PATCH 17/61] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=EB=B6=80=EB=B6=84=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 86 ++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 src/main/java/domain/GamePlayer.java diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java new file mode 100644 index 0000000..ca51668 --- /dev/null +++ b/src/main/java/domain/GamePlayer.java @@ -0,0 +1,86 @@ +package domain; + +import io.Printer; +import io.Receiver; + +import java.util.ArrayList; +import java.util.List; + +public class GamePlayer { + Printer printer; + Receiver receiver; + Generator generator; + + public GamePlayer() { + this.printer = new Printer(); + this.receiver = new Receiver(); + this.generator = new Generator(10); + } + + private final int WINNER_CONDITION = 4; + + public void judgeToMove(Car car, int randomNumber) { + if (randomNumber >= WINNER_CONDITION) + car.moveForward(); + } + + public Car[] makeArrayAfterGettingName() { + printer.printGeneralMessage("INPUT_NAMEOFCAR"); + String[] listOfName = receiver.receiveName(); + + Car[] cars = new Car[listOfName.length]; + for (int i = 0; i < listOfName.length; i++) + cars[i] = new Car(listOfName[i]); + + return cars; + } + + public int makeCountAfterGettingNumber() { + printer.printGeneralMessage("INPUT_COUNT"); + return receiver.receiveNumber(); + } + + public void launchAllRound(Car[] cars, int countRound) { + System.out.println("실행 결과"); + + for (int i = 0; i < countRound; i++) { + for (Car j : cars) { + judgeToMove(j, generator.generateRandomNumber()); + System.out.println(j.getName() + ":" + j.getPosition()); + } + System.out.println("\n"); + } + } + + public List checkWhoIsWinner(Car[] cars) { + List result = new ArrayList<>(); + int maxNumber = 0; + + for (Car i : cars) { + if(i.getPosition() == maxNumber){ + result.add(i); + continue; + } + if (i.getPosition() > maxNumber) { + maxNumber = i.getPosition(); + result.clear(); + result.add(i); + } + } + + return result; + } + + public void run() { + Car[] cars = makeArrayAfterGettingName(); + int countRound = makeCountAfterGettingNumber(); + List winner; + + launchAllRound(cars, countRound); + winner = checkWhoIsWinner(cars); + + for(Car i : winner) + System.out.println(i.getName()); + + } +} From 74d8054cedadb44deaf15a7a7ad562ae202b1f4e Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 9 Mar 2021 21:03:38 +0900 Subject: [PATCH 18/61] =?UTF-8?q?feat:=20=EB=82=9C=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=EA=B8=B0=EB=8A=A5=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Generator.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 src/main/java/domain/Generator.java diff --git a/src/main/java/domain/Generator.java b/src/main/java/domain/Generator.java new file mode 100644 index 0000000..84c1b05 --- /dev/null +++ b/src/main/java/domain/Generator.java @@ -0,0 +1,17 @@ +package domain; + +public class Generator { + private int MAX_LIMIT_NUMBER = 10; //default value + + Generator() { + + } + + Generator(int maxNum) { + this.MAX_LIMIT_NUMBER = maxNum; + } + + public int generateRandomNumber() { + return (int) ((Math.random() * 10000) % MAX_LIMIT_NUMBER); + } +} From 02b518658588448c38fb7cff39e6a038684147b5 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:12:35 +0900 Subject: [PATCH 19/61] =?UTF-8?q?style:=20overSizeCharacters=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 6 ++---- src/main/java/domain/ValidatorInterface.java | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index b65f242..daa8af3 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -3,9 +3,7 @@ import io.Printer; import java.util.Arrays; -import java.util.Iterator; import java.util.List; -import java.util.TreeSet; import java.util.regex.Pattern; public class Validator implements ValidatorInterface { @@ -26,7 +24,7 @@ && inputCommaInARow(s) && inputCharactersOtherThanName(s) && startWithComma(s) && endWithComma(s) - && over5Characters(s) + && this.overSizeCharacters(s) && inputSameName(s); } @@ -99,7 +97,7 @@ public boolean over5Characters(String s) { String[] splitName = s.split(","); for (String i : splitName) if (i.length() > MAX_NAME_SIZE) { - printer.printExceptionMessage("OVER_5_CHARACTERS"); + printer.printExceptionMessage("OVER_SIZE_CHARACTERS"); return false; } return true; diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java index 26ea5dd..ac41042 100644 --- a/src/main/java/domain/ValidatorInterface.java +++ b/src/main/java/domain/ValidatorInterface.java @@ -18,5 +18,5 @@ public interface ValidatorInterface { boolean inputSameName(String s); - boolean over5Characters(String s); + boolean overSizeCharacters(String s); } From 6954307d67c806d0ed66e7de057ee5d9c4ab1712 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:13:17 +0900 Subject: [PATCH 20/61] =?UTF-8?q?test:=20Paramiterizedtest=EB=A1=9C=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/ValidatorTest.java | 87 +++++++++++++++---------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index a9be2b3..8bae7d6 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -1,7 +1,6 @@ package domain; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; @@ -9,6 +8,8 @@ class ValidatorTest { + private final String NORMAL_INPUT_FOR_NAME = "Park,Song,Kim,Jay"; + private final String NORMAL_INPUT_FOR_NUMBER = "5"; Validator vd; @BeforeEach @@ -16,52 +17,66 @@ void setup() { vd = new Validator(); } - @Test - //이름 유효성 체크 - void validateNameTest(){ - assertThat(vd.validateName("asdasd,,,,")).isEqualTo(false); + @ParameterizedTest + @ValueSource(strings = {"123,!@a,BDs5", ",,asd,asd,", NORMAL_INPUT_FOR_NAME}) + //이름 유효성 체크 + void validateNameTest(String s) { + assertThat(vd.validateName(s)).isEqualTo(false); } - @Test - //숫자 유효성 체크 - void validateNumberTest(){ - assertThat(vd.validateNumber("1")).isEqualTo(true); + @ParameterizedTest + @ValueSource(strings = {"it's not a number", "what else?", NORMAL_INPUT_FOR_NUMBER}) + //숫자 유효성 체크 + void validateNumberTest(String s) { + assertThat(vd.validateNumber(s)).isEqualTo(false); } - @Test - //입력에 아무것도 없을 경우 - void inputNothingTest(){ - assertThat(vd.inputNothing("")).isEqualTo(false); + @ParameterizedTest + @ValueSource(strings = {"", NORMAL_INPUT_FOR_NAME}) + //입력에 아무것도 없을 경우 + void inputNothingTest(String s) { + assertThat(vd.inputNothing(s)).isEqualTo(false); } - @Test - //쉼표(,)가 연속으로 나올 경우 - void inputCommaInARowTest(){ assertThat(vd.inputCommaInARow("name,,")).isEqualTo(false); } - - @Test - //쉼표(,)로 시작할 경우 - void startWithCommaTest(){ assertThat(vd.startWithComma(",name")).isEqualTo(false); } + @ParameterizedTest + @ValueSource(strings = {",,,,,,", "kim,song,,park", NORMAL_INPUT_FOR_NAME}) + //쉼표(,)가 연속으로 나올 경우 + void inputCommaInARowTest(String s) { + assertThat(vd.inputCommaInARow(s)).isEqualTo(false); + } - @Test - //쉼표(,)로 끝날 경우 - void endWithCommaTest(){ assertThat(vd.endWithComma("name,")).isEqualTo(false); } + @ParameterizedTest + @ValueSource(strings = {",Kim,Park,Song", ",,Park,Song,Kim", NORMAL_INPUT_FOR_NAME}) + //쉼표(,)로 시작할 경우 + void startWithCommaTest(String s) { + assertThat(vd.startWithComma(s)).isEqualTo(false); + } - @Test - //입력에 영문, 쉼표(,) 이외의 문자가 있을 경우 - void inputCharactersOtherThanNameTest(){ assertThat(vd.inputCharactersOtherThanName("name,이름")).isEqualTo(false); } + @ParameterizedTest + @ValueSource(strings = {"hobihobi,hoho,hoho,", "asdfgg,asdfghj,zxcvbn,,,", NORMAL_INPUT_FOR_NAME}) + //쉼표(,)로 끝날 경우 + void endWithCommaTest(String s) { + assertThat(vd.endWithComma(s)).isEqualTo(false); + } - @Test - //같은 이름이 있을 경우 - void inputSameNameTest(){ assertThat(vd.inputSameName("name,name")).isEqualTo(false); } + @ParameterizedTest + @ValueSource(strings = {"hobㅁ,hoho,hoho", "asd5,asdfghj,zxcvbn", NORMAL_INPUT_FOR_NAME}) + //입력에 영문, 쉼표(,) 이외의 문자가 있을 경우 + void inputCharactersOtherThanNameTest(String s) { + assertThat(vd.inputCharactersOtherThanName(s)).isEqualTo(false); + } - @Test - //이름이 5글자 이상을 경우 - void over5CharactersTest(){ assertThat(vd.over5Characters("person,name")).isEqualTo(false); } + @ParameterizedTest + @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfgg,zxcvbn", NORMAL_INPUT_FOR_NAME}) + //같은 이름이 있을 경우 + void inputSameNameTest(String s) { + assertThat(vd.inputSameName(s)).isEqualTo(false); + } @ParameterizedTest - @ValueSource(strings = {"hobihobi,hoho,hoho", "hobihobi,hoho,hoho", "hobihobi,hoho,hoho"}) - void over5CharacterTest(String s) { - boolean result = vd.over5Characters(s); - assertThat(result).isEqualTo(false); + //이름이 5글자 이상을 경우 + @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfghj,zxcvbn", NORMAL_INPUT_FOR_NAME}) + void overSizeCharacterTest(String s) { + assertThat(vd.overSizeCharacters(s)).isEqualTo(false); } } \ No newline at end of file From 305ea0df803187390726547bad3e015eeea54fb3 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:15:22 +0900 Subject: [PATCH 21/61] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EB=82=B4=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Printer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index 1435ff3..b685b00 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -1,5 +1,9 @@ package io; +import domain.Car; + +import java.util.List; + public class Printer { Message message = new Message(); From fc3b773feb92905f3e3072006df59c93dc21e79b Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:18:11 +0900 Subject: [PATCH 22/61] =?UTF-8?q?test:=20Receiver=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/io/ReceiverTest.java | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/test/java/io/ReceiverTest.java b/src/test/java/io/ReceiverTest.java index 09afd06..0762ac8 100644 --- a/src/test/java/io/ReceiverTest.java +++ b/src/test/java/io/ReceiverTest.java @@ -1,23 +1,13 @@ package io; -import io.Receiver; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import java.util.Arrays; +import java.io.ByteArrayInputStream; +import java.io.InputStream; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; public class ReceiverTest { - - Receiver rc; - - @BeforeEach - void setUp() { - rc = new Receiver(); - } - @Test void receiveLineTest() { String result = rc.receiveLine(); From e0fe4fa86f1032748baf193a9283b658a0ff69b8 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:20:05 +0900 Subject: [PATCH 23/61] =?UTF-8?q?docs:=20Paramiterized=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=20=EC=82=AC=EC=9A=A9=ED=95=98=EA=B8=B0=20?= =?UTF-8?q?=EC=9C=84=ED=95=B4=20testCompile=20=EB=B6=80=EB=B6=84=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a40e892..5730ddc 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ repositories { dependencies { testCompile("org.assertj:assertj-core:3.14.0") - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' + testCompile('org.junit.jupiter:junit-jupiter:5.6.0') testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' } From 2d34588a542ff07fb992f03c12c7b548bc1abe33 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:20:52 +0900 Subject: [PATCH 24/61] =?UTF-8?q?style:=20overSizeCharacters=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Message.java | 2 +- src/main/java/io/MessageInterface.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java index 6f7d076..32fcdb3 100644 --- a/src/main/java/io/Message.java +++ b/src/main/java/io/Message.java @@ -24,7 +24,7 @@ private void exceptionMessageList() { exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작합니다."); exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); - exceptionMessageList.put("OVER_5_CHARACTERS", "이름이 5자 이상입니다."); + exceptionMessageList.put("OVER_SIZE_CHARACTERS", "이름이 5자 이상입니다."); exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); } diff --git a/src/main/java/io/MessageInterface.java b/src/main/java/io/MessageInterface.java index 5e5bf84..f4c70a3 100644 --- a/src/main/java/io/MessageInterface.java +++ b/src/main/java/io/MessageInterface.java @@ -7,7 +7,7 @@ public interface MessageInterface { Map generalMessageList = new HashMap(); Map exceptionMessageList = new HashMap(); - private void genralMessageList() { + private void generalMessageList() { generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); generalMessageList.put("OPERATION_RESULT", "실행 결과"); @@ -20,7 +20,7 @@ private void exceptionMessageList() { exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); - exceptionMessageList.put("OVER_5_CHARACTERS", "이름이 5자 이상입니다."); + exceptionMessageList.put("OVER_SIZE_CHARACTERS", "이름이 5자 이상입니다."); exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); } From e1c98f337df067e7d4c7c4e2b27adba4239ff17b Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:21:26 +0900 Subject: [PATCH 25/61] =?UTF-8?q?style:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EB=9D=BC=EC=9D=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/domain/Generator.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/domain/Generator.java b/src/main/java/domain/Generator.java index 84c1b05..7db2a5d 100644 --- a/src/main/java/domain/Generator.java +++ b/src/main/java/domain/Generator.java @@ -3,9 +3,7 @@ public class Generator { private int MAX_LIMIT_NUMBER = 10; //default value - Generator() { - - } + Generator() {} Generator(int maxNum) { this.MAX_LIMIT_NUMBER = maxNum; From 38feeaa228d6195f15e50a0076b46f8320f054b8 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:22:12 +0900 Subject: [PATCH 26/61] =?UTF-8?q?test:=20Car=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/CarTest.java | 32 +++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/test/java/domain/CarTest.java diff --git a/src/test/java/domain/CarTest.java b/src/test/java/domain/CarTest.java new file mode 100644 index 0000000..a56b9d3 --- /dev/null +++ b/src/test/java/domain/CarTest.java @@ -0,0 +1,32 @@ +package domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.*; + +class CarTest { + Car car; + private final String DEFAULT_NAME = "Kim"; + + @BeforeEach + void setUp() { + car = new Car(DEFAULT_NAME); + } + + @Test + void getPositionTest() { + assertThat(0).isEqualTo(car.getPosition()); + car.moveForward(); + assertThat(1).isEqualTo(car.getPosition()); + car.moveForward(); + assertThat(2).isEqualTo(car.getPosition()); + } + + @Test + void getName() { + assertThat(DEFAULT_NAME).isEqualTo(car.getName()); + } + +} \ No newline at end of file From c47f82fa79109285e42f639b25431d077e594085 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:22:42 +0900 Subject: [PATCH 27/61] =?UTF-8?q?test:=20GamePlayer=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/GamePlayerTest.java | 74 ++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 src/test/java/domain/GamePlayerTest.java diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java new file mode 100644 index 0000000..ebc0b70 --- /dev/null +++ b/src/test/java/domain/GamePlayerTest.java @@ -0,0 +1,74 @@ +package domain; + +import io.Printer; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.InputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class GamePlayerTest { + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + GamePlayer gameplayer; + Printer printer; + + @BeforeEach + void setUp() { + System.setOut(new PrintStream(outputStreamCaptor)); + gameplayer = new GamePlayer(); + } + + @Test + void checkWhoIsWinnerTest() { + List cars = new ArrayList<>(); + Car car1 = new Car("kim"); + Car car2 = new Car("park"); + cars.add(car1); + cars.add(car2); + Car[] carArray = new Car[]{car1, car2}; + + assertThat(cars).isEqualTo(gameplayer.checkWhoIsWinner(carArray)); + } + + @Test + void makeArrayAfterGettingNameTest() { + String input = "kim,park,song"; + InputStream stdin = System.in; + + try { + System.setIn(new ByteArrayInputStream(input.getBytes())); + gameplayer = new GamePlayer(); + Car[] cars = gameplayer.makeArrayAfterGettingName(); + assertThat("kim").isEqualTo(cars[0].getName()); + assertThat("park").isEqualTo(cars[1].getName()); + assertThat("song").isEqualTo(cars[2].getName()); + } finally { + System.setIn(stdin); + } + } + + + @Test + void makeCountAfterGettingNumberTest() { + String input = "5"; + InputStream stdin = System.in; + int result; + + try { + System.setIn(new ByteArrayInputStream(input.getBytes())); + gameplayer = new GamePlayer(); + result = gameplayer.makeCountAfterGettingNumber(); + } finally { + System.setIn(stdin); + } + + int expected = 5; + assertThat(expected).isEqualTo(result); + } +} \ No newline at end of file From 2c62d0c6794084afea920670f407ffd8477b70ab Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:23:25 +0900 Subject: [PATCH 28/61] =?UTF-8?q?test:=20Generator=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/GeneratorTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/test/java/domain/GeneratorTest.java diff --git a/src/test/java/domain/GeneratorTest.java b/src/test/java/domain/GeneratorTest.java new file mode 100644 index 0000000..3f88697 --- /dev/null +++ b/src/test/java/domain/GeneratorTest.java @@ -0,0 +1,20 @@ +package domain; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class GeneratorTest { + Generator generator; + + @BeforeEach + void setUp() { + generator = new Generator(10); + } + + @Test + void generateRandomNumberTest() { + assertThat(generator.generateRandomNumber()).isBetween(0, 9); + } +} \ No newline at end of file From 838a38bc6fda5919e1f04c35d5a0482095d0f76b Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:23:47 +0900 Subject: [PATCH 29/61] =?UTF-8?q?test:=20Message=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/io/MessageTest.java | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/test/java/io/MessageTest.java diff --git a/src/test/java/io/MessageTest.java b/src/test/java/io/MessageTest.java new file mode 100644 index 0000000..93c99e3 --- /dev/null +++ b/src/test/java/io/MessageTest.java @@ -0,0 +1,28 @@ +package io; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +class MessageTest { + + Message message; + + @BeforeEach + void setUp() { + message = new Message(); + } + + @Test + void selectMessageFromGeneral() { + String result = "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"; + assertThat(message.selectMessageFromGeneral("INPUT_NAMEOFCAR")).isEqualTo(result); + } + + @Test + void selectMessageFromException() { + String result = "아무 문자도 입력되지 않았습니다."; + assertThat(message.selectMessageFromException("INPUT_NOTHING")).isEqualTo(result); + } +} \ No newline at end of file From 1a10b46c766ae8b8aa29eab90068253e93112494 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:24:10 +0900 Subject: [PATCH 30/61] =?UTF-8?q?test:=20Printer=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/io/PrinterTest.java | 62 +++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/test/java/io/PrinterTest.java diff --git a/src/test/java/io/PrinterTest.java b/src/test/java/io/PrinterTest.java new file mode 100644 index 0000000..1f08a85 --- /dev/null +++ b/src/test/java/io/PrinterTest.java @@ -0,0 +1,62 @@ +package io; + +import domain.Car; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.util.ArrayList; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertEquals; + +class PrinterTest { + private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream(); + Printer printer; + List cars = new ArrayList<>(); + + @BeforeEach + void setUp() { + System.setOut(new PrintStream(outputStreamCaptor)); + printer = new Printer(); + } + + @Test + void printProgressWithSymbolTest() { + printer.printProgressWithSymbol("kim", 5); + assertEquals("kim : -----", outputStreamCaptor.toString().trim()); + } + + @Test + void makeWinnerToStringTest() { + Car car1 = new Car("kim"); + Car car2 = new Car("park"); + cars.add(car1); + cars.add(car2); + + String result = printer.makeWinnerToString(cars); + assertThat(result).isEqualTo("kim, park"); + } + + @Test + void printWinnerTest() { + printer.printWinner("hobi, nonus"); + assertEquals("hobi, nonus가 최종 우승했습니다.", outputStreamCaptor.toString().trim()); + + } + + @Test + void printGeneralMessageTest() { + printer.printGeneralMessage("INPUT_COUNT"); + assertEquals("시도할 회수는 몇회인가요?", outputStreamCaptor.toString().trim()); + + } + + @Test + void printExceptionMessageTest() { + printer.printExceptionMessage("INPUT_NOTHING"); + assertEquals("아무 문자도 입력되지 않았습니다.", outputStreamCaptor.toString().trim()); + } +} \ No newline at end of file From d9fbd3ae758604b47e20757fe6e25809e6f971e7 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:26:53 +0900 Subject: [PATCH 31/61] =?UTF-8?q?style:=20overSizeCharacters=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=20=EC=9D=B4=EB=A6=84=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 2 +- src/main/java/domain/ValidatorInterface.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index daa8af3..9c3995f 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -93,7 +93,7 @@ public boolean inputSameName(String s) { } @Override - public boolean over5Characters(String s) { + public boolean overSizeCharacters(String s) { String[] splitName = s.split(","); for (String i : splitName) if (i.length() > MAX_NAME_SIZE) { diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java index ac41042..7173384 100644 --- a/src/main/java/domain/ValidatorInterface.java +++ b/src/main/java/domain/ValidatorInterface.java @@ -5,7 +5,6 @@ public interface ValidatorInterface { boolean validateNumber(String s); - boolean inputNothing(String s); boolean inputCommaInARow(String s); From 932e5fef7b8fd3079afa617875c0a0cd4fd89313 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:27:37 +0900 Subject: [PATCH 32/61] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EB=82=B4=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Printer.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index b685b00..e886c5d 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -7,6 +7,32 @@ public class Printer { Message message = new Message(); + private static String DEFAULT_SYMBOL = "-"; + + public void printProgressWithSymbol(String name, int position) { + String result = ""; + for(int i = 0;i < position;i++) + result += DEFAULT_SYMBOL; + + System.out.printf("%5s : %s\n", name, result); + } + + public String makeWinnerToString(List cars) { + String winner = cars.get(0).getName(); + + if(cars.size() > 1) { + for(int i = 1;i Date: Wed, 10 Mar 2021 23:27:58 +0900 Subject: [PATCH 33/61] =?UTF-8?q?test:=20Receiver=20=ED=85=8C=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/io/ReceiverTest.java | 39 +++++++++++++++++++++--------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/test/java/io/ReceiverTest.java b/src/test/java/io/ReceiverTest.java index 0762ac8..6919d06 100644 --- a/src/test/java/io/ReceiverTest.java +++ b/src/test/java/io/ReceiverTest.java @@ -8,22 +8,39 @@ import static org.assertj.core.api.Assertions.assertThat; public class ReceiverTest { - @Test - void receiveLineTest() { - String result = rc.receiveLine(); - // pobi,crong,honux - assertThat(result).isEqualTo("pobi,crong,honux"); - } - @Test void receiveNameTest() { - String[] result = rc.receiveName("pobi,crong,honux"); - assertThat(result).isEqualTo(Arrays.asList("pobi", "crong", "honux")); + String input = "kim,park,song"; + InputStream stdin = System.in; + String[] result; + + try { + System.setIn(new ByteArrayInputStream(input.getBytes())); + Receiver receiver = new Receiver(); + result = receiver.receiveName(); + } finally { + System.setIn(stdin); + } + + String[] expected = {"kim", "park", "song"}; + assertThat(expected).isEqualTo(result); } @Test void receiveNumberTest() { - int result = rc.receiveNumber("3"); - assertThat(result).isEqualTo(3); + String input = "5"; + InputStream stdin = System.in; + int result; + + try { + System.setIn(new ByteArrayInputStream(input.getBytes())); + Receiver receiver = new Receiver(); + result = receiver.receiveNumber(); + } finally { + System.setIn(stdin); + } + + int expected = 5; + assertThat(expected).isEqualTo(result); } } \ No newline at end of file From e0b9f8d5b201ae2145e39dec909e7a2dad20436e Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:28:27 +0900 Subject: [PATCH 34/61] =?UTF-8?q?feat:=20=EA=B2=8C=EC=9E=84=20=EB=82=B4=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Message.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java index 32fcdb3..8c71119 100644 --- a/src/main/java/io/Message.java +++ b/src/main/java/io/Message.java @@ -15,6 +15,8 @@ private void generalMessageList() { generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); generalMessageList.put("OPERATION_RESULT", "실행 결과"); + generalMessageList.put("FIANL_WINNER", "가 최종 우승했습니다."); + generalMessageList.put("DEFAULT_SPACE", ""); } private void exceptionMessageList() { From 0b4dd36a70e9b3b794f6bc22afdb30cf84901685 Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:30:23 +0900 Subject: [PATCH 35/61] =?UTF-8?q?refactor:=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20printer=20=EA=B0=9D=EC=B2=B4=EC=97=90?= =?UTF-8?q?=EC=84=9C=20=EC=B2=98=EB=A6=AC=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index ca51668..5b9dae1 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -41,14 +41,18 @@ public int makeCountAfterGettingNumber() { } public void launchAllRound(Car[] cars, int countRound) { - System.out.println("실행 결과"); - for (int i = 0; i < countRound; i++) { for (Car j : cars) { judgeToMove(j, generator.generateRandomNumber()); - System.out.println(j.getName() + ":" + j.getPosition()); + printer.printProgressWithSymbol(j.getName(), j.getPosition()); + } + printer.printGeneralMessage("DEFAULT_SPACE"); + + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); } - System.out.println("\n"); } } @@ -74,13 +78,11 @@ public List checkWhoIsWinner(Car[] cars) { public void run() { Car[] cars = makeArrayAfterGettingName(); int countRound = makeCountAfterGettingNumber(); - List winner; + printer.printGeneralMessage("OPERATION_RESULT"); launchAllRound(cars, countRound); - winner = checkWhoIsWinner(cars); - - for(Car i : winner) - System.out.println(i.getName()); + List winner = checkWhoIsWinner(cars); + printer.printWinner(printer.makeWinnerToString(winner)); } } From 7bb1ace4800d9c681db29e0d97b0f6a014815eae Mon Sep 17 00:00:00 2001 From: Chae Date: Wed, 10 Mar 2021 23:30:43 +0900 Subject: [PATCH 36/61] =?UTF-8?q?docs:=20empty=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/empty.txt | 0 src/test/java/empty.txt | 0 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/java/empty.txt delete mode 100644 src/test/java/empty.txt diff --git a/src/main/java/empty.txt b/src/main/java/empty.txt deleted file mode 100644 index e69de29..0000000 diff --git a/src/test/java/empty.txt b/src/test/java/empty.txt deleted file mode 100644 index e69de29..0000000 From c7d7fd1069c9a54afcf09d7354d53a0e1f466dc3 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 03:21:43 +0900 Subject: [PATCH 37/61] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20public=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/domain/GamePlayer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 5b9dae1..965a07d 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -19,12 +19,12 @@ public GamePlayer() { private final int WINNER_CONDITION = 4; - public void judgeToMove(Car car, int randomNumber) { + void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) car.moveForward(); } - public Car[] makeArrayAfterGettingName() { + Car[] makeArrayAfterGettingName() { printer.printGeneralMessage("INPUT_NAMEOFCAR"); String[] listOfName = receiver.receiveName(); @@ -35,12 +35,12 @@ public Car[] makeArrayAfterGettingName() { return cars; } - public int makeCountAfterGettingNumber() { + int makeCountAfterGettingNumber() { printer.printGeneralMessage("INPUT_COUNT"); return receiver.receiveNumber(); } - public void launchAllRound(Car[] cars, int countRound) { + void launchAllRound(Car[] cars, int countRound) { for (int i = 0; i < countRound; i++) { for (Car j : cars) { judgeToMove(j, generator.generateRandomNumber()); @@ -56,7 +56,7 @@ public void launchAllRound(Car[] cars, int countRound) { } } - public List checkWhoIsWinner(Car[] cars) { + List checkWhoIsWinner(Car[] cars) { List result = new ArrayList<>(); int maxNumber = 0; From 66dd3b619b671299b26a8ff66f6b7ecb94e63bdb Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 03:23:55 +0900 Subject: [PATCH 38/61] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=20=EB=B0=8F=20=EB=B3=80=EC=88=98=20=EB=84=A4=EC=9D=B4=EB=B0=8D?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 965a07d..8d3d8b9 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -19,7 +19,7 @@ public GamePlayer() { private final int WINNER_CONDITION = 4; - void judgeToMove(Car car, int randomNumber) { + void judgeAndMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) car.moveForward(); } @@ -42,9 +42,9 @@ int makeCountAfterGettingNumber() { void launchAllRound(Car[] cars, int countRound) { for (int i = 0; i < countRound; i++) { - for (Car j : cars) { - judgeToMove(j, generator.generateRandomNumber()); - printer.printProgressWithSymbol(j.getName(), j.getPosition()); + for (Car car : cars) { + judgeAndMove(car, generator.generateRandomNumber()); + printer.printProgressWithSymbol(car.getName(), car.getPosition()); } printer.printGeneralMessage("DEFAULT_SPACE"); @@ -60,15 +60,15 @@ List checkWhoIsWinner(Car[] cars) { List result = new ArrayList<>(); int maxNumber = 0; - for (Car i : cars) { - if(i.getPosition() == maxNumber){ - result.add(i); + for (Car car : cars) { + if(car.getPosition() == maxNumber){ + result.add(car); continue; } - if (i.getPosition() > maxNumber) { - maxNumber = i.getPosition(); + if (car.getPosition() > maxNumber) { + maxNumber = car.getPosition(); result.clear(); - result.add(i); + result.add(car); } } From a595c434a03a69943e1a8c05d14cd609053f9900 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 03:25:49 +0900 Subject: [PATCH 39/61] =?UTF-8?q?refactor:=20=EC=9C=84=ED=97=98=ED=95=9C?= =?UTF-8?q?=20=EC=A0=91=EA=B7=BC=20=EC=A0=9C=EC=96=B4=EC=9E=90=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=BD=94=EB=93=9C=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/domain/GamePlayer.java | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 8d3d8b9..5ff0108 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -7,9 +7,9 @@ import java.util.List; public class GamePlayer { - Printer printer; - Receiver receiver; - Generator generator; + private final Printer printer; + private final Receiver receiver; + private final Generator generator; public GamePlayer() { this.printer = new Printer(); @@ -47,12 +47,6 @@ void launchAllRound(Car[] cars, int countRound) { printer.printProgressWithSymbol(car.getName(), car.getPosition()); } printer.printGeneralMessage("DEFAULT_SPACE"); - - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } } } From 085231980aa3fc5a50d88d0c39f42909f4691766 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 03:30:38 +0900 Subject: [PATCH 40/61] =?UTF-8?q?refactor:=20=EC=9C=84=EC=99=80=20?= =?UTF-8?q?=EA=B0=99=EC=9D=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 5ff0108..0c4fa39 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -7,6 +7,8 @@ import java.util.List; public class GamePlayer { + private static final int WINNER_CONDITION = 4; + private final Printer printer; private final Receiver receiver; private final Generator generator; @@ -17,8 +19,6 @@ public GamePlayer() { this.generator = new Generator(10); } - private final int WINNER_CONDITION = 4; - void judgeAndMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) car.moveForward(); @@ -51,22 +51,22 @@ void launchAllRound(Car[] cars, int countRound) { } List checkWhoIsWinner(Car[] cars) { - List result = new ArrayList<>(); + List winner = new ArrayList<>(); int maxNumber = 0; for (Car car : cars) { if(car.getPosition() == maxNumber){ - result.add(car); + winner.add(car); continue; } if (car.getPosition() > maxNumber) { maxNumber = car.getPosition(); - result.clear(); - result.add(car); + winner.clear(); + winner.add(car); } } - return result; + return winner; } public void run() { From 422c3da4708ba07fc92c94c0bfebdfdfea2721b7 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 03:33:35 +0900 Subject: [PATCH 41/61] =?UTF-8?q?refactor:=20assertThat=20actual=EA=B3=BC?= =?UTF-8?q?=20expected=EC=9D=98=20=EC=98=A4=EC=9A=A9=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/CarTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/domain/CarTest.java b/src/test/java/domain/CarTest.java index a56b9d3..8a12c7f 100644 --- a/src/test/java/domain/CarTest.java +++ b/src/test/java/domain/CarTest.java @@ -17,11 +17,11 @@ void setUp() { @Test void getPositionTest() { - assertThat(0).isEqualTo(car.getPosition()); + assertThat(car.getPosition()).isEqualTo(0); car.moveForward(); - assertThat(1).isEqualTo(car.getPosition()); + assertThat(car.getPosition()).isEqualTo(1); car.moveForward(); - assertThat(2).isEqualTo(car.getPosition()); + assertThat(car.getPosition()).isEqualTo(2); } @Test From 8d80c1270600b4566b292ec905fbf9b5422df880 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 15:59:11 +0900 Subject: [PATCH 42/61] =?UTF-8?q?refactor:=20=EC=A0=88=EC=B0=A8=EC=A7=80?= =?UTF-8?q?=ED=96=A5=EC=A0=81=EC=9D=B8=20=EC=BD=94=EB=93=9C=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 0c4fa39..713a4d1 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -55,20 +55,33 @@ List checkWhoIsWinner(Car[] cars) { int maxNumber = 0; for (Car car : cars) { - if(car.getPosition() == maxNumber){ + if(judgeSameWithMax(maxNumber, car)){ winner.add(car); - continue; } - if (car.getPosition() > maxNumber) { - maxNumber = car.getPosition(); - winner.clear(); - winner.add(car); + if (judgeOverMax(maxNumber, car)) { + maxNumber = initWinner(winner, car); } } return winner; } + private int initWinner(List winner, Car car) { + int maxNumber = car.getPosition(); + winner.clear(); + winner.add(car); + + return maxNumber; + } + + boolean judgeOverMax(int maxNumber, Car car) { + return car.getPosition() > maxNumber; + } + + boolean judgeSameWithMax(int maxNumber, Car car) { + return car.getPosition() == maxNumber; + } + public void run() { Car[] cars = makeArrayAfterGettingName(); int countRound = makeCountAfterGettingNumber(); From 645be80f99b0a769ceed374f8e15ad95b5cea982 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 16:16:25 +0900 Subject: [PATCH 43/61] =?UTF-8?q?refactor:=20=EC=9D=B4=EB=B2=88=20?= =?UTF-8?q?=EB=AF=B8=EC=85=98=EC=97=90=EC=84=9C=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=83=9D=EC=84=B1=EC=9E=90=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Generator.java | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/java/domain/Generator.java b/src/main/java/domain/Generator.java index 7db2a5d..1b241b8 100644 --- a/src/main/java/domain/Generator.java +++ b/src/main/java/domain/Generator.java @@ -1,14 +1,7 @@ package domain; public class Generator { - private int MAX_LIMIT_NUMBER = 10; //default value - - Generator() {} - - Generator(int maxNum) { - this.MAX_LIMIT_NUMBER = maxNum; - } - + private final int MAX_LIMIT_NUMBER = 10; //default value public int generateRandomNumber() { return (int) ((Math.random() * 10000) % MAX_LIMIT_NUMBER); } From 302139ebae72954f23f27fd64cbb45e9297bb9bb Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 16:31:05 +0900 Subject: [PATCH 44/61] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=BD=94=EB=93=9C=EC=A0=9C=EA=B1=B0=20=EB=B0=8F=20?= =?UTF-8?q?=ED=9A=8D=EC=9D=BC=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C=20?= =?UTF-8?q?=EC=83=81=EC=88=98=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 2 +- src/main/java/domain/Validator.java | 6 +++--- src/test/java/domain/GeneratorTest.java | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 713a4d1..2a937b6 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -16,7 +16,7 @@ public class GamePlayer { public GamePlayer() { this.printer = new Printer(); this.receiver = new Receiver(); - this.generator = new Generator(10); + this.generator = new Generator(); } void judgeAndMove(Car car, int randomNumber) { diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 9c3995f..5c1edf6 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -9,7 +9,7 @@ public class Validator implements ValidatorInterface { private static final int MAX_NAME_SIZE = 5; private static final String valiNumber = "^[0-9]+$"; - private static final String commaInARow = "^(,,)+$"; + private static final String commaInARow = "^.*(,,).*+$"; private static final String characterOTN = "^[a-zA-Z,]+$"; Printer printer; @@ -24,7 +24,7 @@ && inputCommaInARow(s) && inputCharactersOtherThanName(s) && startWithComma(s) && endWithComma(s) - && this.overSizeCharacters(s) + && overSizeCharacters(s) && inputSameName(s); } @@ -44,7 +44,7 @@ public boolean inputNothing(String s) { @Override public boolean inputCommaInARow(String s) { - if (Pattern.matches("^.*(,,).*+$", s)) { //체크 필요 + if (Pattern.matches(commaInARow, s)) { //체크 필요 printer.printExceptionMessage("INPUT_COMMA_IN_A_ROW"); return false; } diff --git a/src/test/java/domain/GeneratorTest.java b/src/test/java/domain/GeneratorTest.java index 3f88697..fcc70d2 100644 --- a/src/test/java/domain/GeneratorTest.java +++ b/src/test/java/domain/GeneratorTest.java @@ -10,7 +10,7 @@ class GeneratorTest { @BeforeEach void setUp() { - generator = new Generator(10); + generator = new Generator(); } @Test From 93dde0d97a940213474b53b5f13bb3780ddb17b2 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 16:39:28 +0900 Subject: [PATCH 45/61] =?UTF-8?q?refactor:=20Printer=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EC=9D=98=20=EC=97=AD=ED=95=A0=20=EC=A0=9C=ED=95=9C=20?= =?UTF-8?q?=EB=B0=8F=20=EA=B4=80=EB=A0=A8=20=EB=A9=94=EC=86=8C=EB=93=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 13 ++++++++++++- src/main/java/io/Printer.java | 12 ------------ src/test/java/io/PrinterTest.java | 5 ++++- 3 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 2a937b6..792345f 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -82,6 +82,17 @@ boolean judgeSameWithMax(int maxNumber, Car car) { return car.getPosition() == maxNumber; } + public String makeWinnerToString(List cars) { + String winner = cars.get(0).getName(); + + if(cars.size() > 1) { + for(int i = 1;i winner = checkWhoIsWinner(cars); - printer.printWinner(printer.makeWinnerToString(winner)); + printer.printWinner(makeWinnerToString(winner)); } } diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index e886c5d..33de1ce 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -17,18 +17,6 @@ public void printProgressWithSymbol(String name, int position) { System.out.printf("%5s : %s\n", name, result); } - public String makeWinnerToString(List cars) { - String winner = cars.get(0).getName(); - - if(cars.size() > 1) { - for(int i = 1;i cars = new ArrayList<>(); + GamePlayer gamePlayer; @BeforeEach void setUp() { System.setOut(new PrintStream(outputStreamCaptor)); printer = new Printer(); + gamePlayer = new GamePlayer(); } @Test @@ -36,7 +39,7 @@ void makeWinnerToStringTest() { cars.add(car1); cars.add(car2); - String result = printer.makeWinnerToString(cars); + String result = gamePlayer.makeWinnerToString(cars); assertThat(result).isEqualTo("kim, park"); } From bfb6277e1197388c079dac817b490dc00a528287 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 21 Mar 2021 16:49:01 +0900 Subject: [PATCH 46/61] =?UTF-8?q?refactor:=20Car=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4=EC=97=90=20maxNumber=EB=A5=BC=20=ED=99=95=EC=9D=B8?= =?UTF-8?q?=ED=95=98=EB=8A=94=20=EC=97=AD=ED=95=A0=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Car.java | 8 ++++++++ src/main/java/domain/GamePlayer.java | 12 ++---------- src/main/java/io/Receiver.java | 6 +++--- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/domain/Car.java b/src/main/java/domain/Car.java index f3e992f..9d4a28e 100644 --- a/src/main/java/domain/Car.java +++ b/src/main/java/domain/Car.java @@ -19,4 +19,12 @@ public String getName() { public void moveForward() { this.position++; } + + public boolean isMaxNumber(int maxNumber) { + return this.position == maxNumber; + } + + public boolean isOverMaxNumber(int maxNumber) { + return this.position > maxNumber; + } } diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 792345f..5f9da97 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -55,10 +55,10 @@ List checkWhoIsWinner(Car[] cars) { int maxNumber = 0; for (Car car : cars) { - if(judgeSameWithMax(maxNumber, car)){ + if(car.isMaxNumber(maxNumber)){ winner.add(car); } - if (judgeOverMax(maxNumber, car)) { + if (car.isOverMaxNumber(maxNumber)) { maxNumber = initWinner(winner, car); } } @@ -74,14 +74,6 @@ private int initWinner(List winner, Car car) { return maxNumber; } - boolean judgeOverMax(int maxNumber, Car car) { - return car.getPosition() > maxNumber; - } - - boolean judgeSameWithMax(int maxNumber, Car car) { - return car.getPosition() == maxNumber; - } - public String makeWinnerToString(List cars) { String winner = cars.get(0).getName(); diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java index c9a54c7..6542e98 100644 --- a/src/main/java/io/Receiver.java +++ b/src/main/java/io/Receiver.java @@ -6,9 +6,9 @@ public class Receiver { boolean reEnter = false; - String inputLine = ""; - Scanner scanner = new Scanner(System.in); - Validator validator = new Validator(); + private String inputLine = ""; + private Scanner scanner = new Scanner(System.in); + private Validator validator = new Validator(); public String[] receiveName() { do{ From b87577f75180ece2abf064b451fd37060b962c0a Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 17:55:53 +0900 Subject: [PATCH 47/61] =?UTF-8?q?refactor:=20MessageInterface=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C=20=EB=B0=8F=20Message=ED=81=B4=EB=9E=98=EC=8A=A4=20?= =?UTF-8?q?=EB=82=B4=EB=B6=80=20Hashmap=EC=97=90=EC=84=9C=20enum=EC=9C=BC?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 6 +-- src/main/java/io/Message.java | 69 ++++++++++++++++---------- src/main/java/io/MessageInterface.java | 29 ----------- 3 files changed, 46 insertions(+), 58 deletions(-) delete mode 100644 src/main/java/io/MessageInterface.java diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 5c1edf6..af3e793 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -80,11 +80,11 @@ public boolean inputCharactersOtherThanName(String s) { @Override public boolean inputSameName(String s) { - List CAR_NAME_LIST = Arrays.asList(s.split(",")); - int sizeOfNameList = CAR_NAME_LIST.size(); + List carNames = Arrays.asList(s.split(",")); + int sizeOfNameList = carNames.size(); for (int i = 0; i < sizeOfNameList; i++) { - if (CAR_NAME_LIST.subList(i + 1, sizeOfNameList).contains(CAR_NAME_LIST.get(i))) { + if (carNames.subList(i + 1, sizeOfNameList).contains(carNames.get(i))) { printer.printExceptionMessage("INPUT_SAME_NAME"); return false; } diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java index 8c71119..1b8699d 100644 --- a/src/main/java/io/Message.java +++ b/src/main/java/io/Message.java @@ -1,42 +1,59 @@ package io; +import java.security.Key; import java.util.HashMap; import java.util.Map; -public class Message implements MessageInterface { - Map generalMessageList = new HashMap(); - Map exceptionMessageList = new HashMap(); +public class Message { + private GeneralMessages generalMessages; + private ExceptionMessages exceptionMessages; - public Message() { - this.exceptionMessageList(); - this.generalMessageList(); - } - private void generalMessageList() { - generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); - generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); - generalMessageList.put("OPERATION_RESULT", "실행 결과"); - generalMessageList.put("FIANL_WINNER", "가 최종 우승했습니다."); - generalMessageList.put("DEFAULT_SPACE", ""); + public enum GeneralMessages { + INPUT_NAMEOFCAR("경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"), + INPUT_COUNT("시도할 회수는 몇회인가요?"), + OPERATION_RESULT("실행 결과"), + FIANL_WINNER("가 최종 우승했습니다."), + DEFAULT_SPACE(""); + + private String message; + + GeneralMessages(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } } - private void exceptionMessageList() { - exceptionMessageList.put("INPUT_NOTHING", "아무 문자도 입력되지 않았습니다."); - exceptionMessageList.put("INPUT_COMMA_IN_A_ROW", "쉼표(,)가 연속으로 입력되었습니다."); - exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); - exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작합니다."); - exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); - exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); - exceptionMessageList.put("OVER_SIZE_CHARACTERS", "이름이 5자 이상입니다."); - exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); + public enum ExceptionMessages { + INPUT_NOTHING("아무 문자도 입력되지 않았습니다."), + INPUT_COMMA_IN_A_ROW("쉼표(,)가 연속으로 입력되었습니다."), + INPUT_CHARACTERS_OTHER_THAN_NAME("영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."), + START_WITH_COMMA("쉼표(,)로 시작합니다."), + INPUT_SAME_NAME("쉼표(,)로 끝납니다."), + OVER_SIZE_CHARACTERS("같은 이름이 입력되었습니다."), + INPUT_CHARACTERS_OTHER_THAN_DIGIT("이름이 5자 이상입니다."), + END_WITH_COMMA("숫자 이외의 다른 문자가 입력되었습니다."); + + private String message; + + ExceptionMessages(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } } - @Override public String selectMessageFromGeneral(String Keyword) { - return generalMessageList.get(Keyword); + generalMessages = GeneralMessages.valueOf(Keyword); + return generalMessages.getMessage(); } - @Override public String selectMessageFromException(String Keyword) { - return exceptionMessageList.get(Keyword); + exceptionMessages = ExceptionMessages.valueOf(Keyword); + return exceptionMessages.getMessage(); } } \ No newline at end of file diff --git a/src/main/java/io/MessageInterface.java b/src/main/java/io/MessageInterface.java deleted file mode 100644 index f4c70a3..0000000 --- a/src/main/java/io/MessageInterface.java +++ /dev/null @@ -1,29 +0,0 @@ -package io; - -import java.util.HashMap; -import java.util.Map; - -public interface MessageInterface { - Map generalMessageList = new HashMap(); - Map exceptionMessageList = new HashMap(); - - private void generalMessageList() { - generalMessageList.put("INPUT_NAMEOFCAR", "경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"); - generalMessageList.put("INPUT_COUNT", "시도할 회수는 몇회인가요?"); - generalMessageList.put("OPERATION_RESULT", "실행 결과"); - } - - private void exceptionMessageList() { - exceptionMessageList.put("INPUT_NOTHING", "아무 문자도 입력되지 않았습니다."); - exceptionMessageList.put("INPUT_COMMA_IN_A_ROW", "쉼표(,)가 연속으로 입력되었습니다."); - exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작됩니다."); - exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); - exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); - exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); - exceptionMessageList.put("OVER_SIZE_CHARACTERS", "이름이 5자 이상입니다."); - exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_DIGIT", "숫자 이외의 다른 문자가 입력되었습니다."); - } - - String selectMessageFromGeneral(String Keyword); - String selectMessageFromException(String Keyword); -} From 9a31667b5bba2fdcad49626f9e24f6ce9c42dcd9 Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 18:27:50 +0900 Subject: [PATCH 48/61] =?UTF-8?q?refactor:=20=EC=9D=B4=EC=A0=84=20?= =?UTF-8?q?=EC=BB=A4=EB=B0=8B=EC=9D=98=20=EB=B3=80=EA=B2=BD=EC=82=AC?= =?UTF-8?q?=ED=95=AD=20Validator=20Class=EC=97=90=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 41 +++++++++++++++++++++-------- src/main/java/io/Message.java | 4 +-- src/main/java/io/Printer.java | 4 +++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index af3e793..19046b1 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -1,5 +1,6 @@ package domain; +import io.Message; import io.Printer; import java.util.Arrays; @@ -11,10 +12,15 @@ public class Validator implements ValidatorInterface { private static final String valiNumber = "^[0-9]+$"; private static final String commaInARow = "^.*(,,).*+$"; private static final String characterOTN = "^[a-zA-Z,]+$"; + private static final Character COMMA = ','; + private static final String NOTHING = ""; + Printer printer; + Message message; public Validator() { printer = new Printer(); + message = new Message(); } @Override @@ -35,8 +41,10 @@ public boolean validateNumber(String s) { @Override public boolean inputNothing(String s) { - if (s.equals("")) { - printer.printExceptionMessage("INPUT_NOTHING"); + String messageCode = Message.ExceptionMessages.INPUT_NOTHING.getMessage(); + + if (s.equals(NOTHING)) { + printer.printMessages(messageCode); return false; } return true; @@ -44,8 +52,10 @@ public boolean inputNothing(String s) { @Override public boolean inputCommaInARow(String s) { - if (Pattern.matches(commaInARow, s)) { //체크 필요 - printer.printExceptionMessage("INPUT_COMMA_IN_A_ROW"); + String messageCode = Message.ExceptionMessages.INPUT_COMMA_IN_A_ROW.getMessage(); + + if (Pattern.matches(commaInARow, s)) { + printer.printMessages(messageCode); return false; } return true; @@ -53,8 +63,10 @@ public boolean inputCommaInARow(String s) { @Override public boolean startWithComma(String s) { - if (s.charAt(0) == ',') { - printer.printExceptionMessage("START_WITH_COMMA"); + String messageCode = Message.ExceptionMessages.START_WITH_COMMA.getMessage(); + + if (s.charAt(0) == COMMA) { + printer.printMessages(messageCode); return false; } return true; @@ -62,8 +74,10 @@ public boolean startWithComma(String s) { @Override public boolean endWithComma(String s) { - if (s.charAt(s.length() - 1) == ',') { - printer.printExceptionMessage("END_WITH_COMMA"); + String messageCode = Message.ExceptionMessages.END_WITH_COMMA.getMessage(); + + if (s.charAt(s.length() - 1) == COMMA) { + printer.printMessages(messageCode); return false; } return true; @@ -71,8 +85,10 @@ public boolean endWithComma(String s) { @Override public boolean inputCharactersOtherThanName(String s) { + String messageCode = Message.ExceptionMessages.INPUT_CHARACTERS_OTHER_THAN_NAME.getMessage(); + if (!Pattern.matches(characterOTN, s)) { - printer.printExceptionMessage("INPUT_CHARACTERS_OTHER_THAN_NAME"); + printer.printMessages(messageCode); return false; } return true; @@ -80,12 +96,13 @@ public boolean inputCharactersOtherThanName(String s) { @Override public boolean inputSameName(String s) { + String messageCode = Message.ExceptionMessages.INPUT_SAME_NAME.getMessage(); List carNames = Arrays.asList(s.split(",")); int sizeOfNameList = carNames.size(); for (int i = 0; i < sizeOfNameList; i++) { if (carNames.subList(i + 1, sizeOfNameList).contains(carNames.get(i))) { - printer.printExceptionMessage("INPUT_SAME_NAME"); + printer.printMessages(messageCode); return false; } } @@ -94,10 +111,12 @@ public boolean inputSameName(String s) { @Override public boolean overSizeCharacters(String s) { + String messageCode = Message.ExceptionMessages.OVER_SIZE_CHARACTERS.getMessage(); String[] splitName = s.split(","); + for (String i : splitName) if (i.length() > MAX_NAME_SIZE) { - printer.printExceptionMessage("OVER_SIZE_CHARACTERS"); + printer.printMessages(messageCode); return false; } return true; diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java index 1b8699d..ffae1f9 100644 --- a/src/main/java/io/Message.java +++ b/src/main/java/io/Message.java @@ -5,8 +5,8 @@ import java.util.Map; public class Message { - private GeneralMessages generalMessages; - private ExceptionMessages exceptionMessages; + public GeneralMessages generalMessages; + public ExceptionMessages exceptionMessages; public enum GeneralMessages { INPUT_NAMEOFCAR("경주할 자동차 이름을 입력하세요. (이름은 쉼표(,) 기준으로 구분)"), diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index 33de1ce..ea1c3c8 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -28,4 +28,8 @@ public void printGeneralMessage(String s){ public void printExceptionMessage(String s){ System.out.println(message.selectMessageFromException(s)); } + + public void printMessages(String message) { + System.out.println(message); + } } From 51d46b3357a3d52f320d563895c34719aac5d441 Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 21:51:29 +0900 Subject: [PATCH 49/61] =?UTF-8?q?refactor:=20GamePlayer=20Class=20?= =?UTF-8?q?=EC=9C=84=EC=9D=98=20=EC=BB=A4=EB=B0=8B=20=EB=82=B4=EC=9A=A9=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 14 ++++++++++---- src/main/java/domain/Validator.java | 2 -- src/main/java/io/Printer.java | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 5f9da97..7a6e1b0 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -1,5 +1,6 @@ package domain; +import io.Message; import io.Printer; import io.Receiver; @@ -25,7 +26,8 @@ void judgeAndMove(Car car, int randomNumber) { } Car[] makeArrayAfterGettingName() { - printer.printGeneralMessage("INPUT_NAMEOFCAR"); + String messageCode = Message.GeneralMessages.INPUT_NAMEOFCAR.getMessage(); + printer.printMessages(messageCode); String[] listOfName = receiver.receiveName(); Car[] cars = new Car[listOfName.length]; @@ -36,17 +38,19 @@ Car[] makeArrayAfterGettingName() { } int makeCountAfterGettingNumber() { - printer.printGeneralMessage("INPUT_COUNT"); + String messageCode = Message.GeneralMessages.INPUT_COUNT.getMessage(); + printer.printMessages(messageCode); return receiver.receiveNumber(); } void launchAllRound(Car[] cars, int countRound) { + String messageCode = Message.GeneralMessages.DEFAULT_SPACE.getMessage(); for (int i = 0; i < countRound; i++) { for (Car car : cars) { judgeAndMove(car, generator.generateRandomNumber()); printer.printProgressWithSymbol(car.getName(), car.getPosition()); } - printer.printGeneralMessage("DEFAULT_SPACE"); + printer.printMessages(messageCode); } } @@ -85,11 +89,13 @@ public String makeWinnerToString(List cars) { return winner; } + public void run() { + String messageCode = Message.GeneralMessages.OPERATION_RESULT.getMessage(); Car[] cars = makeArrayAfterGettingName(); int countRound = makeCountAfterGettingNumber(); - printer.printGeneralMessage("OPERATION_RESULT"); + printer.printMessages(messageCode); launchAllRound(cars, countRound); List winner = checkWhoIsWinner(cars); diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 19046b1..47e3054 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -16,11 +16,9 @@ public class Validator implements ValidatorInterface { private static final String NOTHING = ""; Printer printer; - Message message; public Validator() { printer = new Printer(); - message = new Message(); } @Override diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index ea1c3c8..f75acd2 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -18,7 +18,7 @@ public void printProgressWithSymbol(String name, int position) { } public void printWinner(String winner) { - System.out.println(winner + message.selectMessageFromGeneral("FIANL_WINNER")); + System.out.println(winner + Message.GeneralMessages.FIANL_WINNER.getMessage()); } public void printGeneralMessage(String s){ From 5d7064ea9d27a93825d5c313a2cc90ed7224eeeb Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 22:09:35 +0900 Subject: [PATCH 50/61] =?UTF-8?q?refactor:=20Printer=20Class=EC=9D=98=20Pr?= =?UTF-8?q?ogress=20bar=20=EB=A7=8C=EB=93=9C=EB=8A=94=20=EB=A9=94=EC=86=8C?= =?UTF-8?q?=EB=93=9C=20Car=20Class=EB=A1=9C=20=EC=9C=84=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Car.java | 8 ++++++++ src/main/java/domain/GamePlayer.java | 2 +- src/main/java/io/Printer.java | 8 ++------ src/test/java/io/PrinterTest.java | 2 +- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/java/domain/Car.java b/src/main/java/domain/Car.java index 9d4a28e..9827c44 100644 --- a/src/main/java/domain/Car.java +++ b/src/main/java/domain/Car.java @@ -27,4 +27,12 @@ public boolean isMaxNumber(int maxNumber) { public boolean isOverMaxNumber(int maxNumber) { return this.position > maxNumber; } + + public String getProgressWithSymbol() { + String result = ""; + for(int i = 0;i < this.position;i++) + result += "-"; + + return result; + } } diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 7a6e1b0..4010fdb 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -48,7 +48,7 @@ void launchAllRound(Car[] cars, int countRound) { for (int i = 0; i < countRound; i++) { for (Car car : cars) { judgeAndMove(car, generator.generateRandomNumber()); - printer.printProgressWithSymbol(car.getName(), car.getPosition()); + printer.printProgress(car.getName(), car.getProgressWithSymbol()); } printer.printMessages(messageCode); } diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index f75acd2..72b083e 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -9,12 +9,8 @@ public class Printer { private static String DEFAULT_SYMBOL = "-"; - public void printProgressWithSymbol(String name, int position) { - String result = ""; - for(int i = 0;i < position;i++) - result += DEFAULT_SYMBOL; - - System.out.printf("%5s : %s\n", name, result); + public void printProgress(String name, String progress) { + System.out.printf("%5s : %s\n", name, progress); } public void printWinner(String winner) { diff --git a/src/test/java/io/PrinterTest.java b/src/test/java/io/PrinterTest.java index e6a95e3..36ef53e 100644 --- a/src/test/java/io/PrinterTest.java +++ b/src/test/java/io/PrinterTest.java @@ -28,7 +28,7 @@ void setUp() { @Test void printProgressWithSymbolTest() { - printer.printProgressWithSymbol("kim", 5); + printer.printProgress("kim", "-----"); assertEquals("kim : -----", outputStreamCaptor.toString().trim()); } From b3444f094b329f54ea3e69dd9b463670cfd10292 Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 22:17:41 +0900 Subject: [PATCH 51/61] =?UTF-8?q?refactor:=20=EC=82=AC=EC=9A=A9=ED=95=98?= =?UTF-8?q?=EC=A7=80=20=EC=82=AC=EC=9A=A9=ED=95=98=EC=A7=80=20=EC=95=8A?= =?UTF-8?q?=EA=B1=B0=EB=82=98=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20int?= =?UTF-8?q?erface=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 13 ++---------- src/main/java/domain/ValidatorInterface.java | 21 -------------------- src/main/java/io/Receiver.java | 2 +- src/test/java/domain/ValidatorTest.java | 2 +- 4 files changed, 4 insertions(+), 34 deletions(-) delete mode 100644 src/main/java/domain/ValidatorInterface.java diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 47e3054..7baba84 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -7,7 +7,7 @@ import java.util.List; import java.util.regex.Pattern; -public class Validator implements ValidatorInterface { +public class Validator { private static final int MAX_NAME_SIZE = 5; private static final String valiNumber = "^[0-9]+$"; private static final String commaInARow = "^.*(,,).*+$"; @@ -21,7 +21,6 @@ public Validator() { printer = new Printer(); } - @Override public boolean validateName(String s) { return inputNothing(s) && inputCommaInARow(s) @@ -32,12 +31,10 @@ && overSizeCharacters(s) && inputSameName(s); } - @Override - public boolean validateNumber(String s) { + public boolean isValidNumber(String s) { return s.matches(valiNumber); } - @Override public boolean inputNothing(String s) { String messageCode = Message.ExceptionMessages.INPUT_NOTHING.getMessage(); @@ -48,7 +45,6 @@ public boolean inputNothing(String s) { return true; } - @Override public boolean inputCommaInARow(String s) { String messageCode = Message.ExceptionMessages.INPUT_COMMA_IN_A_ROW.getMessage(); @@ -59,7 +55,6 @@ public boolean inputCommaInARow(String s) { return true; } - @Override public boolean startWithComma(String s) { String messageCode = Message.ExceptionMessages.START_WITH_COMMA.getMessage(); @@ -70,7 +65,6 @@ public boolean startWithComma(String s) { return true; } - @Override public boolean endWithComma(String s) { String messageCode = Message.ExceptionMessages.END_WITH_COMMA.getMessage(); @@ -81,7 +75,6 @@ public boolean endWithComma(String s) { return true; } - @Override public boolean inputCharactersOtherThanName(String s) { String messageCode = Message.ExceptionMessages.INPUT_CHARACTERS_OTHER_THAN_NAME.getMessage(); @@ -92,7 +85,6 @@ public boolean inputCharactersOtherThanName(String s) { return true; } - @Override public boolean inputSameName(String s) { String messageCode = Message.ExceptionMessages.INPUT_SAME_NAME.getMessage(); List carNames = Arrays.asList(s.split(",")); @@ -107,7 +99,6 @@ public boolean inputSameName(String s) { return true; } - @Override public boolean overSizeCharacters(String s) { String messageCode = Message.ExceptionMessages.OVER_SIZE_CHARACTERS.getMessage(); String[] splitName = s.split(","); diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java deleted file mode 100644 index 7173384..0000000 --- a/src/main/java/domain/ValidatorInterface.java +++ /dev/null @@ -1,21 +0,0 @@ -package domain; - -public interface ValidatorInterface { - boolean validateName(String s); - - boolean validateNumber(String s); - - boolean inputNothing(String s); - - boolean inputCommaInARow(String s); - - boolean startWithComma(String s); - - boolean endWithComma(String s); - - boolean inputCharactersOtherThanName(String s); - - boolean inputSameName(String s); - - boolean overSizeCharacters(String s); -} diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java index 6542e98..e45956f 100644 --- a/src/main/java/io/Receiver.java +++ b/src/main/java/io/Receiver.java @@ -21,7 +21,7 @@ public String[] receiveName() { public int receiveNumber() { do{ inputLine = scanner.nextLine(); - reEnter = validator.validateNumber(inputLine); + reEnter = validator.isValidNumber(inputLine); }while (!reEnter); return Integer.parseInt(inputLine); } diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index 8bae7d6..12a6fcf 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -28,7 +28,7 @@ void validateNameTest(String s) { @ValueSource(strings = {"it's not a number", "what else?", NORMAL_INPUT_FOR_NUMBER}) //숫자 유효성 체크 void validateNumberTest(String s) { - assertThat(vd.validateNumber(s)).isEqualTo(false); + assertThat(vd.isValidNumber(s)).isEqualTo(false); } @ParameterizedTest From 978faeec217f68193f08e1990611df9c0918180f Mon Sep 17 00:00:00 2001 From: songpang Date: Thu, 25 Mar 2021 22:41:05 +0900 Subject: [PATCH 52/61] =?UTF-8?q?refactor:=20Winner=20Class=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1,=20Gameplayer=20Class=20=EC=97=AD=ED=95=A0=20?= =?UTF-8?q?=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 49 ++++-------------------- src/main/java/domain/Winner.java | 42 ++++++++++++++++++++ src/test/java/domain/GamePlayerTest.java | 2 +- src/test/java/io/PrinterTest.java | 3 +- 4 files changed, 52 insertions(+), 44 deletions(-) create mode 100644 src/main/java/domain/Winner.java diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 4010fdb..96f945a 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -5,6 +5,7 @@ import io.Receiver; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; public class GamePlayer { @@ -28,11 +29,11 @@ void judgeAndMove(Car car, int randomNumber) { Car[] makeArrayAfterGettingName() { String messageCode = Message.GeneralMessages.INPUT_NAMEOFCAR.getMessage(); printer.printMessages(messageCode); - String[] listOfName = receiver.receiveName(); + ArrayList names = new ArrayList<>(Arrays.asList(receiver.receiveName())); - Car[] cars = new Car[listOfName.length]; - for (int i = 0; i < listOfName.length; i++) - cars[i] = new Car(listOfName[i]); + Car[] cars = new Car[names.size()]; + for (int i = 0; i < names.size(); i++) + cars[i] = new Car(names.get(i)); return cars; } @@ -54,42 +55,6 @@ void launchAllRound(Car[] cars, int countRound) { } } - List checkWhoIsWinner(Car[] cars) { - List winner = new ArrayList<>(); - int maxNumber = 0; - - for (Car car : cars) { - if(car.isMaxNumber(maxNumber)){ - winner.add(car); - } - if (car.isOverMaxNumber(maxNumber)) { - maxNumber = initWinner(winner, car); - } - } - - return winner; - } - - private int initWinner(List winner, Car car) { - int maxNumber = car.getPosition(); - winner.clear(); - winner.add(car); - - return maxNumber; - } - - public String makeWinnerToString(List cars) { - String winner = cars.get(0).getName(); - - if(cars.size() > 1) { - for(int i = 1;i winner = checkWhoIsWinner(cars); - printer.printWinner(makeWinnerToString(winner)); + List winner = Winner.checkWhoIsWinner(cars); + printer.printWinner(Winner.makeWinnerToString(winner)); } } diff --git a/src/main/java/domain/Winner.java b/src/main/java/domain/Winner.java new file mode 100644 index 0000000..2a0a9a8 --- /dev/null +++ b/src/main/java/domain/Winner.java @@ -0,0 +1,42 @@ +package domain; + +import java.util.ArrayList; +import java.util.List; + +public class Winner { + public static String makeWinnerToString(List cars) { + StringBuilder winner = new StringBuilder(cars.get(0).getName()); + + if(cars.size() > 1) { + for(int i = 1;i checkWhoIsWinner(Car[] cars) { + List winner = new ArrayList<>(); + int maxNumber = 0; + + for (Car car : cars) { + if(car.isMaxNumber(maxNumber)){ + winner.add(car); + } + if (car.isOverMaxNumber(maxNumber)) { + maxNumber = initWinner(winner, car); + } + } + + return winner; + } + + private static int initWinner(List winner, Car car) { + int maxNumber = car.getPosition(); + winner.clear(); + winner.add(car); + + return maxNumber; + } +} diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java index ebc0b70..d961eb5 100644 --- a/src/test/java/domain/GamePlayerTest.java +++ b/src/test/java/domain/GamePlayerTest.java @@ -33,7 +33,7 @@ void checkWhoIsWinnerTest() { cars.add(car2); Car[] carArray = new Car[]{car1, car2}; - assertThat(cars).isEqualTo(gameplayer.checkWhoIsWinner(carArray)); + assertThat(cars).isEqualTo(Winner.checkWhoIsWinner(carArray)); } @Test diff --git a/src/test/java/io/PrinterTest.java b/src/test/java/io/PrinterTest.java index 36ef53e..770dd5f 100644 --- a/src/test/java/io/PrinterTest.java +++ b/src/test/java/io/PrinterTest.java @@ -2,6 +2,7 @@ import domain.Car; import domain.GamePlayer; +import domain.Winner; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -39,7 +40,7 @@ void makeWinnerToStringTest() { cars.add(car1); cars.add(car2); - String result = gamePlayer.makeWinnerToString(cars); + String result = Winner.makeWinnerToString(cars); assertThat(result).isEqualTo("kim, park"); } From eb18b5340a91ce463880d43360058310eca51367 Mon Sep 17 00:00:00 2001 From: songpang Date: Fri, 26 Mar 2021 22:57:24 +0900 Subject: [PATCH 53/61] =?UTF-8?q?refactor:=20Car=20Class=EC=97=90=20?= =?UTF-8?q?=EC=9E=90=EC=8B=A0=EC=9D=98=20position=EC=9D=84=20Progress=20ba?= =?UTF-8?q?r=EB=A1=9C=20=EB=A6=AC=ED=84=B4=ED=95=98=EB=8A=94=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0=20=EB=B6=80=EC=97=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Car.java | 6 +++--- src/main/java/domain/GamePlayer.java | 23 +++++++++++++++-------- src/main/java/domain/Winner.java | 4 ++-- src/test/java/domain/GamePlayerTest.java | 14 ++++++++------ 4 files changed, 28 insertions(+), 19 deletions(-) diff --git a/src/main/java/domain/Car.java b/src/main/java/domain/Car.java index 9827c44..ede0888 100644 --- a/src/main/java/domain/Car.java +++ b/src/main/java/domain/Car.java @@ -29,10 +29,10 @@ public boolean isOverMaxNumber(int maxNumber) { } public String getProgressWithSymbol() { - String result = ""; + String progress = ""; for(int i = 0;i < this.position;i++) - result += "-"; + progress += "-"; - return result; + return progress; } } diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 96f945a..72d3669 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -26,26 +26,33 @@ void judgeAndMove(Car car, int randomNumber) { car.moveForward(); } - Car[] makeArrayAfterGettingName() { + ArrayList inputNames() { String messageCode = Message.GeneralMessages.INPUT_NAMEOFCAR.getMessage(); printer.printMessages(messageCode); ArrayList names = new ArrayList<>(Arrays.asList(receiver.receiveName())); - Car[] cars = new Car[names.size()]; + return makeCarList(names); + } + + ArrayList makeCarList(List names) { + ArrayList cars = new ArrayList<>(); + for (int i = 0; i < names.size(); i++) - cars[i] = new Car(names.get(i)); + cars.add(new Car(names.get(i))); return cars; } - int makeCountAfterGettingNumber() { + int inputNumber() { String messageCode = Message.GeneralMessages.INPUT_COUNT.getMessage(); printer.printMessages(messageCode); + return receiver.receiveNumber(); } - void launchAllRound(Car[] cars, int countRound) { + void launchAllRound(ArrayList cars, int countRound) { String messageCode = Message.GeneralMessages.DEFAULT_SPACE.getMessage(); + for (int i = 0; i < countRound; i++) { for (Car car : cars) { judgeAndMove(car, generator.generateRandomNumber()); @@ -57,13 +64,13 @@ void launchAllRound(Car[] cars, int countRound) { public void run() { String messageCode = Message.GeneralMessages.OPERATION_RESULT.getMessage(); - Car[] cars = makeArrayAfterGettingName(); - int countRound = makeCountAfterGettingNumber(); + ArrayList cars = inputNames(); + int countRound = inputNumber(); printer.printMessages(messageCode); launchAllRound(cars, countRound); - List winner = Winner.checkWhoIsWinner(cars); + ArrayList winner = Winner.checkWhoIsWinner(cars); printer.printWinner(Winner.makeWinnerToString(winner)); } } diff --git a/src/main/java/domain/Winner.java b/src/main/java/domain/Winner.java index 2a0a9a8..0028feb 100644 --- a/src/main/java/domain/Winner.java +++ b/src/main/java/domain/Winner.java @@ -16,8 +16,8 @@ public static String makeWinnerToString(List cars) { return winner.toString(); } - public static List checkWhoIsWinner(Car[] cars) { - List winner = new ArrayList<>(); + public static ArrayList checkWhoIsWinner(ArrayList cars) { + ArrayList winner = new ArrayList<>(); int maxNumber = 0; for (Car car : cars) { diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java index d961eb5..7d8c6d0 100644 --- a/src/test/java/domain/GamePlayerTest.java +++ b/src/test/java/domain/GamePlayerTest.java @@ -31,7 +31,9 @@ void checkWhoIsWinnerTest() { Car car2 = new Car("park"); cars.add(car1); cars.add(car2); - Car[] carArray = new Car[]{car1, car2}; + ArrayList carArray = new ArrayList<>(); + carArray.add(car1); + carArray.add(car2); assertThat(cars).isEqualTo(Winner.checkWhoIsWinner(carArray)); } @@ -44,10 +46,10 @@ void makeArrayAfterGettingNameTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - Car[] cars = gameplayer.makeArrayAfterGettingName(); - assertThat("kim").isEqualTo(cars[0].getName()); - assertThat("park").isEqualTo(cars[1].getName()); - assertThat("song").isEqualTo(cars[2].getName()); + ArrayList cars = gameplayer.inputNames(); + assertThat("kim").isEqualTo(cars.get(0).getName()); + assertThat("park").isEqualTo(cars.get(1).getName()); + assertThat("song").isEqualTo(cars.get(2).getName()); } finally { System.setIn(stdin); } @@ -63,7 +65,7 @@ void makeCountAfterGettingNumberTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - result = gameplayer.makeCountAfterGettingNumber(); + result = gameplayer.inputNumber(); } finally { System.setIn(stdin); } From 021f98d0f7703c6ca34dba53cf7b50d1ddfb6cfe Mon Sep 17 00:00:00 2001 From: songpang Date: Fri, 26 Mar 2021 23:09:59 +0900 Subject: [PATCH 54/61] =?UTF-8?q?refactor:=20README=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 +++++++++++++++++++++++----- src/main/java/domain/GamePlayer.java | 14 ++++++------ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 2b5e2a2..4e0302b 100644 --- a/README.md +++ b/README.md @@ -16,24 +16,37 @@ ## 🚬 클래스와 메서드? - Application + - Receiver - receiveName - receiveNumber + - Printer - - printMessage + - printProgress + - printWinner + - printGeneralMessage + - printExceptionMessage + - printMessages + - GamePlayer - run - - judgeToMove - - makeArrayAfterGettingName - - makeCountAfterGettingNumber + - judgeAndMove + - inputNames + - inputNumber + - makeCarList - launchAllRound - - checkWhoIsWinner + - Generator - generateRandomNumber + - Car - getPosition - getName - moveForward + - isMaxNumber + - isOverMaxNumber + getProgressWithSymbol + - Validate - validateName(s) - inputNothing(s) @@ -43,8 +56,16 @@ - endWithComma(s) - over5Characters(s) - inputSameName(s)) - - validateNumber(s) + - validateNumber(s) + +- Winner + - makeWinnerToString + - checkWhoIsWinner + - initWinner + - Message + - selectMessageFromGeneral + - selectMessageFromException ## 🚀 기능 요구사항 diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 72d3669..37fc87a 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -34,6 +34,13 @@ ArrayList inputNames() { return makeCarList(names); } + int inputNumber() { + String messageCode = Message.GeneralMessages.INPUT_COUNT.getMessage(); + printer.printMessages(messageCode); + + return receiver.receiveNumber(); + } + ArrayList makeCarList(List names) { ArrayList cars = new ArrayList<>(); @@ -43,13 +50,6 @@ ArrayList makeCarList(List names) { return cars; } - int inputNumber() { - String messageCode = Message.GeneralMessages.INPUT_COUNT.getMessage(); - printer.printMessages(messageCode); - - return receiver.receiveNumber(); - } - void launchAllRound(ArrayList cars, int countRound) { String messageCode = Message.GeneralMessages.DEFAULT_SPACE.getMessage(); From c2963697807e21e19526f3ffadee891e87753a89 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 13:47:53 +0900 Subject: [PATCH 55/61] =?UTF-8?q?refactor:=20=EC=BB=A8=EB=B2=A4=EC=85=98?= =?UTF-8?q?=20=EC=88=98=EC=A0=95=20=EB=B0=8F=20=EA=B5=AC=ED=98=84=EC=B2=B4?= =?UTF-8?q?=EB=A5=BC=20=EC=9D=B8=ED=84=B0=ED=8E=98=EC=9D=B4=EC=8A=A4?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 11 ++++++----- src/test/java/domain/GamePlayerTest.java | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 37fc87a..c88b8e0 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -22,14 +22,15 @@ public GamePlayer() { } void judgeAndMove(Car car, int randomNumber) { - if (randomNumber >= WINNER_CONDITION) + if (randomNumber >= WINNER_CONDITION) { car.moveForward(); + } } - ArrayList inputNames() { + List inputNames() { String messageCode = Message.GeneralMessages.INPUT_NAMEOFCAR.getMessage(); printer.printMessages(messageCode); - ArrayList names = new ArrayList<>(Arrays.asList(receiver.receiveName())); + List names = new ArrayList<>(Arrays.asList(receiver.receiveName())); return makeCarList(names); } @@ -41,8 +42,8 @@ int inputNumber() { return receiver.receiveNumber(); } - ArrayList makeCarList(List names) { - ArrayList cars = new ArrayList<>(); + List makeCarList(List names) { + List cars = new ArrayList<>(); for (int i = 0; i < names.size(); i++) cars.add(new Car(names.get(i))); diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java index 7d8c6d0..db6d462 100644 --- a/src/test/java/domain/GamePlayerTest.java +++ b/src/test/java/domain/GamePlayerTest.java @@ -46,7 +46,7 @@ void makeArrayAfterGettingNameTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - ArrayList cars = gameplayer.inputNames(); + List cars = gameplayer.inputNames(); assertThat("kim").isEqualTo(cars.get(0).getName()); assertThat("park").isEqualTo(cars.get(1).getName()); assertThat("song").isEqualTo(cars.get(2).getName()); From e577df784a0b55866cd4882bda7592359ceb12fa Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 13:49:26 +0900 Subject: [PATCH 56/61] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=20=EC=97=AD=ED=95=A0=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index c88b8e0..cd9f3b5 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -21,12 +21,16 @@ public GamePlayer() { this.generator = new Generator(); } - void judgeAndMove(Car car, int randomNumber) { - if (randomNumber >= WINNER_CONDITION) { + void moveAfterJudgement(Car car, int randomNumber) { + if (judgeToMove(randomNumber)) { car.moveForward(); } } + private boolean judgeToMove(int randomNumber) { + return randomNumber >= WINNER_CONDITION; + } + List inputNames() { String messageCode = Message.GeneralMessages.INPUT_NAMEOFCAR.getMessage(); printer.printMessages(messageCode); @@ -56,7 +60,7 @@ void launchAllRound(ArrayList cars, int countRound) { for (int i = 0; i < countRound; i++) { for (Car car : cars) { - judgeAndMove(car, generator.generateRandomNumber()); + moveAfterJudgement(car, generator.generateRandomNumber()); printer.printProgress(car.getName(), car.getProgressWithSymbol()); } printer.printMessages(messageCode); From 560f25166b1d3d49e9dd4628c1ef225ef63b536b Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 13:52:59 +0900 Subject: [PATCH 57/61] =?UTF-8?q?refactor:=20=EC=A0=9C=ED=95=9C=EC=9E=90?= =?UTF-8?q?=20=EB=B0=8F=20=EC=BB=A8=EB=B2=A4=EC=85=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Car.java | 3 ++- src/main/java/domain/GamePlayer.java | 9 +++++---- src/main/java/domain/Winner.java | 4 ++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/domain/Car.java b/src/main/java/domain/Car.java index ede0888..eaae6b0 100644 --- a/src/main/java/domain/Car.java +++ b/src/main/java/domain/Car.java @@ -30,8 +30,9 @@ public boolean isOverMaxNumber(int maxNumber) { public String getProgressWithSymbol() { String progress = ""; - for(int i = 0;i < this.position;i++) + for(int i = 0;i < this.position;i++) { progress += "-"; + } return progress; } diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index cd9f3b5..da7395c 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -49,13 +49,14 @@ int inputNumber() { List makeCarList(List names) { List cars = new ArrayList<>(); - for (int i = 0; i < names.size(); i++) + for (int i = 0; i < names.size(); i++) { cars.add(new Car(names.get(i))); + } return cars; } - void launchAllRound(ArrayList cars, int countRound) { + void launchAllRound(List cars, int countRound) { String messageCode = Message.GeneralMessages.DEFAULT_SPACE.getMessage(); for (int i = 0; i < countRound; i++) { @@ -69,13 +70,13 @@ void launchAllRound(ArrayList cars, int countRound) { public void run() { String messageCode = Message.GeneralMessages.OPERATION_RESULT.getMessage(); - ArrayList cars = inputNames(); + List cars = inputNames(); int countRound = inputNumber(); printer.printMessages(messageCode); launchAllRound(cars, countRound); - ArrayList winner = Winner.checkWhoIsWinner(cars); + List winner = Winner.checkWhoIsWinner(cars); printer.printWinner(Winner.makeWinnerToString(winner)); } } diff --git a/src/main/java/domain/Winner.java b/src/main/java/domain/Winner.java index 0028feb..e6cd996 100644 --- a/src/main/java/domain/Winner.java +++ b/src/main/java/domain/Winner.java @@ -16,8 +16,8 @@ public static String makeWinnerToString(List cars) { return winner.toString(); } - public static ArrayList checkWhoIsWinner(ArrayList cars) { - ArrayList winner = new ArrayList<>(); + public static List checkWhoIsWinner(List cars) { + List winner = new ArrayList<>(); int maxNumber = 0; for (Car car : cars) { From 8f84168298e101e2b9b801ce6ab2ec5dc9d904ac Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 14:05:15 +0900 Subject: [PATCH 58/61] Update src/main/java/domain/Validator.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor: 컨벤션 수정 Co-authored-by: Gyeongjun Kim --- src/main/java/domain/Validator.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 7baba84..acd08ec 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -9,9 +9,9 @@ public class Validator { private static final int MAX_NAME_SIZE = 5; - private static final String valiNumber = "^[0-9]+$"; - private static final String commaInARow = "^.*(,,).*+$"; - private static final String characterOTN = "^[a-zA-Z,]+$"; + private static final String VALID_NUMBER = "^[0-9]+$"; + private static final String COMMA_IN_ROW = "^.*(,,).*+$"; + private static final String CHARACTER = "^[a-zA-Z,]+$"; private static final Character COMMA = ','; private static final String NOTHING = ""; From ed92c1f8cf68de7e564b19747b776a196c272274 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 14:07:04 +0900 Subject: [PATCH 59/61] Update src/main/java/domain/Winner.java MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refactor: 컨벤션 수정 Co-authored-by: Gyeongjun Kim --- src/main/java/domain/Winner.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/domain/Winner.java b/src/main/java/domain/Winner.java index e6cd996..3ffb6b1 100644 --- a/src/main/java/domain/Winner.java +++ b/src/main/java/domain/Winner.java @@ -7,8 +7,8 @@ public class Winner { public static String makeWinnerToString(List cars) { StringBuilder winner = new StringBuilder(cars.get(0).getName()); - if(cars.size() > 1) { - for(int i = 1;i 1) { + for (int i = 1; i < cars.size(); i++) { winner.append(", ").append(cars.get(i).getName()); } } From 83eaf8c8f2b99e1f7c602b6d0e0ba65a4a81a384 Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 14:09:38 +0900 Subject: [PATCH 60/61] =?UTF-8?q?refactor:=20=EC=A0=91=EA=B7=BC=20?= =?UTF-8?q?=EC=A0=9C=ED=95=9C=EC=9E=90=20=EC=84=A4=EC=A0=95=20=EB=B0=8F=20?= =?UTF-8?q?=EB=B3=80=EC=88=98=EB=AA=85=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/Validator.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index acd08ec..c6081cf 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -15,7 +15,7 @@ public class Validator { private static final Character COMMA = ','; private static final String NOTHING = ""; - Printer printer; + private final Printer printer; public Validator() { printer = new Printer(); @@ -32,7 +32,7 @@ && overSizeCharacters(s) } public boolean isValidNumber(String s) { - return s.matches(valiNumber); + return s.matches(VALID_NUMBER); } public boolean inputNothing(String s) { @@ -48,7 +48,7 @@ public boolean inputNothing(String s) { public boolean inputCommaInARow(String s) { String messageCode = Message.ExceptionMessages.INPUT_COMMA_IN_A_ROW.getMessage(); - if (Pattern.matches(commaInARow, s)) { + if (Pattern.matches(COMMA_IN_ROW, s)) { printer.printMessages(messageCode); return false; } @@ -78,7 +78,7 @@ public boolean endWithComma(String s) { public boolean inputCharactersOtherThanName(String s) { String messageCode = Message.ExceptionMessages.INPUT_CHARACTERS_OTHER_THAN_NAME.getMessage(); - if (!Pattern.matches(characterOTN, s)) { + if (!Pattern.matches(CHARACTER, s)) { printer.printMessages(messageCode); return false; } From 54109bd9505f3c6f12fc9219055689b72bc5fa2e Mon Sep 17 00:00:00 2001 From: songpang Date: Sun, 28 Mar 2021 14:22:44 +0900 Subject: [PATCH 61/61] =?UTF-8?q?refactor:=20=EC=8B=A4=ED=8C=A8=20?= =?UTF-8?q?=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/domain/ValidatorTest.java | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index 12a6fcf..49bfbec 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -8,9 +8,7 @@ class ValidatorTest { - private final String NORMAL_INPUT_FOR_NAME = "Park,Song,Kim,Jay"; - private final String NORMAL_INPUT_FOR_NUMBER = "5"; - Validator vd; + private Validator vd; @BeforeEach void setup() { @@ -18,56 +16,56 @@ void setup() { } @ParameterizedTest - @ValueSource(strings = {"123,!@a,BDs5", ",,asd,asd,", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {"123,!@a,BDs5", ",,asd,asd,"}) //이름 유효성 체크 void validateNameTest(String s) { assertThat(vd.validateName(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {"it's not a number", "what else?", NORMAL_INPUT_FOR_NUMBER}) + @ValueSource(strings = {"it's not a number", "what else?"}) //숫자 유효성 체크 void validateNumberTest(String s) { assertThat(vd.isValidNumber(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {"", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {""}) //입력에 아무것도 없을 경우 void inputNothingTest(String s) { assertThat(vd.inputNothing(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {",,,,,,", "kim,song,,park", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {",,,,,,", "kim,song,,park"}) //쉼표(,)가 연속으로 나올 경우 void inputCommaInARowTest(String s) { assertThat(vd.inputCommaInARow(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {",Kim,Park,Song", ",,Park,Song,Kim", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {",Kim,Park,Song", ",,Park,Song,Kim"}) //쉼표(,)로 시작할 경우 void startWithCommaTest(String s) { assertThat(vd.startWithComma(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {"hobihobi,hoho,hoho,", "asdfgg,asdfghj,zxcvbn,,,", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {"hobihobi,hoho,hoho,", "asdfgg,asdfghj,zxcvbn,,,"}) //쉼표(,)로 끝날 경우 void endWithCommaTest(String s) { assertThat(vd.endWithComma(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {"hobㅁ,hoho,hoho", "asd5,asdfghj,zxcvbn", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {"hobㅁ,hoho,hoho", "asd5,asdfghj,zxcvbn"}) //입력에 영문, 쉼표(,) 이외의 문자가 있을 경우 void inputCharactersOtherThanNameTest(String s) { assertThat(vd.inputCharactersOtherThanName(s)).isEqualTo(false); } @ParameterizedTest - @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfgg,zxcvbn", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfgg,zxcvbn"}) //같은 이름이 있을 경우 void inputSameNameTest(String s) { assertThat(vd.inputSameName(s)).isEqualTo(false); @@ -75,7 +73,7 @@ void inputSameNameTest(String s) { @ParameterizedTest //이름이 5글자 이상을 경우 - @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfghj,zxcvbn", NORMAL_INPUT_FOR_NAME}) + @ValueSource(strings = {"hobihobi,hoho,hoho", "asdfgg,asdfghj,zxcvbn"}) void overSizeCharacterTest(String s) { assertThat(vd.overSizeCharacters(s)).isEqualTo(false); }