From 086a210af27d7e05b2ac2f2e081ef1e5e3690ecb Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 20:17:22 +0900 Subject: [PATCH 01/13] =?UTF-8?q?docs:=20=EA=B8=B0=EB=8A=A5=20=EB=AA=A9?= =?UTF-8?q?=EB=A1=9D=20=EC=A0=95=EC=9D=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 491aece1..ae4632c3 100644 --- a/README.md +++ b/README.md @@ -1 +1,28 @@ -# java-racingcar-precourse \ No newline at end of file +# java-racingcar-precourse + +## 구현 기능 목록 + +### 자동차의 이름 입력 + + * 이름은 쉼표로 구분하고, 5자 이하만 입력이 가능합니다. + + * 잘못된 입력 시 `IllegalArgumentException`이 발생하고 다시 입력을 받습니다. + +### 이동 횟수 입력 + + * 사용자는 몇 번 이동할 것인지 횟수를 입력 합니다. + + * 마찬가지로 잘못된 입력 시 `IllegalArgumentException`이 발생하고 다시 입력을 받습니다. + +### 자동차 앞으로 전진 + + * 자동차마다 0부터 9까지의 무작위 값을 생성하고 4 이상일 시 한 칸 전진합니다. + + * 전진이 끝나면 진행 결과를 출력합니다. + * 이 과정은 사용자로부터 입력 받은 이동 횟수만큼 반복됩니다. + +### 완주 및 우승자 판단 + + * 가장 많이 전진한 자동차가 우승자로 선정됩니다. + + * 최종 우승자를 출력합니다. From e16db1a124f16f37530b7b6bd2702c6d4730d935 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 20:45:22 +0900 Subject: [PATCH 02/13] =?UTF-8?q?feat:=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=EC=9D=98=20=EC=9D=B4=EB=A6=84=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 45 +++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/view/InputView.java diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java new file mode 100644 index 00000000..a1f21e32 --- /dev/null +++ b/src/main/java/view/InputView.java @@ -0,0 +1,45 @@ +package view; + +import java.util.Scanner; + +public class InputView { + + private Scanner scanner = new Scanner(System.in); + + public String[] inputCarNames() { + String[] carNames = null; + boolean isValid = false; + + while(!isValid) { + System.out.println("경주할 자동차 이름을 입력하세요.(이름은 쉼표(,) 기준으로 구분)"); + carNames = scanner.nextLine().split(","); + + isValid = isValidCarNames(carNames); + } + + return carNames; + } + + private boolean isValidCarNames(String[] carNames) { + for (String carName : carNames) { + if(!isValidCarName(carName)) { + return false; + } + } + return true; + } + + private boolean isValidCarName(String carName) { + try { + if (carName.length() > 5) { + throw new IllegalArgumentException("[ERROR] 자동차 이름은 5자 이하만 입력이 가능합니다."); + } + } catch (IllegalArgumentException e) { + System.out.println(e.getMessage()); + + return false; + } + return true; + } + +} From e08558bbe9d34e72da7a28a4fa959cf85e2ca26f Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 21:08:14 +0900 Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=EC=9D=B4=EB=8F=99=20=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EC=9E=85=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/view/InputView.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/view/InputView.java b/src/main/java/view/InputView.java index a1f21e32..5e5eb927 100644 --- a/src/main/java/view/InputView.java +++ b/src/main/java/view/InputView.java @@ -4,7 +4,7 @@ public class InputView { - private Scanner scanner = new Scanner(System.in); + private final Scanner scanner = new Scanner(System.in); public String[] inputCarNames() { String[] carNames = null; @@ -20,6 +20,12 @@ public String[] inputCarNames() { return carNames; } + public int inputMovementCount() { + System.out.println("시도할 횟수는 몇회인가요?"); + + return scanner.nextInt(); + } + private boolean isValidCarNames(String[] carNames) { for (String carName : carNames) { if(!isValidCarName(carName)) { From edc1d18dd3c6e6854621b045c78299f5365bcbf9 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 21:11:22 +0900 Subject: [PATCH 04/13] =?UTF-8?q?docs:=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=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ae4632c3..98f081d5 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,13 @@ * 마찬가지로 잘못된 입력 시 `IllegalArgumentException`이 발생하고 다시 입력을 받습니다. +### 난수 생성 + + * 0부터 9까지의 무작위 수를 생성합니다. + ### 자동차 앞으로 전진 - * 자동차마다 0부터 9까지의 무작위 값을 생성하고 4 이상일 시 한 칸 전진합니다. + * 생성된 난수가 4 이상일 시 한 칸 전진합니다. * 전진이 끝나면 진행 결과를 출력합니다. * 이 과정은 사용자로부터 입력 받은 이동 횟수만큼 반복됩니다. From be82f48eef86d4bfeecb35317676100ca67a2bfe Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 21:15:04 +0900 Subject: [PATCH 05/13] =?UTF-8?q?feat:=200=EB=B6=80=ED=84=B0=209=EA=B9=8C?= =?UTF-8?q?=EC=A7=80=EC=9D=98=20=EB=AC=B4=EC=9E=91=EC=9C=84=20=EC=88=98=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/util/RandomNumberGenerator.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 src/main/java/util/RandomNumberGenerator.java diff --git a/src/main/java/util/RandomNumberGenerator.java b/src/main/java/util/RandomNumberGenerator.java new file mode 100644 index 00000000..074b36e8 --- /dev/null +++ b/src/main/java/util/RandomNumberGenerator.java @@ -0,0 +1,13 @@ +package util; + +import java.util.Random; + +public class RandomNumberGenerator { + + private final Random random = new Random(); + + public int generateRandomNumber() { + return random.nextInt(10); + } + +} From 54f18e2e54993e108544f47f8c52e7b9b84919b8 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 22:38:48 +0900 Subject: [PATCH 06/13] =?UTF-8?q?feat:=20=EB=A0=88=EC=9D=B4=EC=8B=B1=20?= =?UTF-8?q?=EC=8B=9C=EC=9E=91=20-=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=95=9E=EC=9C=BC=EB=A1=9C=20=EC=A0=84=EC=A7=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/RacingCarApplication.java | 10 +++++++ .../java/controller/RacingCarController.java | 19 ++++++++++++ src/main/java/model/Car.java | 18 ++++++++++++ src/main/java/model/RacingCarGame.java | 29 +++++++++++++++++++ 4 files changed, 76 insertions(+) create mode 100644 src/main/java/RacingCarApplication.java create mode 100644 src/main/java/controller/RacingCarController.java create mode 100644 src/main/java/model/Car.java create mode 100644 src/main/java/model/RacingCarGame.java diff --git a/src/main/java/RacingCarApplication.java b/src/main/java/RacingCarApplication.java new file mode 100644 index 00000000..98b31bb4 --- /dev/null +++ b/src/main/java/RacingCarApplication.java @@ -0,0 +1,10 @@ +import controller.RacingCarController; + +public class RacingCarApplication { + + public static void main(String[] args) { + RacingCarController controller = new RacingCarController(); + controller.startGame(); + } + +} diff --git a/src/main/java/controller/RacingCarController.java b/src/main/java/controller/RacingCarController.java new file mode 100644 index 00000000..f041de96 --- /dev/null +++ b/src/main/java/controller/RacingCarController.java @@ -0,0 +1,19 @@ +package controller; + +import model.RacingCarGame; +import view.InputView; + +public class RacingCarController { + + private final InputView inputView = new InputView(); + + public void startGame() { + String[] carNames = inputView.inputCarNames(); + int movementCount = inputView.inputMovementCount(); + + RacingCarGame game = new RacingCarGame(carNames, movementCount); + + game.startRacing(); + } + +} diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java new file mode 100644 index 00000000..dca109bf --- /dev/null +++ b/src/main/java/model/Car.java @@ -0,0 +1,18 @@ +package model; + +public class Car { + + private final String carName; + private int position = 0; + + public Car(String name) { + this.carName = name; + } + + public void move(int randomNumber) { + if (randomNumber >= 4) { + position += 1; + } + } + +} diff --git a/src/main/java/model/RacingCarGame.java b/src/main/java/model/RacingCarGame.java new file mode 100644 index 00000000..57d922e9 --- /dev/null +++ b/src/main/java/model/RacingCarGame.java @@ -0,0 +1,29 @@ +package model; + +import java.util.ArrayList; +import java.util.List; +import util.RandomNumberGenerator; + +public class RacingCarGame { + + private final List cars = new ArrayList<>(); + private final int movementCount; + + private final RandomNumberGenerator generator = new RandomNumberGenerator();; + + public RacingCarGame(String[] carNames, int movementCount) { + for (String carName : carNames) { + cars.add(new Car(carName)); + } + this.movementCount = movementCount; + } + + public void startRacing() { + for (int i = 0; i < movementCount; i++) { + for (Car car : cars) { + car.move(generator.generateRandomNumber()); + } + } + } + +} From 7aa3606985cb16cf045db99de927e5cc3946efb1 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Sun, 9 Jun 2024 22:56:36 +0900 Subject: [PATCH 07/13] =?UTF-8?q?refactor:=20=EC=9E=90=EB=8F=99=EC=B0=A8?= =?UTF-8?q?=20=EC=95=9E=EC=9C=BC=EB=A1=9C=20=EC=A0=84=EC=A7=84=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EB=A6=AC=ED=8C=A9=ED=86=A0=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 한 단계를 진행하고 자동차 목록을 리턴하여 컨트롤러단에서 결과를 출력 --- src/main/java/controller/RacingCarController.java | 2 +- src/main/java/model/RacingCarGame.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/controller/RacingCarController.java b/src/main/java/controller/RacingCarController.java index f041de96..3e912664 100644 --- a/src/main/java/controller/RacingCarController.java +++ b/src/main/java/controller/RacingCarController.java @@ -13,7 +13,7 @@ public void startGame() { RacingCarGame game = new RacingCarGame(carNames, movementCount); - game.startRacing(); + game.goForward(); } } diff --git a/src/main/java/model/RacingCarGame.java b/src/main/java/model/RacingCarGame.java index 57d922e9..6c71674d 100644 --- a/src/main/java/model/RacingCarGame.java +++ b/src/main/java/model/RacingCarGame.java @@ -18,12 +18,12 @@ public RacingCarGame(String[] carNames, int movementCount) { this.movementCount = movementCount; } - public void startRacing() { - for (int i = 0; i < movementCount; i++) { - for (Car car : cars) { - car.move(generator.generateRandomNumber()); - } + public List goForward() { + for (Car car : cars) { + car.move(generator.generateRandomNumber()); } + + return cars; } } From 0408eea0b9c5801b1f07fd2c63548126a8fa6edd Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 00:00:38 +0900 Subject: [PATCH 08/13] =?UTF-8?q?feat:=20=EC=A0=84=EC=A7=84=20=ED=9B=84=20?= =?UTF-8?q?=EC=A7=84=ED=96=89=20=EA=B2=B0=EA=B3=BC=20=EC=B6=9C=EB=A0=A5=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/controller/RacingCarController.java | 7 +++++- src/main/java/model/Car.java | 8 +++++++ src/main/java/model/RacingCarGame.java | 2 +- src/main/java/view/OutputView.java | 24 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/main/java/view/OutputView.java diff --git a/src/main/java/controller/RacingCarController.java b/src/main/java/controller/RacingCarController.java index 3e912664..618519e8 100644 --- a/src/main/java/controller/RacingCarController.java +++ b/src/main/java/controller/RacingCarController.java @@ -2,10 +2,12 @@ import model.RacingCarGame; import view.InputView; +import view.OutputView; public class RacingCarController { private final InputView inputView = new InputView(); + private final OutputView outputView = new OutputView(); public void startGame() { String[] carNames = inputView.inputCarNames(); @@ -13,7 +15,10 @@ public void startGame() { RacingCarGame game = new RacingCarGame(carNames, movementCount); - game.goForward(); + outputView.printResultMessage(); + for (int i = 0; i < movementCount; i++) { + outputView.printProgress(game.playOneRound()); + } } } diff --git a/src/main/java/model/Car.java b/src/main/java/model/Car.java index dca109bf..fa6dceca 100644 --- a/src/main/java/model/Car.java +++ b/src/main/java/model/Car.java @@ -15,4 +15,12 @@ public void move(int randomNumber) { } } + public String getCarName() { + return carName; + } + + public int getPosition() { + return position; + } + } diff --git a/src/main/java/model/RacingCarGame.java b/src/main/java/model/RacingCarGame.java index 6c71674d..c359949e 100644 --- a/src/main/java/model/RacingCarGame.java +++ b/src/main/java/model/RacingCarGame.java @@ -18,7 +18,7 @@ public RacingCarGame(String[] carNames, int movementCount) { this.movementCount = movementCount; } - public List goForward() { + public List playOneRound() { for (Car car : cars) { car.move(generator.generateRandomNumber()); } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java new file mode 100644 index 00000000..2052b4ff --- /dev/null +++ b/src/main/java/view/OutputView.java @@ -0,0 +1,24 @@ +package view; + +import java.util.List; +import model.Car; + +public class OutputView { + + public void printResultMessage() { + System.out.println(); + System.out.println("실행 결과"); + } + + public void printProgress(List cars) { + for (Car car : cars) { + System.out.print(car.getCarName() + " : "); + for (int i = 0; i < car.getPosition(); i++) { + System.out.print("-"); + } + System.out.println(); + } + System.out.println(); + } + +} From 123f7620f66b3dabf4c2b0e77b120e620a298696 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 00:10:57 +0900 Subject: [PATCH 09/13] =?UTF-8?q?feat:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=ED=8C=90=EB=8B=A8=20=EB=B0=8F=20=EC=B5=9C=EC=A2=85=20=EC=9A=B0?= =?UTF-8?q?=EC=8A=B9=EC=9E=90=20=EC=B6=9C=EB=A0=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/RacingCarController.java | 7 +++++++ src/main/java/model/RacingCarGame.java | 12 ++++++++++++ src/main/java/view/OutputView.java | 10 +++++----- 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/controller/RacingCarController.java b/src/main/java/controller/RacingCarController.java index 618519e8..83055754 100644 --- a/src/main/java/controller/RacingCarController.java +++ b/src/main/java/controller/RacingCarController.java @@ -1,5 +1,7 @@ package controller; +import java.util.List; +import model.Car; import model.RacingCarGame; import view.InputView; import view.OutputView; @@ -19,6 +21,11 @@ public void startGame() { for (int i = 0; i < movementCount; i++) { outputView.printProgress(game.playOneRound()); } + + List winnerCarNames = game.judgeWinners().stream() + .map(Car::getCarName) + .toList(); + outputView.printWinners(winnerCarNames); } } diff --git a/src/main/java/model/RacingCarGame.java b/src/main/java/model/RacingCarGame.java index c359949e..3d223fe8 100644 --- a/src/main/java/model/RacingCarGame.java +++ b/src/main/java/model/RacingCarGame.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.NoSuchElementException; import util.RandomNumberGenerator; public class RacingCarGame { @@ -26,4 +27,15 @@ public List playOneRound() { return cars; } + public List judgeWinners() { + int winnerPosition = cars.stream() + .mapToInt(Car::getPosition) + .max() + .orElseThrow(NoSuchElementException::new); + + return cars.stream() + .filter(car -> car.getPosition() == winnerPosition) + .toList(); + } + } diff --git a/src/main/java/view/OutputView.java b/src/main/java/view/OutputView.java index 2052b4ff..99beca91 100644 --- a/src/main/java/view/OutputView.java +++ b/src/main/java/view/OutputView.java @@ -12,13 +12,13 @@ public void printResultMessage() { public void printProgress(List cars) { for (Car car : cars) { - System.out.print(car.getCarName() + " : "); - for (int i = 0; i < car.getPosition(); i++) { - System.out.print("-"); - } - System.out.println(); + System.out.println(car.getCarName() + " : " + "-".repeat(car.getPosition())); } System.out.println(); } + public void printWinners(List carNames) { + System.out.print("최종 우승자 : " + String.join(", ", carNames)); + } + } From d7ab7143162abeec32ee5c3432072815ad4f6246 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 10:11:12 +0900 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20movementCount=20=EC=A3=BC=EC=9E=85=20=EC=A0=9C?= =?UTF-8?q?=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/controller/RacingCarController.java | 2 +- src/main/java/model/RacingCarGame.java | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/controller/RacingCarController.java b/src/main/java/controller/RacingCarController.java index 83055754..6d2ead19 100644 --- a/src/main/java/controller/RacingCarController.java +++ b/src/main/java/controller/RacingCarController.java @@ -15,7 +15,7 @@ public void startGame() { String[] carNames = inputView.inputCarNames(); int movementCount = inputView.inputMovementCount(); - RacingCarGame game = new RacingCarGame(carNames, movementCount); + RacingCarGame game = new RacingCarGame(carNames); outputView.printResultMessage(); for (int i = 0; i < movementCount; i++) { diff --git a/src/main/java/model/RacingCarGame.java b/src/main/java/model/RacingCarGame.java index 3d223fe8..5c831471 100644 --- a/src/main/java/model/RacingCarGame.java +++ b/src/main/java/model/RacingCarGame.java @@ -8,15 +8,13 @@ public class RacingCarGame { private final List cars = new ArrayList<>(); - private final int movementCount; private final RandomNumberGenerator generator = new RandomNumberGenerator();; - public RacingCarGame(String[] carNames, int movementCount) { + public RacingCarGame(String[] carNames) { for (String carName : carNames) { cars.add(new Car(carName)); } - this.movementCount = movementCount; } public List playOneRound() { From eaf62a005bc77f0e4c8ef44c39f1e9dc6ba4f205 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 10:14:06 +0900 Subject: [PATCH 11/13] =?UTF-8?q?test:=20=EB=82=9C=EC=88=98=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=EA=B8=B0=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/util/RandomNumberGeneratorTest.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test/java/util/RandomNumberGeneratorTest.java diff --git a/src/test/java/util/RandomNumberGeneratorTest.java b/src/test/java/util/RandomNumberGeneratorTest.java new file mode 100644 index 00000000..e2c4dc75 --- /dev/null +++ b/src/test/java/util/RandomNumberGeneratorTest.java @@ -0,0 +1,23 @@ +package util; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class RandomNumberGeneratorTest { + + @DisplayName("0부터 9까지 무작위 수를 생성한다.") + @Test + void generateRandomNumber() throws Exception { + //given + RandomNumberGenerator generator = new RandomNumberGenerator(); + + //when + int randomNumber = generator.generateRandomNumber(); + + //then + assertThat(randomNumber).isBetween(0, 9); + } + +} From df9f22c2e2698c64e880b1e4ecf41f1df381deb1 Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 10:14:53 +0900 Subject: [PATCH 12/13] =?UTF-8?q?test:=20=EC=9E=90=EB=8F=99=EC=B0=A8=20?= =?UTF-8?q?=EC=A0=84=EC=A7=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/model/CarTest.java | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 src/test/java/model/CarTest.java diff --git a/src/test/java/model/CarTest.java b/src/test/java/model/CarTest.java new file mode 100644 index 00000000..b3817467 --- /dev/null +++ b/src/test/java/model/CarTest.java @@ -0,0 +1,36 @@ +package model; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class CarTest { + + @DisplayName("자동차를 앞으로 한 칸 전진시킨다.") + @Test + void move() throws Exception { + //given + Car car = new Car("kia"); + + //when + car.move(7); + + //then + assertThat(car.getPosition()).isEqualTo(1); + } + + @DisplayName("자동차를 앞으로 한 칸 전진 시키는데, 주어진 난수가 4 미만이면 전진하지 않는다.") + @Test + void moveWithRandomNumberLessThanFour() throws Exception { + //given + Car car = new Car("kia"); + + //when + car.move(3); + + //then + assertThat(car.getPosition()).isEqualTo(0); + } + +} From 5c2a968052e1cd0227f14145a7872cf767c1322c Mon Sep 17 00:00:00 2001 From: JunHyeongChoi Date: Mon, 10 Jun 2024 10:15:22 +0900 Subject: [PATCH 13/13] =?UTF-8?q?test:=20=EC=9A=B0=EC=8A=B9=EC=9E=90=20?= =?UTF-8?q?=ED=8C=90=EB=B3=84=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/test/java/model/RacingCarGameTest.java | 25 ++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/test/java/model/RacingCarGameTest.java diff --git a/src/test/java/model/RacingCarGameTest.java b/src/test/java/model/RacingCarGameTest.java new file mode 100644 index 00000000..6a228d39 --- /dev/null +++ b/src/test/java/model/RacingCarGameTest.java @@ -0,0 +1,25 @@ +package model; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class RacingCarGameTest { + + @DisplayName("우승자를 판단하고, 우승자 목록을 반환한다.") + @Test + void judgeWinners() throws Exception { + //given + String[] carNames = {"kia", "good", "test", "hyu"}; + RacingCarGame racingCarGame = new RacingCarGame(carNames); + + //when + List winners = racingCarGame.judgeWinners(); + + //then -> 전진 없이 모두가 같은 위치이므로 모두가 우승자 + assertThat(winners.size()).isEqualTo(carNames.length); + } + +}