From 65d44519f001ef12c9dbbd879542bb8bd3d63e3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 02:41:29 +0900 Subject: [PATCH 01/18] =?UTF-8?q?Docs:=20=EC=B4=88=EA=B8=B0=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EB=AA=85=EC=84=B8=EC=99=80=20=EC=98=88=EC=99=B8?= =?UTF-8?q?=EC=B2=98=EB=A6=AC=20=EA=B8=B0=EB=8A=A5=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/README.md b/README.md index d0286c859f..beedbf3d4f 100644 --- a/README.md +++ b/README.md @@ -1 +1,27 @@ # java-racingcar-precourse + +### 주요 기능 + +- 자동차 이름을 입력받는 기능: + + 사용자가 경주할 자동차들의 이름을 쉼표로 구분하여 입력받는다. + +- 자동차 전진 판단 기능: + + 랜덤 수 생성기를 사용하여 4 이하인 경우 전진하고, 그렇지 않은 경우 0을 출력한다. + +- 전진 상황 출력 기능: + + 각 회차별로 자동차들이 얼마나 전진했는지 출력한다. + +- 최종 우승자 선정 기능: + + 전진 회차가 종료된 후 가장 멀리 전진한 자동차를 선정한다. 동점자가 있을 경우 공동 우승자로 인정한다. + + +### 예외처리 기능 + +- 이름 입력, 전진 횟수 입력에서 null이나 빈칸이 입력으로 들어왔을 경우 `IllegalArgumentException`을 발생시킨다. +- 이름 입력에서 자동차의 이름이 5자가 넘어갈 경우 `IllegalArgumentException` 을 발생시킨다. +- 전진 횟수 입력에서 숫자가 아닌 값이 들어올 경우 `IllegalArgumentException` 을 발생시킨다. +- 전진 횟수 입력에서 양의 정수가 아닌 값이 입력되면 `IllegalArgumentException` 을 발생시킨다. From ec38a02b02b2d32e23c9cca47f752688c26bb368 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 02:45:57 +0900 Subject: [PATCH 02/18] =?UTF-8?q?Chore:=20gitignore=EC=97=90=20build,=20gr?= =?UTF-8?q?adle=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.gitignore b/.gitignore index 5dca701a77..7cd0759acb 100644 --- a/.gitignore +++ b/.gitignore @@ -33,3 +33,10 @@ out/ ### Mac OS ### .DS_Store + +### gradle ### +/build/ +/.gradle/ +/gradle/ +/gradlew +/gradlew.bat From b06fd84ff2b2ea2c913737db17af47130bca5fe5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 02:57:26 +0900 Subject: [PATCH 03/18] =?UTF-8?q?Test:=20=EC=B4=88=EA=B8=B0=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EC=BC=80=EC=9D=B4=EC=8A=A4=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/racingcar/ApplicationTest.java | 75 ++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/src/test/java/racingcar/ApplicationTest.java b/src/test/java/racingcar/ApplicationTest.java index 1d35fc33fe..8a3b178263 100644 --- a/src/test/java/racingcar/ApplicationTest.java +++ b/src/test/java/racingcar/ApplicationTest.java @@ -31,6 +31,81 @@ class ApplicationTest extends NsTest { ); } + @Test + void 공동_우승자_선발_테스트_() { + assertRandomNumberInRangeTest( + () -> { + run("pobi,woni,jun", "2"); + assertThat(output()).contains("pobi : --", "woni : -", "jun : --", "최종 우승자 : pobi, jun"); + }, + MOVING_FORWARD, STOP, MOVING_FORWARD, MOVING_FORWARD, STOP, MOVING_FORWARD + ); + } + + @Test + void 빈_이름_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("", "1")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 중복된_이름_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("pobi,pobi", "1")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 이름_5자_이상일때_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("squidjiny", "1")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 이름_null_일때_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException(null, "1")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 전진_횟수_문자열일때_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("pobi,woni", "woo")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 전진_횟수_특수문자일때_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("pobi,woni", ">*<")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 전진_횟수_음수_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("pobi,woni", "-3")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + + @Test + void 전진_횟수_0_예외_테스트() { + assertSimpleTest(() -> + assertThatThrownBy(() -> runException("pobi,woni", "0")) + .isInstanceOf(IllegalArgumentException.class) + ); + } + @Override public void runMain() { Application.main(new String[]{}); From 6a6a76f42e37bad8484ac79bbc2764669bdb62ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 02:58:55 +0900 Subject: [PATCH 04/18] =?UTF-8?q?Docs:=20=EC=B6=94=EA=B0=80=EB=90=9C=20?= =?UTF-8?q?=EC=98=88=EC=99=B8=EC=B2=98=EB=A6=AC=20=EA=B8=B0=EB=8A=A5?= =?UTF-8?q?=EC=97=90=20=EB=8C=80=ED=95=9C=20=EB=AA=85=EC=84=B8=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 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index beedbf3d4f..ef7923ae1c 100644 --- a/README.md +++ b/README.md @@ -23,5 +23,6 @@ - 이름 입력, 전진 횟수 입력에서 null이나 빈칸이 입력으로 들어왔을 경우 `IllegalArgumentException`을 발생시킨다. - 이름 입력에서 자동차의 이름이 5자가 넘어갈 경우 `IllegalArgumentException` 을 발생시킨다. +- 이름 입력에서 동일한 이름이 입력 될 경우 `IllegalArgumentException` 을 발생시킨다. - 전진 횟수 입력에서 숫자가 아닌 값이 들어올 경우 `IllegalArgumentException` 을 발생시킨다. - 전진 횟수 입력에서 양의 정수가 아닌 값이 입력되면 `IllegalArgumentException` 을 발생시킨다. From d5cb4c20b66cca315a7e8d91dc649594e1505ab1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 17:08:01 +0900 Subject: [PATCH 05/18] =?UTF-8?q?Feat:=20enum=20class(IOMessage,=20Symbol)?= =?UTF-8?q?=EB=A5=BC=20=ED=86=B5=ED=95=9C=20=EC=A0=84=EC=97=AD=EC=A0=81?= =?UTF-8?q?=EC=9D=B8=20=EB=A9=94=EC=8B=9C=EC=A7=80,=20=EB=AC=B8=EC=9E=90?= =?UTF-8?q?=EC=97=B4=20=EA=B5=AC=EB=B6=84=20=EA=B8=B0=ED=98=B8=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20=EA=B5=AC=ED=98=84,=20=EC=B0=A8=EB=9F=89=20?= =?UTF-8?q?=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=EC=8A=A4(InputView)=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/racingcar/common/IOMessage.java | 21 ++++++++++++++ src/main/java/racingcar/common/Symbol.java | 17 +++++++++++ .../java/racingcar/controller/RacingGame.java | 17 +++++++++++ src/main/java/racingcar/view/InputView.java | 28 +++++++++++++++++++ 4 files changed, 83 insertions(+) create mode 100644 src/main/java/racingcar/common/IOMessage.java create mode 100644 src/main/java/racingcar/common/Symbol.java create mode 100644 src/main/java/racingcar/controller/RacingGame.java create mode 100644 src/main/java/racingcar/view/InputView.java diff --git a/src/main/java/racingcar/common/IOMessage.java b/src/main/java/racingcar/common/IOMessage.java new file mode 100644 index 0000000000..a4164e0166 --- /dev/null +++ b/src/main/java/racingcar/common/IOMessage.java @@ -0,0 +1,21 @@ +package racingcar.common; + +public enum IOMessage { + + INPUT_CAR_NAMES("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"), + INPUT_ROUND_COUNT("시도할 횟수는 몇 회인가요?"), + RESULT_NOTICE("실행 결과"), + WINNER_ANNOUNCEMENT("최종 우승자 : "), + CAR_POSITION_FORMAT("%s : %s"); + + private final String text; + + IOMessage(String text) { + this.text = text; + } + + public String getText() { + return text; + } + +} diff --git a/src/main/java/racingcar/common/Symbol.java b/src/main/java/racingcar/common/Symbol.java new file mode 100644 index 0000000000..8c9483f7aa --- /dev/null +++ b/src/main/java/racingcar/common/Symbol.java @@ -0,0 +1,17 @@ +package racingcar.common; + +public enum Symbol { + SEPARATE_MARKER(","), + POSITION_MARKER("-"); + + private final String symbol; + + Symbol(String symbol) { + this.symbol = symbol; + } + + public String getSymbol() { + return symbol; + } +} + diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java new file mode 100644 index 0000000000..5347f3e534 --- /dev/null +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -0,0 +1,17 @@ +package racingcar.controller; + +import racingcar.view.InputView; + +public class RacingGame { + + private final InputView inputView; + + public RacingGame(InputView inputView) { + this.inputView = inputView; + } + + public void run(){ + + } + +} diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java new file mode 100644 index 0000000000..6f6460c146 --- /dev/null +++ b/src/main/java/racingcar/view/InputView.java @@ -0,0 +1,28 @@ +package racingcar.view; + +import camp.nextstep.edu.missionutils.Console; +import racingcar.common.IOMessage; +import racingcar.common.Symbol; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.StringTokenizer; +import java.util.stream.Collectors; + +public class InputView { + + public List readCars(){ + System.out.println(IOMessage.INPUT_CAR_NAMES); + return tokenizeCarsName(Console.readLine()); + } + + public List tokenizeCarsName(String carNamesString){ + return Arrays.stream(carNamesString.split(Symbol.SEPARATE_MARKER.getSymbol())) + .map(String::trim) + .toList(); + } + + + +} From d0cbccfec99719a488be567fea1577ee8833252f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:18:33 +0900 Subject: [PATCH 06/18] =?UTF-8?q?Feat:=20Car=20class=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/racingcar/controller/RacingGame.java | 2 +- src/main/java/racingcar/domain/Car.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/domain/Car.java diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index 5347f3e534..86e26aec38 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -11,7 +11,7 @@ public RacingGame(InputView inputView) { } public void run(){ - + } } diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java new file mode 100644 index 0000000000..fd5d7d6169 --- /dev/null +++ b/src/main/java/racingcar/domain/Car.java @@ -0,0 +1,12 @@ +package racingcar.domain; + +public class Car { + private static final int NAME_MAX_LENGTH = 5; + private final String name; + private int position = 0; + + public Car(String name) { + this.name = name; + } + +} From f51f72da3708183559a489439826c520fb54804a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:34:35 +0900 Subject: [PATCH 07/18] =?UTF-8?q?Feat:=20=EC=83=81=EC=88=98=20=EA=B0=92?= =?UTF-8?q?=EC=9D=84=20=EC=84=A0=EC=96=B8=ED=95=B4=EB=86=93=EC=9D=80=20?= =?UTF-8?q?=ED=81=B4=EB=9E=98=EC=8A=A4(Limit)=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/racingcar/common/Limit.java | 12 ++++++++++++ src/main/java/racingcar/domain/Car.java | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/main/java/racingcar/common/Limit.java diff --git a/src/main/java/racingcar/common/Limit.java b/src/main/java/racingcar/common/Limit.java new file mode 100644 index 0000000000..f13627bb92 --- /dev/null +++ b/src/main/java/racingcar/common/Limit.java @@ -0,0 +1,12 @@ +package racingcar.common; + +public class Limit { + public static final int MOVE_DISTANCE = 1; + public static final int MOVE_CRITERIA = 4; + public static final int MIN_RANDOM_VALUE = 0; + public static final int MAX_RANDOM_VALUE = 9; + + + private Limit() { + } +} diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java index fd5d7d6169..62b765766a 100644 --- a/src/main/java/racingcar/domain/Car.java +++ b/src/main/java/racingcar/domain/Car.java @@ -8,5 +8,5 @@ public class Car { public Car(String name) { this.name = name; } - + } From 2fe989a633072017e10aa692fc5c16c2ac90ef86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:53:43 +0900 Subject: [PATCH 08/18] =?UTF-8?q?Feat:=20Car=20=ED=81=B4=EB=9E=98=EC=8A=A4?= =?UTF-8?q?=EC=97=90=EC=84=9C=20Position=20=EA=B3=84=EC=82=B0=EC=9D=84=20?= =?UTF-8?q?=EC=9C=84=ED=95=9C=20=EB=9E=9C=EB=8D=A4=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20=ED=95=A8=EC=88=98=20=EC=84=A0=EC=96=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/common/Limit.java | 4 ++-- src/main/java/racingcar/domain/Car.java | 24 ++++++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/common/Limit.java b/src/main/java/racingcar/common/Limit.java index f13627bb92..be88d2de78 100644 --- a/src/main/java/racingcar/common/Limit.java +++ b/src/main/java/racingcar/common/Limit.java @@ -1,8 +1,8 @@ package racingcar.common; public class Limit { - public static final int MOVE_DISTANCE = 1; - public static final int MOVE_CRITERIA = 4; + public static final int MOVE_VALUE = 1; + public static final int MOVE_CRITERIA_VALUE = 4; public static final int MIN_RANDOM_VALUE = 0; public static final int MAX_RANDOM_VALUE = 9; diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java index 62b765766a..8c6522f206 100644 --- a/src/main/java/racingcar/domain/Car.java +++ b/src/main/java/racingcar/domain/Car.java @@ -1,7 +1,10 @@ package racingcar.domain; +import racingcar.common.Limit; + +import java.util.random.RandomGenerator; + public class Car { - private static final int NAME_MAX_LENGTH = 5; private final String name; private int position = 0; @@ -9,4 +12,23 @@ public Car(String name) { this.name = name; } + public void move() { + if (isMove()) { + position += Limit.MOVE_VALUE; + } + } + + private boolean isMove() { + int number = RandomGenerator.getDefault().nextInt(Limit.MIN_RANDOM_VALUE, Limit.MAX_RANDOM_VALUE); + return number >= Limit.MOVE_CRITERIA_VALUE; + } + + public int getPosition(){ + return position; + } + + public String getName(){ + return name; + } + } From 32b49b9b2f8532f5232269fa6a2ce2ce1e461db2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:00:56 +0900 Subject: [PATCH 09/18] =?UTF-8?q?Refactor:=20=EC=9A=94=EA=B5=AC=20?= =?UTF-8?q?=EC=82=AC=ED=95=AD=EC=97=90=20=EB=A7=9E=EA=B2=8C=20Random=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20API=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/racingcar/domain/Car.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java index 8c6522f206..cca4379faf 100644 --- a/src/main/java/racingcar/domain/Car.java +++ b/src/main/java/racingcar/domain/Car.java @@ -1,5 +1,6 @@ package racingcar.domain; +import camp.nextstep.edu.missionutils.Randoms; import racingcar.common.Limit; import java.util.random.RandomGenerator; @@ -19,7 +20,7 @@ public void move() { } private boolean isMove() { - int number = RandomGenerator.getDefault().nextInt(Limit.MIN_RANDOM_VALUE, Limit.MAX_RANDOM_VALUE); + int number = Randoms.pickNumberInRange(Limit.MIN_RANDOM_VALUE, Limit.MAX_RANDOM_VALUE); return number >= Limit.MOVE_CRITERIA_VALUE; } From 48b2d8e25a2e3ca43fdffde83a29883c67f23c7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:11:12 +0900 Subject: [PATCH 10/18] =?UTF-8?q?Feat:=20Car=20=EA=B0=9D=EC=B2=B4=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=EC=9D=98=20=EC=9A=A9=EC=9D=B4=ED=95=A8?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=B4=20CarGroup=20=ED=81=B4=EB=9E=98?= =?UTF-8?q?=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/racingcar/domain/CarGroup.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/racingcar/domain/CarGroup.java diff --git a/src/main/java/racingcar/domain/CarGroup.java b/src/main/java/racingcar/domain/CarGroup.java new file mode 100644 index 0000000000..25a96890b8 --- /dev/null +++ b/src/main/java/racingcar/domain/CarGroup.java @@ -0,0 +1,13 @@ +package racingcar.domain; + +import java.util.List; + +public class CarGroup { + private final List cars; + + public CarGroup(List carNames) { + this.cars = carNames.stream() + .map(Car::new) + .toList(); + } +} From 500a325aaa7360206f6b7e713b9531887f0aada9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:13:44 +0900 Subject: [PATCH 11/18] =?UTF-8?q?Feat:=20RacingGame=EC=97=90=EC=84=9C=20Ca?= =?UTF-8?q?r=EC=9D=98=20=EC=9D=B4=EB=A6=84=EC=9D=84=20=EC=9E=85=EB=A0=A5?= =?UTF-8?q?=EB=B0=9B=EC=95=84=EC=84=9C=20Car=20=EA=B0=9D=EC=B2=B4=EB=A5=BC?= =?UTF-8?q?=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/racingcar/controller/RacingGame.java | 3 ++- src/main/java/racingcar/view/InputView.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index 86e26aec38..f8dd2af85b 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -1,5 +1,6 @@ package racingcar.controller; +import racingcar.domain.CarGroup; import racingcar.view.InputView; public class RacingGame { @@ -11,7 +12,7 @@ public RacingGame(InputView inputView) { } public void run(){ - + CarGroup carGroup = new CarGroup(inputView.readCars()); } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 6f6460c146..18d34d9c73 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -17,7 +17,7 @@ public List readCars(){ return tokenizeCarsName(Console.readLine()); } - public List tokenizeCarsName(String carNamesString){ + private List tokenizeCarsName(String carNamesString){ return Arrays.stream(carNamesString.split(Symbol.SEPARATE_MARKER.getSymbol())) .map(String::trim) .toList(); From 8cf39a5eac3d9e863acf7f0cabf69e2f1c764be7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:25:05 +0900 Subject: [PATCH 12/18] =?UTF-8?q?Feat:=20=EA=B2=BD=EA=B8=B0=20=EC=8B=A4?= =?UTF-8?q?=ED=96=89=20=ED=9A=9F=EC=88=98=20=EC=9E=85=EB=A0=A5=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=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/racingcar/controller/RacingGame.java | 2 ++ src/main/java/racingcar/view/InputView.java | 13 +++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index f8dd2af85b..e4c80e09b1 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -13,6 +13,8 @@ public RacingGame(InputView inputView) { public void run(){ CarGroup carGroup = new CarGroup(inputView.readCars()); + int roundCount = inputView.readRoundCount(); + } } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 18d34d9c73..69437814ab 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -4,25 +4,26 @@ import racingcar.common.IOMessage; import racingcar.common.Symbol; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.StringTokenizer; -import java.util.stream.Collectors; public class InputView { - public List readCars(){ + public List readCars() { System.out.println(IOMessage.INPUT_CAR_NAMES); return tokenizeCarsName(Console.readLine()); } - private List tokenizeCarsName(String carNamesString){ + private List tokenizeCarsName(String carNamesString) { return Arrays.stream(carNamesString.split(Symbol.SEPARATE_MARKER.getSymbol())) .map(String::trim) .toList(); } - + public int readRoundCount(){ + System.out.println(IOMessage.INPUT_ROUND_COUNT); + int num = Integer.parseInt(Console.readLine()); + return num; + } } From dd98b0569c8d7fb007a60f454abf383760867d0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:49:13 +0900 Subject: [PATCH 13/18] =?UTF-8?q?Feat:=20=EA=B0=81=20Car=EB=93=A4=EC=9D=98?= =?UTF-8?q?=20=EB=9D=BC=EC=9A=B4=EB=93=9C=EA=B0=80=20=EB=81=9D=EB=82=9C=20?= =?UTF-8?q?=ED=9B=84=EC=9D=98=20=EC=9C=84=EC=B9=98=EB=A5=BC=20=EC=B6=9C?= =?UTF-8?q?=EB=A0=A5=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20=EA=B0=9C?= =?UTF-8?q?=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/Application.java | 10 +++++++++- src/main/java/racingcar/controller/RacingGame.java | 8 ++++++-- src/main/java/racingcar/domain/CarGroup.java | 6 ++++++ src/main/java/racingcar/view/OutputView.java | 14 ++++++++++++++ 4 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 src/main/java/racingcar/view/OutputView.java diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index a17a52e724..ea6ed89165 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,15 @@ package racingcar; +import camp.nextstep.edu.missionutils.Console; +import racingcar.controller.RacingGame; +import racingcar.view.InputView; +import racingcar.view.OutputView; + public class Application { public static void main(String[] args) { - // TODO: 프로그램 구현 + InputView inputView = new InputView(); + OutputView outputView = new OutputView(); + RacingGame racingGame = new RacingGame(inputView, outputView); + racingGame.run(); } } diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index e4c80e09b1..af388f8cfe 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -2,19 +2,23 @@ import racingcar.domain.CarGroup; import racingcar.view.InputView; +import racingcar.view.OutputView; public class RacingGame { private final InputView inputView; + private OutputView outputView; - public RacingGame(InputView inputView) { + public RacingGame(InputView inputView, OutputView outputView) { this.inputView = inputView; + this.outputView = outputView; } public void run(){ CarGroup carGroup = new CarGroup(inputView.readCars()); int roundCount = inputView.readRoundCount(); - + + outputView.printRoundResult(carGroup); } } diff --git a/src/main/java/racingcar/domain/CarGroup.java b/src/main/java/racingcar/domain/CarGroup.java index 25a96890b8..077cec09a5 100644 --- a/src/main/java/racingcar/domain/CarGroup.java +++ b/src/main/java/racingcar/domain/CarGroup.java @@ -10,4 +10,10 @@ public CarGroup(List carNames) { .map(Car::new) .toList(); } + + public void printCarPositions() { + for (Car car : cars) { + System.out.println(car.getName() + "의 위치: " + car.getPosition()); + } + } } diff --git a/src/main/java/racingcar/view/OutputView.java b/src/main/java/racingcar/view/OutputView.java new file mode 100644 index 0000000000..634d1bb399 --- /dev/null +++ b/src/main/java/racingcar/view/OutputView.java @@ -0,0 +1,14 @@ +package racingcar.view; + +import racingcar.common.IOMessage; +import racingcar.domain.Car; +import racingcar.domain.CarGroup; + +public class OutputView { + public void printRoundResult(CarGroup carGroup) { + System.out.println(IOMessage.RESULT_NOTICE); + carGroup.printCarPositions(); + System.out.println(); + } + +} From 82611c792cd3cb7d3bd2815de236264f051e1143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 22:57:16 +0900 Subject: [PATCH 14/18] =?UTF-8?q?Feat:=20=EB=A7=A4=20=EB=9D=BC=EC=9A=B4?= =?UTF-8?q?=EB=93=9C=EB=A7=88=EB=8B=A4=20car=EC=9D=98=20=ED=8F=AC=EC=A7=80?= =?UTF-8?q?=EC=85=98=EC=9D=84=20=EA=B3=84=EC=82=B0=ED=95=98=EA=B3=A0,=20?= =?UTF-8?q?=EC=B6=9C=EB=A0=A5=ED=95=98=EB=8A=94=20=EA=B8=B0=EB=8A=A5=20?= =?UTF-8?q?=EA=B0=9C=EB=B0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racingcar/controller/RacingGame.java | 5 ++++- src/main/java/racingcar/domain/CarGroup.java | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index af388f8cfe..b25f8d3446 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -17,8 +17,11 @@ public RacingGame(InputView inputView, OutputView outputView) { public void run(){ CarGroup carGroup = new CarGroup(inputView.readCars()); int roundCount = inputView.readRoundCount(); + for(int i = 0; i carNames) { .toList(); } + public void moveCars() { + for (Car car : cars) { + car.move(); + } + } + public void printCarPositions() { for (Car car : cars) { System.out.println(car.getName() + "의 위치: " + car.getPosition()); From e8d8a9e537b7f820f3d616eb80976065c2c2127b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:14:34 +0900 Subject: [PATCH 15/18] =?UTF-8?q?Feat,Fix:=20=EC=8A=B9=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?,=20=EC=9A=94=EA=B5=AC=20=ED=8F=AC=EB=A7=B7=EC=97=90=20?= =?UTF-8?q?=EB=A7=9E=EA=B2=8C=20=EC=9E=90=EB=8F=99=EC=B0=A8=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=20=EC=B6=9C=EB=A0=A5=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/racingcar/controller/RacingGame.java | 2 ++ src/main/java/racingcar/domain/CarGroup.java | 29 ++++++++++++++++++- src/main/java/racingcar/view/InputView.java | 4 +-- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index b25f8d3446..aebdf1ff83 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -1,5 +1,6 @@ package racingcar.controller; +import racingcar.domain.Car; import racingcar.domain.CarGroup; import racingcar.view.InputView; import racingcar.view.OutputView; @@ -22,6 +23,7 @@ public void run(){ outputView.printRoundResult(carGroup); } + carGroup.printWinners(); } } diff --git a/src/main/java/racingcar/domain/CarGroup.java b/src/main/java/racingcar/domain/CarGroup.java index 3b137f853f..19ff172d92 100644 --- a/src/main/java/racingcar/domain/CarGroup.java +++ b/src/main/java/racingcar/domain/CarGroup.java @@ -1,6 +1,9 @@ package racingcar.domain; +import racingcar.common.IOMessage; + import java.util.List; +import java.util.stream.Collectors; public class CarGroup { private final List cars; @@ -17,9 +20,33 @@ public void moveCars() { } } + public List getWinners() { + int maxPosition = getMaxPosition(); + return cars.stream() + .filter(car -> car.getPosition() == maxPosition) + .toList(); + } + + public void printWinners() { + List winners = getWinners(); + String winnerNames = winners.stream() + .map(Car::getName) + .collect(Collectors.joining(", ")); + System.out.println("최종 우승자 : " + winnerNames); + } + public void printCarPositions() { for (Car car : cars) { - System.out.println(car.getName() + "의 위치: " + car.getPosition()); + String positionMarker = "-".repeat(car.getPosition()); + System.out.printf(IOMessage.CAR_POSITION_FORMAT.getText() + "%n", car.getName(), positionMarker); } } + + private int getMaxPosition() { + return cars.stream() + .mapToInt(Car::getPosition) + .max() + .orElse(0); + } + } diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index 69437814ab..ada543b212 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -10,7 +10,7 @@ public class InputView { public List readCars() { - System.out.println(IOMessage.INPUT_CAR_NAMES); + System.out.println(IOMessage.INPUT_CAR_NAMES.getText()); return tokenizeCarsName(Console.readLine()); } @@ -21,7 +21,7 @@ private List tokenizeCarsName(String carNamesString) { } public int readRoundCount(){ - System.out.println(IOMessage.INPUT_ROUND_COUNT); + System.out.println(IOMessage.INPUT_ROUND_COUNT.getText()); int num = Integer.parseInt(Console.readLine()); return num; } From 66e76bf826e9f017867f6af1a9d90760c5628559 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:14:40 +0900 Subject: [PATCH 16/18] =?UTF-8?q?Feat,Fix:=20=EC=8A=B9=EB=A6=AC=EC=9E=90?= =?UTF-8?q?=20=EC=B6=9C=EB=A0=A5=20=EA=B8=B0=EB=8A=A5=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?,=20=EC=9A=94=EA=B5=AC=20=ED=8F=AC=EB=A7=B7=EC=97=90=20?= =?UTF-8?q?=EB=A7=9E=EA=B2=8C=20=EC=9E=90=EB=8F=99=EC=B0=A8=20=EC=9C=84?= =?UTF-8?q?=EC=B9=98=20=20=EC=B6=9C=EB=A0=A5=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/racingcar/domain/CarGroup.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/racingcar/domain/CarGroup.java b/src/main/java/racingcar/domain/CarGroup.java index 19ff172d92..193489e843 100644 --- a/src/main/java/racingcar/domain/CarGroup.java +++ b/src/main/java/racingcar/domain/CarGroup.java @@ -1,6 +1,7 @@ package racingcar.domain; import racingcar.common.IOMessage; +import racingcar.common.Symbol; import java.util.List; import java.util.stream.Collectors; @@ -37,7 +38,7 @@ public void printWinners() { public void printCarPositions() { for (Car car : cars) { - String positionMarker = "-".repeat(car.getPosition()); + String positionMarker = Symbol.POSITION_MARKER.getSymbol().repeat(car.getPosition()); System.out.printf(IOMessage.CAR_POSITION_FORMAT.getText() + "%n", car.getName(), positionMarker); } } From 4deefb84530eaef8b8345b6c8b916d024a84d234 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:20:00 +0900 Subject: [PATCH 17/18] =?UTF-8?q?Fix,=20Refactor:=20enum=EA=B0=92=EC=9D=B4?= =?UTF-8?q?=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20=EC=B6=9C=EB=A0=A5=EB=90=98?= =?UTF-8?q?=EC=A7=80=20=EC=95=8A=EB=8A=94=20=EB=B2=84=EA=B7=B8=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/racingcar/Application.java | 1 - src/main/java/racingcar/controller/RacingGame.java | 4 ++-- src/main/java/racingcar/domain/CarGroup.java | 8 -------- src/main/java/racingcar/view/OutputView.java | 12 +++++++++++- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index ea6ed89165..c4614eeccf 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,6 +1,5 @@ package racingcar; -import camp.nextstep.edu.missionutils.Console; import racingcar.controller.RacingGame; import racingcar.view.InputView; import racingcar.view.OutputView; diff --git a/src/main/java/racingcar/controller/RacingGame.java b/src/main/java/racingcar/controller/RacingGame.java index aebdf1ff83..94e6539c26 100644 --- a/src/main/java/racingcar/controller/RacingGame.java +++ b/src/main/java/racingcar/controller/RacingGame.java @@ -8,7 +8,7 @@ public class RacingGame { private final InputView inputView; - private OutputView outputView; + private final OutputView outputView; public RacingGame(InputView inputView, OutputView outputView) { this.inputView = inputView; @@ -23,7 +23,7 @@ public void run(){ outputView.printRoundResult(carGroup); } - carGroup.printWinners(); + outputView.printWinners(carGroup.getWinners()); } } diff --git a/src/main/java/racingcar/domain/CarGroup.java b/src/main/java/racingcar/domain/CarGroup.java index 193489e843..bc1bea6490 100644 --- a/src/main/java/racingcar/domain/CarGroup.java +++ b/src/main/java/racingcar/domain/CarGroup.java @@ -28,14 +28,6 @@ public List getWinners() { .toList(); } - public void printWinners() { - List winners = getWinners(); - String winnerNames = winners.stream() - .map(Car::getName) - .collect(Collectors.joining(", ")); - System.out.println("최종 우승자 : " + winnerNames); - } - public void printCarPositions() { for (Car car : cars) { String positionMarker = Symbol.POSITION_MARKER.getSymbol().repeat(car.getPosition()); diff --git a/src/main/java/racingcar/view/OutputView.java b/src/main/java/racingcar/view/OutputView.java index 634d1bb399..77778e2b3d 100644 --- a/src/main/java/racingcar/view/OutputView.java +++ b/src/main/java/racingcar/view/OutputView.java @@ -4,11 +4,21 @@ import racingcar.domain.Car; import racingcar.domain.CarGroup; +import java.util.List; +import java.util.stream.Collectors; + public class OutputView { public void printRoundResult(CarGroup carGroup) { - System.out.println(IOMessage.RESULT_NOTICE); + System.out.println(IOMessage.RESULT_NOTICE.getText()); carGroup.printCarPositions(); System.out.println(); } + public void printWinners(List winners) { + String winnerNames = winners.stream() + .map(Car::getName) + .collect(Collectors.joining(", ")); + System.out.println("최종 우승자 : " + winnerNames); + } + } From f3d23f49e5b6bef4c466376bb128667dcbd08bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EC=A0=95=EC=95=84?= <92552047+squidjiny@users.noreply.github.com> Date: Mon, 28 Oct 2024 23:48:19 +0900 Subject: [PATCH 18/18] =?UTF-8?q?Feat:=20=EC=9C=A0=ED=9A=A8=EC=84=B1?= =?UTF-8?q?=EA=B2=80=EC=82=AC=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/racingcar/common/Limit.java | 2 ++ src/main/java/racingcar/common/Validator.java | 34 +++++++++++++++++++ src/main/java/racingcar/view/InputView.java | 6 +++- src/test/java/racingcar/ApplicationTest.java | 10 +----- 4 files changed, 42 insertions(+), 10 deletions(-) create mode 100644 src/main/java/racingcar/common/Validator.java diff --git a/src/main/java/racingcar/common/Limit.java b/src/main/java/racingcar/common/Limit.java index be88d2de78..3e3f1f2c2b 100644 --- a/src/main/java/racingcar/common/Limit.java +++ b/src/main/java/racingcar/common/Limit.java @@ -5,6 +5,8 @@ public class Limit { public static final int MOVE_CRITERIA_VALUE = 4; public static final int MIN_RANDOM_VALUE = 0; public static final int MAX_RANDOM_VALUE = 9; + public static final int MAX_NAME_LENGTH = 5; + public static final int MIN_NAME_LENGTH = 1; private Limit() { diff --git a/src/main/java/racingcar/common/Validator.java b/src/main/java/racingcar/common/Validator.java new file mode 100644 index 0000000000..fe74ee72d3 --- /dev/null +++ b/src/main/java/racingcar/common/Validator.java @@ -0,0 +1,34 @@ +package racingcar.common; + +import java.util.List; + +public class Validator { + + private Validator() { + + } + + public static void validateCarNames(List carNames) { + if (carNames == null || carNames.isEmpty()) { + throw new IllegalArgumentException(); + } + if (hasDuplicated(carNames)) { + throw new IllegalArgumentException(); + } + for (String name : carNames) { + if (name.length() < Limit.MIN_NAME_LENGTH || name.length() > Limit.MAX_NAME_LENGTH) { + throw new IllegalArgumentException(); + } + } + } + + private static boolean hasDuplicated(List items) { + return items.size() != items.stream().distinct().count(); + } + + public static void validateRoundCount(int roundCount) { + if (roundCount < 1) { + throw new IllegalArgumentException(); + } + } +} diff --git a/src/main/java/racingcar/view/InputView.java b/src/main/java/racingcar/view/InputView.java index ada543b212..1c8ceebaf7 100644 --- a/src/main/java/racingcar/view/InputView.java +++ b/src/main/java/racingcar/view/InputView.java @@ -3,6 +3,7 @@ import camp.nextstep.edu.missionutils.Console; import racingcar.common.IOMessage; import racingcar.common.Symbol; +import racingcar.common.Validator; import java.util.Arrays; import java.util.List; @@ -11,7 +12,9 @@ public class InputView { public List readCars() { System.out.println(IOMessage.INPUT_CAR_NAMES.getText()); - return tokenizeCarsName(Console.readLine()); + List carNames = tokenizeCarsName(Console.readLine()); + Validator.validateCarNames(carNames); + return carNames; } private List tokenizeCarsName(String carNamesString) { @@ -23,6 +26,7 @@ private List tokenizeCarsName(String carNamesString) { public int readRoundCount(){ System.out.println(IOMessage.INPUT_ROUND_COUNT.getText()); int num = Integer.parseInt(Console.readLine()); + Validator.validateRoundCount(num); return num; } diff --git a/src/test/java/racingcar/ApplicationTest.java b/src/test/java/racingcar/ApplicationTest.java index 8a3b178263..2630ededea 100644 --- a/src/test/java/racingcar/ApplicationTest.java +++ b/src/test/java/racingcar/ApplicationTest.java @@ -36,7 +36,7 @@ class ApplicationTest extends NsTest { assertRandomNumberInRangeTest( () -> { run("pobi,woni,jun", "2"); - assertThat(output()).contains("pobi : --", "woni : -", "jun : --", "최종 우승자 : pobi, jun"); + assertThat(output()).contains("pobi : --","jun : --", "최종 우승자 : pobi, jun"); }, MOVING_FORWARD, STOP, MOVING_FORWARD, MOVING_FORWARD, STOP, MOVING_FORWARD ); @@ -66,14 +66,6 @@ class ApplicationTest extends NsTest { ); } - @Test - void 이름_null_일때_예외_테스트() { - assertSimpleTest(() -> - assertThatThrownBy(() -> runException(null, "1")) - .isInstanceOf(IllegalArgumentException.class) - ); - } - @Test void 전진_횟수_문자열일때_예외_테스트() { assertSimpleTest(() ->