From 0a5d9634a16a9b1b31a68f63131268511f05f9e4 Mon Sep 17 00:00:00 2001 From: Chae Date: Thu, 4 Mar 2021 17:38:07 +0900 Subject: [PATCH 01/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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/52] =?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 6a4411c8c5b62df9c456dc8dc45c148f54a90a89 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 19:11:35 +0900 Subject: [PATCH 37/52] =?UTF-8?q?refactor:=20=EC=9D=B8=ED=84=B0=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=20=EB=82=B4=EC=9D=98=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EC=BD=94=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/MessageInterface.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/main/java/io/MessageInterface.java b/src/main/java/io/MessageInterface.java index f4c70a3..e1b5c90 100644 --- a/src/main/java/io/MessageInterface.java +++ b/src/main/java/io/MessageInterface.java @@ -1,29 +1,14 @@ 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 b1b4155aba17f5510278e9c75321af6d5b1947c9 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 19:14:54 +0900 Subject: [PATCH 38/52] =?UTF-8?q?refactor:=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=A0=91=EA=B7=BC=EC=A7=80=EC=A0=95=EC=9E=90=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/main/java/domain/GamePlayer.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 5b9dae1..2443ddc 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 Printer printer; + private Receiver receiver; + private Generator generator; public GamePlayer() { this.printer = new Printer(); @@ -51,7 +51,7 @@ public void launchAllRound(Car[] cars, int countRound) { try { Thread.sleep(500); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(); } } } From 6c66206a165ee70035b1403e1bd0056cb61136d1 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 19:57:12 +0900 Subject: [PATCH 39/52] =?UTF-8?q?refactor:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20=EC=83=9D=EC=84=B1=EC=9E=90=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 | 2 +- src/main/java/domain/Generator.java | 8 +------- src/test/java/domain/GeneratorTest.java | 2 +- 3 files changed, 3 insertions(+), 9 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 2443ddc..83e5035 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -14,7 +14,7 @@ public class GamePlayer { public GamePlayer() { this.printer = new Printer(); this.receiver = new Receiver(); - this.generator = new Generator(10); + this.generator = new Generator(); } private final int WINNER_CONDITION = 4; diff --git a/src/main/java/domain/Generator.java b/src/main/java/domain/Generator.java index 7db2a5d..cca5a5a 100644 --- a/src/main/java/domain/Generator.java +++ b/src/main/java/domain/Generator.java @@ -1,13 +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 static final int MAX_LIMIT_NUMBER = 10; public int generateRandomNumber() { return (int) ((Math.random() * 10000) % MAX_LIMIT_NUMBER); 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 4bead016d95e43a4983472197c3e18df0a471192 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:00:52 +0900 Subject: [PATCH 40/52] =?UTF-8?q?refactor:=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=20=EB=82=B4=EC=9D=98=20=EC=84=A0=EC=96=B8=20=EC=88=9C=EC=84=9C?= =?UTF-8?q?=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 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 83e5035..40dd14e 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -7,6 +7,7 @@ import java.util.List; public class GamePlayer { + private final int WINNER_CONDITION = 4; private Printer printer; private Receiver receiver; private Generator generator; @@ -17,8 +18,6 @@ public GamePlayer() { this.generator = new Generator(); } - private final int WINNER_CONDITION = 4; - public void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) car.moveForward(); From 8320e5c9b6b07eea4a2c62d2bd6557c0a4cf338e Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:37:19 +0900 Subject: [PATCH 41/52] =?UTF-8?q?refactor:=20=EC=89=BC=ED=91=9C(,)=20?= =?UTF-8?q?=EC=83=81=EC=88=98=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/io/Receiver.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java index c9a54c7..bbe1218 100644 --- a/src/main/java/io/Receiver.java +++ b/src/main/java/io/Receiver.java @@ -5,6 +5,7 @@ import java.util.Scanner; public class Receiver { + private static final String SPLIT_DELIMITER = ","; boolean reEnter = false; String inputLine = ""; Scanner scanner = new Scanner(System.in); @@ -15,7 +16,7 @@ public String[] receiveName() { inputLine = scanner.nextLine(); reEnter = validator.validateName(inputLine); }while (!reEnter); - return inputLine.split(","); + return inputLine.split(SPLIT_DELIMITER); } public int receiveNumber() { From ca1d01b91c40d2b1d6776ff649ea0dd27ef15c75 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:37:40 +0900 Subject: [PATCH 42/52] =?UTF-8?q?refactor:=20=EC=83=9D=EC=84=B1=EC=9E=90?= =?UTF-8?q?=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/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 40dd14e..f1d3348 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -8,15 +8,9 @@ public class GamePlayer { private final int WINNER_CONDITION = 4; - private Printer printer; - private Receiver receiver; - private Generator generator; - - public GamePlayer() { - this.printer = new Printer(); - this.receiver = new Receiver(); - this.generator = new Generator(); - } + private Printer printer = new Printer(); + private Receiver receiver = new Receiver(); + private Generator generator= new Generator(); public void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) From 87e63b3c696c04cd53c1882e3352a02d80fbda50 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:50:10 +0900 Subject: [PATCH 43/52] =?UTF-8?q?refactor:=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=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/GamePlayer.java | 8 ++++---- src/test/java/domain/GamePlayerTest.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index f1d3348..13bda72 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -17,7 +17,7 @@ public void judgeToMove(Car car, int randomNumber) { car.moveForward(); } - public Car[] makeArrayAfterGettingName() { + public Car[] makeArray() { printer.printGeneralMessage("INPUT_NAMEOFCAR"); String[] listOfName = receiver.receiveName(); @@ -28,7 +28,7 @@ public Car[] makeArrayAfterGettingName() { return cars; } - public int makeCountAfterGettingNumber() { + public int makeCount() { printer.printGeneralMessage("INPUT_COUNT"); return receiver.receiveNumber(); } @@ -69,8 +69,8 @@ public List checkWhoIsWinner(Car[] cars) { } public void run() { - Car[] cars = makeArrayAfterGettingName(); - int countRound = makeCountAfterGettingNumber(); + Car[] cars = makeArray(); + int countRound = makeCount(); printer.printGeneralMessage("OPERATION_RESULT"); launchAllRound(cars, countRound); diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java index ebc0b70..0e743f0 100644 --- a/src/test/java/domain/GamePlayerTest.java +++ b/src/test/java/domain/GamePlayerTest.java @@ -44,7 +44,7 @@ void makeArrayAfterGettingNameTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - Car[] cars = gameplayer.makeArrayAfterGettingName(); + Car[] cars = gameplayer.makeArray(); assertThat("kim").isEqualTo(cars[0].getName()); assertThat("park").isEqualTo(cars[1].getName()); assertThat("song").isEqualTo(cars[2].getName()); @@ -63,7 +63,7 @@ void makeCountAfterGettingNumberTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - result = gameplayer.makeCountAfterGettingNumber(); + result = gameplayer.makeCount(); } finally { System.setIn(stdin); } From b338beaa9baf5c011eb0c14cde0b25c9de3eb57b Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:50:41 +0900 Subject: [PATCH 44/52] =?UTF-8?q?refactor:=20=EC=A0=95=EA=B7=9C=EC=8B=9D?= =?UTF-8?q?=20=EC=83=81=EC=88=98=EB=A1=9C=20=ED=91=9C=ED=98=84=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/main/java/domain/Validator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 9c3995f..1d1524f 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -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; } From d1ce8203db605a5afb8dd6c8cccdab4d3d01432b Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 20:53:06 +0900 Subject: [PATCH 45/52] =?UTF-8?q?refactor:=20=EB=B0=98=EB=B3=B5=EB=AC=B8?= =?UTF-8?q?=EC=97=90=20=EC=82=AC=EC=9A=A9=EB=90=98=EB=8A=94=20=EB=B3=80?= =?UTF-8?q?=EC=88=98=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/GamePlayer.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 13bda72..0fd800b 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -35,9 +35,9 @@ public int makeCount() { public 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) { + judgeToMove(car, generator.generateRandomNumber()); + printer.printProgressWithSymbol(car.getName(), car.getPosition()); } printer.printGeneralMessage("DEFAULT_SPACE"); @@ -53,15 +53,15 @@ public 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 874421e35325d491b81b19fbd2edf3f2aef5bd00 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 21:04:23 +0900 Subject: [PATCH 46/52] =?UTF-8?q?refactor:=20=EC=83=81=EC=88=98=20?= =?UTF-8?q?=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 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 1d1524f..a841a70 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -8,9 +8,9 @@ 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,]+$"; + private static final String ONLY_NUMBER = "^[0-9]+$"; + private static final String COMMA_IN_A_ROW = "^(,,)+$"; + private static final String CHARACTER_OTHER_THAN_NAME = "^[a-zA-Z,]+$"; Printer printer; public Validator() { @@ -30,7 +30,7 @@ && overSizeCharacters(s) @Override public boolean validateNumber(String s) { - return s.matches(valiNumber); + return s.matches(ONLY_NUMBER); } @Override @@ -44,7 +44,7 @@ public boolean inputNothing(String s) { @Override public boolean inputCommaInARow(String s) { - if (Pattern.matches(commaInARow, s)) { + if (Pattern.matches(COMMA_IN_A_ROW, s)) { printer.printExceptionMessage("INPUT_COMMA_IN_A_ROW"); return false; } @@ -71,7 +71,7 @@ public boolean endWithComma(String s) { @Override public boolean inputCharactersOtherThanName(String s) { - if (!Pattern.matches(characterOTN, s)) { + if (!Pattern.matches(CHARACTER_OTHER_THAN_NAME, s)) { printer.printExceptionMessage("INPUT_CHARACTERS_OTHER_THAN_NAME"); return false; } From 329c8056be01eac1eaffacccb723808f794978ad Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 21:19:00 +0900 Subject: [PATCH 47/52] =?UTF-8?q?refactor:=20inputOtherThanCharacter=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=9D=B4=EB=A6=84=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/main/java/domain/Validator.java | 15 ++++++--------- src/main/java/domain/ValidatorInterface.java | 2 +- src/main/java/io/Message.java | 2 +- src/test/java/domain/ValidatorTest.java | 2 +- 4 files changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index a841a70..9223bac 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -10,18 +10,15 @@ public class Validator implements ValidatorInterface { private static final int MAX_NAME_SIZE = 5; private static final String ONLY_NUMBER = "^[0-9]+$"; private static final String COMMA_IN_A_ROW = "^(,,)+$"; - private static final String CHARACTER_OTHER_THAN_NAME = "^[a-zA-Z,]+$"; - Printer printer; + private static final String OTHER_THAN_CHARACTER = "^[a-zA-Z,]+$"; - public Validator() { - printer = new Printer(); - } + Printer printer = new Printer(); @Override public boolean validateName(String s) { return inputNothing(s) && inputCommaInARow(s) - && inputCharactersOtherThanName(s) + && inputOtherThanCharacter(s) && startWithComma(s) && endWithComma(s) && overSizeCharacters(s) @@ -70,9 +67,9 @@ public boolean endWithComma(String s) { } @Override - public boolean inputCharactersOtherThanName(String s) { - if (!Pattern.matches(CHARACTER_OTHER_THAN_NAME, s)) { - printer.printExceptionMessage("INPUT_CHARACTERS_OTHER_THAN_NAME"); + public boolean inputOtherThanCharacter(String s) { + if (!Pattern.matches(OTHER_THAN_CHARACTER, s)) { + printer.printExceptionMessage("INPUT_OTHER_THAN_CHARACTERS"); return false; } return true; diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java index 7173384..4ac92bc 100644 --- a/src/main/java/domain/ValidatorInterface.java +++ b/src/main/java/domain/ValidatorInterface.java @@ -13,7 +13,7 @@ public interface ValidatorInterface { boolean endWithComma(String s); - boolean inputCharactersOtherThanName(String s); + boolean inputOtherThanCharacter(String s); boolean inputSameName(String s); diff --git a/src/main/java/io/Message.java b/src/main/java/io/Message.java index 8c71119..fd404c6 100644 --- a/src/main/java/io/Message.java +++ b/src/main/java/io/Message.java @@ -22,7 +22,7 @@ private void generalMessageList() { private void exceptionMessageList() { exceptionMessageList.put("INPUT_NOTHING", "아무 문자도 입력되지 않았습니다."); exceptionMessageList.put("INPUT_COMMA_IN_A_ROW", "쉼표(,)가 연속으로 입력되었습니다."); - exceptionMessageList.put("INPUT_CHARACTERS_OTHER_THAN_NAME", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); + exceptionMessageList.put("INPUT_OTHER_THAN_CHARACTERS", "영어와 쉼표(,) 이외의 다른 문자가 입력되었습니다."); exceptionMessageList.put("START_WITH_COMMA", "쉼표(,)로 시작합니다."); exceptionMessageList.put("END_WITH_COMMA", "쉼표(,)로 끝납니다."); exceptionMessageList.put("INPUT_SAME_NAME", "같은 이름이 입력되었습니다."); diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index 8bae7d6..337d867 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -63,7 +63,7 @@ void endWithCommaTest(String s) { @ValueSource(strings = {"hobㅁ,hoho,hoho", "asd5,asdfghj,zxcvbn", NORMAL_INPUT_FOR_NAME}) //입력에 영문, 쉼표(,) 이외의 문자가 있을 경우 void inputCharactersOtherThanNameTest(String s) { - assertThat(vd.inputCharactersOtherThanName(s)).isEqualTo(false); + assertThat(vd.inputOtherThanCharacter(s)).isEqualTo(false); } @ParameterizedTest From d947ed232bfad4af3b559d0e32fb45ddd8eea2aa Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Tue, 16 Mar 2021 21:21:32 +0900 Subject: [PATCH 48/52] =?UTF-8?q?refactor:=20=EC=A0=91=EA=B7=BC=EC=A7=80?= =?UTF-8?q?=EC=A0=95=EC=9E=90=20=EB=AA=85=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/Printer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/Printer.java b/src/main/java/io/Printer.java index e886c5d..8225381 100644 --- a/src/main/java/io/Printer.java +++ b/src/main/java/io/Printer.java @@ -5,7 +5,7 @@ import java.util.List; public class Printer { - Message message = new Message(); + private Message message = new Message(); private static String DEFAULT_SYMBOL = "-"; From 4f7ee17ea30f028bce74fc8bb8e37657cc4adb35 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Wed, 17 Mar 2021 16:02:55 +0900 Subject: [PATCH 49/52] =?UTF-8?q?refactor:=20isCorrectName=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 | 2 +- src/main/java/io/Receiver.java | 2 +- src/test/java/domain/ValidatorTest.java | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/domain/Validator.java b/src/main/java/domain/Validator.java index 9223bac..2c7dce5 100644 --- a/src/main/java/domain/Validator.java +++ b/src/main/java/domain/Validator.java @@ -15,7 +15,7 @@ public class Validator implements ValidatorInterface { Printer printer = new Printer(); @Override - public boolean validateName(String s) { + public boolean isCorrectName(String s) { return inputNothing(s) && inputCommaInARow(s) && inputOtherThanCharacter(s) diff --git a/src/main/java/domain/ValidatorInterface.java b/src/main/java/domain/ValidatorInterface.java index 4ac92bc..365a78f 100644 --- a/src/main/java/domain/ValidatorInterface.java +++ b/src/main/java/domain/ValidatorInterface.java @@ -1,7 +1,7 @@ package domain; public interface ValidatorInterface { - boolean validateName(String s); + boolean isCorrectName(String s); boolean validateNumber(String s); diff --git a/src/main/java/io/Receiver.java b/src/main/java/io/Receiver.java index bbe1218..f51b559 100644 --- a/src/main/java/io/Receiver.java +++ b/src/main/java/io/Receiver.java @@ -14,7 +14,7 @@ public class Receiver { public String[] receiveName() { do{ inputLine = scanner.nextLine(); - reEnter = validator.validateName(inputLine); + reEnter = validator.isCorrectName(inputLine); }while (!reEnter); return inputLine.split(SPLIT_DELIMITER); } diff --git a/src/test/java/domain/ValidatorTest.java b/src/test/java/domain/ValidatorTest.java index 337d867..3348019 100644 --- a/src/test/java/domain/ValidatorTest.java +++ b/src/test/java/domain/ValidatorTest.java @@ -21,7 +21,7 @@ void setup() { @ValueSource(strings = {"123,!@a,BDs5", ",,asd,asd,", NORMAL_INPUT_FOR_NAME}) //이름 유효성 체크 void validateNameTest(String s) { - assertThat(vd.validateName(s)).isEqualTo(false); + assertThat(vd.isCorrectName(s)).isEqualTo(false); } @ParameterizedTest From 0d2f2fd8e609a4d37a5c1b6a0ccfa9adfb678c21 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Fri, 26 Mar 2021 13:48:54 +0900 Subject: [PATCH 50/52] =?UTF-8?q?refactor:=20=EA=B0=9D=EC=B2=B4=EC=97=90?= =?UTF-8?q?=20final=20=ED=82=A4=EC=9B=8C=EB=93=9C=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/domain/GamePlayer.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index 0fd800b..ab317fb 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -8,9 +8,9 @@ public class GamePlayer { private final int WINNER_CONDITION = 4; - private Printer printer = new Printer(); - private Receiver receiver = new Receiver(); - private Generator generator= new Generator(); + private final Printer printer = new Printer(); + private final Receiver receiver = new Receiver(); + private final Generator generator= new Generator(); public void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) From da7d13f159be6323a2090312ff1e013ec36c8249 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Fri, 26 Mar 2021 14:26:14 +0900 Subject: [PATCH 51/52] =?UTF-8?q?refactor:=20GamePlayer=EC=9D=98=20car?= =?UTF-8?q?=EA=B0=9D=EC=B2=B4=20=EC=83=9D=EC=84=B1=20=EC=97=AD=ED=95=A0?= =?UTF-8?q?=EC=9D=84=20CarManager=EB=A1=9C=20=EB=B6=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/CarManager.java | 19 +++++++++++++++++++ src/main/java/domain/GamePlayer.java | 19 +++++-------------- src/test/java/domain/CarTest.java | 6 ++---- src/test/java/domain/GamePlayerTest.java | 19 +------------------ 4 files changed, 27 insertions(+), 36 deletions(-) create mode 100644 src/main/java/domain/CarManager.java diff --git a/src/main/java/domain/CarManager.java b/src/main/java/domain/CarManager.java new file mode 100644 index 0000000..5f37ddc --- /dev/null +++ b/src/main/java/domain/CarManager.java @@ -0,0 +1,19 @@ +package domain; + +import io.Receiver; + +public class CarManager { + private final Receiver receiver = new Receiver(); + + public Car[] produceCar(){ + 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; + } + + +} diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index ab317fb..cb87afc 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -11,24 +11,14 @@ public class GamePlayer { private final Printer printer = new Printer(); private final Receiver receiver = new Receiver(); private final Generator generator= new Generator(); + private final CarManager carManager = new CarManager(); public void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) car.moveForward(); } - public Car[] makeArray() { - 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 makeCount() { + public int receiveRepeatCount() { printer.printGeneralMessage("INPUT_COUNT"); return receiver.receiveNumber(); } @@ -69,8 +59,9 @@ public List checkWhoIsWinner(Car[] cars) { } public void run() { - Car[] cars = makeArray(); - int countRound = makeCount(); + printer.printGeneralMessage("INPUT_NAMEOFCAR"); + Car[] cars = carManager.produceCar(); + int countRound = receiveRepeatCount(); printer.printGeneralMessage("OPERATION_RESULT"); launchAllRound(cars, countRound); diff --git a/src/test/java/domain/CarTest.java b/src/test/java/domain/CarTest.java index a56b9d3..9a5e686 100644 --- a/src/test/java/domain/CarTest.java +++ b/src/test/java/domain/CarTest.java @@ -4,15 +4,13 @@ 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"; + Car car; @BeforeEach - void setUp() { - car = new Car(DEFAULT_NAME); + void setUp() { car = new Car(DEFAULT_NAME); } @Test diff --git a/src/test/java/domain/GamePlayerTest.java b/src/test/java/domain/GamePlayerTest.java index 0e743f0..09e3e68 100644 --- a/src/test/java/domain/GamePlayerTest.java +++ b/src/test/java/domain/GamePlayerTest.java @@ -36,23 +36,6 @@ void checkWhoIsWinnerTest() { 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.makeArray(); - 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() { @@ -63,7 +46,7 @@ void makeCountAfterGettingNumberTest() { try { System.setIn(new ByteArrayInputStream(input.getBytes())); gameplayer = new GamePlayer(); - result = gameplayer.makeCount(); + result = gameplayer.receiveRepeatCount(); } finally { System.setIn(stdin); } From a7b2e8ba08f5c7ee14f7ee4a3fadba6ca47037b3 Mon Sep 17 00:00:00 2001 From: Chae hee chan Date: Fri, 26 Mar 2021 15:02:12 +0900 Subject: [PATCH 52/52] =?UTF-8?q?refactor:=20GamePlayer=EC=9D=98=20?= =?UTF-8?q?=EC=9A=B0=EC=8A=B9=EC=9E=90=20=ED=8C=90=EB=8F=85=20=EC=97=AD?= =?UTF-8?q?=ED=95=A0=EC=9D=84=20Referee=EB=A1=9C=20=EB=B6=84=EC=82=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/domain/GamePlayer.java | 22 ++----------------- src/main/java/domain/Referee.java | 32 ++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 20 deletions(-) create mode 100644 src/main/java/domain/Referee.java diff --git a/src/main/java/domain/GamePlayer.java b/src/main/java/domain/GamePlayer.java index cb87afc..dcb5a95 100644 --- a/src/main/java/domain/GamePlayer.java +++ b/src/main/java/domain/GamePlayer.java @@ -12,6 +12,7 @@ public class GamePlayer { private final Receiver receiver = new Receiver(); private final Generator generator= new Generator(); private final CarManager carManager = new CarManager(); + private final Referee referee = new Referee(); public void judgeToMove(Car car, int randomNumber) { if (randomNumber >= WINNER_CONDITION) @@ -39,25 +40,6 @@ public void launchAllRound(Car[] cars, int countRound) { } } - public List checkWhoIsWinner(Car[] cars) { - List result = new ArrayList<>(); - int maxNumber = 0; - - for (Car car : cars) { - if(car.getPosition() == maxNumber){ - result.add(car); - continue; - } - if (car.getPosition() > maxNumber) { - maxNumber = car.getPosition(); - result.clear(); - result.add(car); - } - } - - return result; - } - public void run() { printer.printGeneralMessage("INPUT_NAMEOFCAR"); Car[] cars = carManager.produceCar(); @@ -66,7 +48,7 @@ public void run() { printer.printGeneralMessage("OPERATION_RESULT"); launchAllRound(cars, countRound); - List winner = checkWhoIsWinner(cars); + List winner = referee.checkWinner(cars); printer.printWinner(printer.makeWinnerToString(winner)); } } diff --git a/src/main/java/domain/Referee.java b/src/main/java/domain/Referee.java new file mode 100644 index 0000000..9055474 --- /dev/null +++ b/src/main/java/domain/Referee.java @@ -0,0 +1,32 @@ +package domain; + +import java.util.ArrayList; +import java.util.List; + +public class Referee { + private int maxNumber = 0; + private final List result = new ArrayList<>(); + + public List checkWinner(Car[] cars) { + findMaxNumber(cars); + judgeWinner(cars); + return result; + } + + public void findMaxNumber(Car[] cars) { + int firstPlacePosition = maxNumber; + + for (Car car : cars) { + if (car.getPosition() > firstPlacePosition) + firstPlacePosition = car.getPosition(); + } + maxNumber = firstPlacePosition; + } + + public void judgeWinner(Car[] cars) { + for (Car car : cars) { + if (car.getPosition() == maxNumber) + result.add(car); + } + } +}