From 98847c2ee69dd85830148596066f10364675f166 Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Wed, 19 Mar 2025 20:47:13 +0900 Subject: [PATCH 1/6] =?UTF-8?q?=EC=9E=90=EB=8F=99=EC=9E=90=20=EA=B2=BD?= =?UTF-8?q?=EC=A3=BC=20(=EC=9A=B0=EC=8A=B9)=20=EC=BB=A4=EB=B0=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 21 ++++++++----- src/main/java/Constants.java | 5 +++ src/main/java/InputView.java | 17 +++++++++-- src/main/java/Messages.java | 9 ++++++ src/main/java/RacingCar.java | 41 +++++++++++++++++-------- src/main/java/ResultView.java | 42 ++++++++++++++++++++++++++ src/main/java/StringAddCalculator.java | 13 ++++---- src/test/java/CarTest.java | 22 +++++++++++++- 8 files changed, 140 insertions(+), 30 deletions(-) create mode 100644 src/main/java/Constants.java create mode 100644 src/main/java/Messages.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java index acf10887a63..49f03c38c6c 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,22 +1,29 @@ -import java.util.Random; - public class Car { private int distance; + private String carName; public Car() { this.distance = 0; } + public Car(String carName) { + this.distance = 0; + this.carName = carName; + } + public int getDistance() { - return distance; + return this.distance; } - public void move(int randomNumber) { - if (isMove(randomNumber)) distance++; + public String getCarName() { + return this.carName; } - public boolean isMove(int randomNumber) { - return randomNumber >= 4; + public void move(int randomNumber) { + if (isMovable(randomNumber)) distance++; } + public boolean isMovable(int randomNumber) { + return randomNumber >= Constants.MOVE_THRESHOLD; + } } diff --git a/src/main/java/Constants.java b/src/main/java/Constants.java new file mode 100644 index 00000000000..c5cafe34a51 --- /dev/null +++ b/src/main/java/Constants.java @@ -0,0 +1,5 @@ +public class Constants { + + static final int MOVE_THRESHOLD = 4; + +} diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java index 53a4aec13fa..47c951eab88 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/InputView.java @@ -1,16 +1,27 @@ +import javax.xml.transform.Result; import java.util.Scanner; public class InputView { private static final Scanner scanner = new Scanner(System.in); - public static int getAnswerToInteger(String question) { + public static int getAnswerToInteger() { while (true) { - System.out.println(question); try { return scanner.nextInt(); } catch (Exception e) { - System.out.println("유효하지 않은 타입입니다."); + ResultView.printTypeError(); + } + } + } + + public static String[] getCarNames() { + while (true) { + try { + String str = scanner.next(); + return str.split(","); + } catch (Exception e) { + ResultView.printTypeError(); } } } diff --git a/src/main/java/Messages.java b/src/main/java/Messages.java new file mode 100644 index 00000000000..5dce68172e0 --- /dev/null +++ b/src/main/java/Messages.java @@ -0,0 +1,9 @@ +public class Messages { + + static final String ERROR_VALID_TYPE = "유효한 타입이 아닙니다."; + static final String ASK_CAR_NAMES = "경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."; + static final String ASK_CAR_COUNT = "자동차 대수는 몇 대 인가요?"; + static final String ASK_TRY_TIMES = "시도할 회수는 몇 회 인가요?"; + static final String RACE_RESULT = "실행 결과"; + static final String RACE_WINNER = "가 최종 우승 했습니다."; +} diff --git a/src/main/java/RacingCar.java b/src/main/java/RacingCar.java index 6fb4abe50d3..e4e0d772475 100644 --- a/src/main/java/RacingCar.java +++ b/src/main/java/RacingCar.java @@ -5,32 +5,49 @@ public class RacingCar { public static void main(String[] args) { - int carCount = InputView.getAnswerToInteger("자동차 대수는 몇 대 인가요?"); +// int carCount = InputView.getAnswerToInteger(Messages.ASK_CAR_COUNT); - List cars = generateCars(carCount); + ResultView.askCarNames(); - int tryTimes = InputView.getAnswerToInteger("시도할 회수는 몇 회 인가요?"); + String[] carNames = InputView.getCarNames(); - ResultView.println("실행 결과"); + List cars = generateCarsWithName(carNames); + + ResultView.askTryTimes(); + + int tryTimes = InputView.getAnswerToInteger(); + + ResultView.printResult(); for (int j = 0; j < tryTimes; j++) { moveCars(cars); - ResultView.println(""); } + + ResultView.printWinner(cars); + } - private static void moveCars(List carList) { - for (Car car : carList) { + private static void moveCars(List cars) { + for (Car car : cars) { car.move(RandomUtils.generateRandomNumber(10)); - ResultView.printResult(car); + ResultView.printResultWithName(car); } + ResultView.println(""); } private static List generateCars(int carCount) { - List carList = new ArrayList<>(); + List cars = new ArrayList<>(); for (int i = 0; i < carCount; i++) { - carList.add(new Car()); + cars.add(new Car()); + } + return cars; + } + + private static List generateCarsWithName(String[] carNames) { + List cars = new ArrayList<>(); + for (int i = 0; i < carNames.length; i++) { + cars.add(new Car(carNames[i])); } - return carList; + return cars; } -} +} \ No newline at end of file diff --git a/src/main/java/ResultView.java b/src/main/java/ResultView.java index cd7805b2dae..83c15f821af 100644 --- a/src/main/java/ResultView.java +++ b/src/main/java/ResultView.java @@ -1,3 +1,6 @@ +import java.util.*; +import java.util.stream.Collectors; + public class ResultView { public static void printResult(Car car) { @@ -7,4 +10,43 @@ public static void printResult(Car car) { public static void println(String str) { System.out.println(str); } + + public static void printResultWithName(Car car) { + println(car.getCarName() + " : " + "-".repeat(car.getDistance())); + } + + public static void printTypeError() { + println(Messages.ERROR_VALID_TYPE); + } + + public static void askCarNames() { + println(Messages.ASK_CAR_NAMES); + } + + public static void askCarCounts() { + println(Messages.ASK_CAR_COUNT); + } + + public static void askTryTimes() { + println(Messages.ASK_TRY_TIMES); + } + + public static void printResult() { + println(Messages.RACE_RESULT); + } + + public static void printWinner(List cars){ + println(getWinner(cars)); + } + + public static String getWinner(List cars) { + + int maxDistance = cars.stream().max(Comparator.comparing(Car::getDistance)).get().getDistance(); + + List maxCars = cars.stream().collect(Collectors.groupingBy(Car::getDistance)).get(maxDistance); + + return maxCars.stream().map(Car::getCarName).collect(Collectors.joining(",")); + } + + } diff --git a/src/main/java/StringAddCalculator.java b/src/main/java/StringAddCalculator.java index 5c66ceaf18e..97121c162b5 100644 --- a/src/main/java/StringAddCalculator.java +++ b/src/main/java/StringAddCalculator.java @@ -1,15 +1,14 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -public class StringAddCalculator -{ +public class StringAddCalculator { private static final String DELIMITER = ",|:"; private static final int DELIMITER_GROUP_ID = 1; private static final int STRING_GROUP_ID = 2; - public int add(String str){ + public int add(String str) { - if(isBlank(str)){ + if (isBlank(str)) { str = "0"; } @@ -20,7 +19,7 @@ public int add(String str){ private int[] toIntArr(String[] strArr) { int[] intArr = new int[strArr.length]; - for(int i = 0; i < strArr.length; i++){ + for (int i = 0; i < strArr.length; i++) { intArr[i] = toInt(strArr[i]); } return intArr; @@ -28,7 +27,7 @@ private int[] toIntArr(String[] strArr) { private int toInt(String str) { int num = Integer.parseInt(str); - if (num < 0){ + if (num < 0) { throw new IllegalArgumentException(num + "음수는 허용하지 않습니다."); } return num; @@ -36,7 +35,7 @@ private int toInt(String str) { private static int getSum(int[] numbers) { int sum = 0; - for(int num : numbers){ + for (int num : numbers) { sum += num; } return sum; diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java index a3410216cca..4b0506e3b47 100644 --- a/src/test/java/CarTest.java +++ b/src/test/java/CarTest.java @@ -1,6 +1,8 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import java.util.ArrayList; + import static org.assertj.core.api.Assertions.assertThat; class CarTest { @@ -23,7 +25,7 @@ void generateRandomNumber() { @DisplayName(value = "랜덤 함수가 4 이상인 경우 true / 미만이면 false 인지 검증") void 차량_전진여부_테스트() { int randomNum = RandomUtils.generateRandomNumber(10); - assertThat(randomNum >= 4).isEqualTo(car.isMove(randomNum)); + assertThat(randomNum >= Constants.MOVE_THRESHOLD).isEqualTo(car.isMovable(randomNum)); } @Test @@ -32,4 +34,22 @@ void generateRandomNumber() { car.move(RandomUtils.generateRandomNumber(10)); assertThat("-".repeat(car.getDistance())).isIn("-", ""); } + + @Test + @DisplayName(value = "승자 테스트") + void 승자_출력_테스트(){ + ArrayList cars = new ArrayList(); + Car a = new Car("a"); + a.move(4); + cars.add(a); + Car b = new Car("b"); + cars.add(b); + b.move(4); + Car c = new Car("c"); + cars.add(c); + b.move(1); + + assertThat(ResultView.getWinner(cars)).isEqualTo("a,b"); + } + } \ No newline at end of file From 52b3b8e8343e3ece0d02b1e0ed1b647c6c319ab2 Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Wed, 19 Mar 2025 20:49:12 +0900 Subject: [PATCH 2/6] =?UTF-8?q?convention=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/ResultView.java | 4 ++-- src/test/java/CarTest.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/ResultView.java b/src/main/java/ResultView.java index 83c15f821af..9d3e9f490fd 100644 --- a/src/main/java/ResultView.java +++ b/src/main/java/ResultView.java @@ -35,8 +35,8 @@ public static void printResult() { println(Messages.RACE_RESULT); } - public static void printWinner(List cars){ - println(getWinner(cars)); + public static void printWinner(List cars) { + println(getWinner(cars) + Messages.RACE_WINNER); } public static String getWinner(List cars) { diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java index 4b0506e3b47..0d6a7e0fdec 100644 --- a/src/test/java/CarTest.java +++ b/src/test/java/CarTest.java @@ -37,7 +37,7 @@ void generateRandomNumber() { @Test @DisplayName(value = "승자 테스트") - void 승자_출력_테스트(){ + void 승자_출력_테스트() { ArrayList cars = new ArrayList(); Car a = new Car("a"); a.move(4); From 33e71f0f398180e15b9c14b1d21a655ac8171189 Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Thu, 20 Mar 2025 01:33:23 +0900 Subject: [PATCH 3/6] =?UTF-8?q?refactor=20=EB=A6=AC=EB=B7=B0=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/Car.java | 9 +++++++- src/main/java/CarUtils.java | 42 +++++++++++++++++++++++++++++++++++ src/main/java/Constants.java | 5 ----- src/main/java/InputView.java | 4 +++- src/main/java/Messages.java | 1 + src/main/java/RacingCar.java | 41 +++++++--------------------------- src/main/java/ResultView.java | 25 +-------------------- src/test/java/CarTest.java | 34 +++++++++++++++++----------- 8 files changed, 84 insertions(+), 77 deletions(-) create mode 100644 src/main/java/CarUtils.java delete mode 100644 src/main/java/Constants.java diff --git a/src/main/java/Car.java b/src/main/java/Car.java index 49f03c38c6c..9abddd54d1f 100644 --- a/src/main/java/Car.java +++ b/src/main/java/Car.java @@ -1,4 +1,8 @@ public class Car { + + static final int MOVE_THRESHOLD = 4; + static final int CAR_NAME_THRESHOLD = 5; + private int distance; private String carName; @@ -7,6 +11,9 @@ public Car() { } public Car(String carName) { + if(carName == null || carName.isBlank() || carName.length() > CAR_NAME_THRESHOLD){ + throw new IllegalArgumentException(Messages.ERROR_CAR_NAME_LENGTH); + } this.distance = 0; this.carName = carName; } @@ -24,6 +31,6 @@ public void move(int randomNumber) { } public boolean isMovable(int randomNumber) { - return randomNumber >= Constants.MOVE_THRESHOLD; + return randomNumber >= MOVE_THRESHOLD; } } diff --git a/src/main/java/CarUtils.java b/src/main/java/CarUtils.java new file mode 100644 index 00000000000..651648d2932 --- /dev/null +++ b/src/main/java/CarUtils.java @@ -0,0 +1,42 @@ +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +public class CarUtils { + + public static void moveCars(List cars) { + for (Car car : cars) { + car.move(RandomUtils.generateRandomNumber(10)); + ResultView.printResultWithName(car); + } + ResultView.println(""); + } + + public static List generateCars(int carCount) { + List cars = new ArrayList<>(); + for (int i = 0; i < carCount; i++) { + cars.add(new Car()); + } + return cars; + } + + public static List generateCarsWithName(String[] carNames) { + List cars = new ArrayList<>(); + for (int i = 0; i < carNames.length; i++) { + cars.add(new Car(carNames[i])); + } + return cars; + } + + public static List getWinnerCars(List cars) { + + int maxDistance = cars.stream() + .mapToInt(Car::getDistance) + .max() + .orElse(0); + + return cars.stream() + .filter(io-> io.getDistance() == maxDistance) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/Constants.java b/src/main/java/Constants.java deleted file mode 100644 index c5cafe34a51..00000000000 --- a/src/main/java/Constants.java +++ /dev/null @@ -1,5 +0,0 @@ -public class Constants { - - static final int MOVE_THRESHOLD = 4; - -} diff --git a/src/main/java/InputView.java b/src/main/java/InputView.java index 47c951eab88..b600231453a 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/InputView.java @@ -5,8 +5,9 @@ public class InputView { private static final Scanner scanner = new Scanner(System.in); - public static int getAnswerToInteger() { + public static int getAnswerToInteger(String question) { while (true) { + ResultView.println(question); try { return scanner.nextInt(); } catch (Exception e) { @@ -17,6 +18,7 @@ public static int getAnswerToInteger() { public static String[] getCarNames() { while (true) { + ResultView.askCarNames(); try { String str = scanner.next(); return str.split(","); diff --git a/src/main/java/Messages.java b/src/main/java/Messages.java index 5dce68172e0..fdfacb890a4 100644 --- a/src/main/java/Messages.java +++ b/src/main/java/Messages.java @@ -1,6 +1,7 @@ public class Messages { static final String ERROR_VALID_TYPE = "유효한 타입이 아닙니다."; + static final String ERROR_CAR_NAME_LENGTH = " 자동차 이름은 5자를 초과할 수 없습니다."; static final String ASK_CAR_NAMES = "경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."; static final String ASK_CAR_COUNT = "자동차 대수는 몇 대 인가요?"; static final String ASK_TRY_TIMES = "시도할 회수는 몇 회 인가요?"; diff --git a/src/main/java/RacingCar.java b/src/main/java/RacingCar.java index e4e0d772475..d9642fabb43 100644 --- a/src/main/java/RacingCar.java +++ b/src/main/java/RacingCar.java @@ -1,5 +1,7 @@ import java.util.ArrayList; +import java.util.Comparator; import java.util.List; +import java.util.stream.Collectors; public class RacingCar { @@ -7,47 +9,20 @@ public static void main(String[] args) { // int carCount = InputView.getAnswerToInteger(Messages.ASK_CAR_COUNT); - ResultView.askCarNames(); - String[] carNames = InputView.getCarNames(); - List cars = generateCarsWithName(carNames); - - ResultView.askTryTimes(); + List cars = CarUtils.generateCarsWithName(carNames); - int tryTimes = InputView.getAnswerToInteger(); + int tryTimes = InputView.getAnswerToInteger(Messages.ASK_TRY_TIMES); - ResultView.printResult(); + ResultView.println(Messages.RACE_RESULT); for (int j = 0; j < tryTimes; j++) { - moveCars(cars); + CarUtils.moveCars(cars); } - ResultView.printWinner(cars); - - } + List winnerCars = CarUtils.getWinnerCars(cars); - private static void moveCars(List cars) { - for (Car car : cars) { - car.move(RandomUtils.generateRandomNumber(10)); - ResultView.printResultWithName(car); - } - ResultView.println(""); - } - - private static List generateCars(int carCount) { - List cars = new ArrayList<>(); - for (int i = 0; i < carCount; i++) { - cars.add(new Car()); - } - return cars; - } - - private static List generateCarsWithName(String[] carNames) { - List cars = new ArrayList<>(); - for (int i = 0; i < carNames.length; i++) { - cars.add(new Car(carNames[i])); - } - return cars; + ResultView.printWinner(winnerCars); } } \ No newline at end of file diff --git a/src/main/java/ResultView.java b/src/main/java/ResultView.java index 9d3e9f490fd..eb70b8032ea 100644 --- a/src/main/java/ResultView.java +++ b/src/main/java/ResultView.java @@ -23,30 +23,7 @@ public static void askCarNames() { println(Messages.ASK_CAR_NAMES); } - public static void askCarCounts() { - println(Messages.ASK_CAR_COUNT); - } - - public static void askTryTimes() { - println(Messages.ASK_TRY_TIMES); - } - - public static void printResult() { - println(Messages.RACE_RESULT); - } - public static void printWinner(List cars) { - println(getWinner(cars) + Messages.RACE_WINNER); + println(cars.stream().map(Car::getCarName).collect(Collectors.joining(", ")) + Messages.RACE_WINNER); } - - public static String getWinner(List cars) { - - int maxDistance = cars.stream().max(Comparator.comparing(Car::getDistance)).get().getDistance(); - - List maxCars = cars.stream().collect(Collectors.groupingBy(Car::getDistance)).get(maxDistance); - - return maxCars.stream().map(Car::getCarName).collect(Collectors.joining(",")); - } - - } diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java index 0d6a7e0fdec..39a70e6603d 100644 --- a/src/test/java/CarTest.java +++ b/src/test/java/CarTest.java @@ -2,8 +2,11 @@ import org.junit.jupiter.api.Test; import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; class CarTest { @@ -25,7 +28,7 @@ void generateRandomNumber() { @DisplayName(value = "랜덤 함수가 4 이상인 경우 true / 미만이면 false 인지 검증") void 차량_전진여부_테스트() { int randomNum = RandomUtils.generateRandomNumber(10); - assertThat(randomNum >= Constants.MOVE_THRESHOLD).isEqualTo(car.isMovable(randomNum)); + assertThat(randomNum >= Car.MOVE_THRESHOLD).isEqualTo(car.isMovable(randomNum)); } @Test @@ -38,18 +41,23 @@ void generateRandomNumber() { @Test @DisplayName(value = "승자 테스트") void 승자_출력_테스트() { - ArrayList cars = new ArrayList(); - Car a = new Car("a"); - a.move(4); - cars.add(a); - Car b = new Car("b"); - cars.add(b); - b.move(4); - Car c = new Car("c"); - cars.add(c); - b.move(1); - - assertThat(ResultView.getWinner(cars)).isEqualTo("a,b"); + List cars = List.of( + new Car("a"), + new Car("b"), + new Car("c") + ); + cars.get(0).move(4); + cars.get(1).move(4); + cars.get(2).move(1); + + assertThat(CarUtils.getWinnerCars(cars)).isEqualTo(List.of(cars.get(0), cars.get(1))); } + @Test + @DisplayName(value = "차량 이름 5글자 넘어간 경우 에러 케이스") + void 차량명_초과_테스트() { + assertThatThrownBy(() -> { + new Car("가나다라마바"); + }).isInstanceOf(IllegalArgumentException.class); + } } \ No newline at end of file From 1310ac1d83273468e365ca1e95734805c0fa384a Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Sat, 22 Mar 2025 00:11:56 +0900 Subject: [PATCH 4/6] =?UTF-8?q?refactor=20:=204=EB=8B=A8=EA=B3=84=202?= =?UTF-8?q?=EC=B0=A8=EB=A6=AC=EB=B7=B0=20=EB=82=B4=EC=9A=A9=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 --- README.md | 15 ++++++- src/main/java/Messages.java | 10 ----- src/main/java/RacingCar.java | 28 ------------ src/main/java/{ => racing}/Car.java | 8 +++- src/main/java/racing/Judgement.java | 19 ++++++++ .../{CarUtils.java => racing/RacingGame.java} | 43 +++++++++++++------ src/main/java/racing/data/Messages.java | 13 ++++++ .../java/{ => racing/utils}/RandomUtils.java | 2 + .../java/{ => racing/views}/InputView.java | 10 ++--- .../java/{ => racing/views}/ResultView.java | 9 ++++ src/test/java/{ => RacingTest}/CarTest.java | 16 ++++--- 11 files changed, 108 insertions(+), 65 deletions(-) delete mode 100644 src/main/java/Messages.java delete mode 100644 src/main/java/RacingCar.java rename src/main/java/{ => racing}/Car.java (83%) create mode 100644 src/main/java/racing/Judgement.java rename src/main/java/{CarUtils.java => racing/RacingGame.java} (53%) create mode 100644 src/main/java/racing/data/Messages.java rename src/main/java/{ => racing/utils}/RandomUtils.java (90%) rename src/main/java/{ => racing/views}/InputView.java (71%) rename src/main/java/{ => racing/views}/ResultView.java (82%) rename src/test/java/{ => RacingTest}/CarTest.java (78%) diff --git a/README.md b/README.md index c550c4c2a09..368beaaea4f 100644 --- a/README.md +++ b/README.md @@ -6,4 +6,17 @@ * 모든 피드백을 완료하면 다음 단계를 도전하고 앞의 과정을 반복한다. ## 온라인 코드 리뷰 과정 -* [텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정](https://github.com/next-step/nextstep-docs/tree/master/codereview) \ No newline at end of file +* [텍스트와 이미지로 살펴보는 온라인 코드 리뷰 과정](https://github.com/next-step/nextstep-docs/tree/master/codereview) + +# 3단계 - 자동차 경주 +* 초간단 자동차 경주 게임을 구현한다. +* 주어진 횟수 동안 n대의 자동차는 전진 또는 멈출 수 있다. +* 사용자는 몇 대의 자동차로 몇 번의 이동을 할 것인지를 입력할 수 있어야 한다. +* 전진하는 조건은 0에서 9 사이에서 random 값을 구한 후 random 값이 4이상일 경우이다. +* 자동차의 상태를 화면에 출력한다. 어느 시점에 출력할 것인지에 대한 제약은 없다. + +# 4단계 - 자동차 경주 (우승자) +* 각 자동차에 이름을 부여할 수 있다. 자동차 이름은 5자를 초과할 수 없다. +* 전진하는 자동차를 출력할 때 자동차 이름을 같이 출력한다. +* 자동차 이름은 쉼표(,)를 기준으로 구분한다. +* 자동차 경주 게임을 완료한 후 누가 우승했는지를 알려준다. 우승자는 한명 이상일 수 있다. \ No newline at end of file diff --git a/src/main/java/Messages.java b/src/main/java/Messages.java deleted file mode 100644 index fdfacb890a4..00000000000 --- a/src/main/java/Messages.java +++ /dev/null @@ -1,10 +0,0 @@ -public class Messages { - - static final String ERROR_VALID_TYPE = "유효한 타입이 아닙니다."; - static final String ERROR_CAR_NAME_LENGTH = " 자동차 이름은 5자를 초과할 수 없습니다."; - static final String ASK_CAR_NAMES = "경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."; - static final String ASK_CAR_COUNT = "자동차 대수는 몇 대 인가요?"; - static final String ASK_TRY_TIMES = "시도할 회수는 몇 회 인가요?"; - static final String RACE_RESULT = "실행 결과"; - static final String RACE_WINNER = "가 최종 우승 했습니다."; -} diff --git a/src/main/java/RacingCar.java b/src/main/java/RacingCar.java deleted file mode 100644 index d9642fabb43..00000000000 --- a/src/main/java/RacingCar.java +++ /dev/null @@ -1,28 +0,0 @@ -import java.util.ArrayList; -import java.util.Comparator; -import java.util.List; -import java.util.stream.Collectors; - -public class RacingCar { - - public static void main(String[] args) { - -// int carCount = InputView.getAnswerToInteger(Messages.ASK_CAR_COUNT); - - String[] carNames = InputView.getCarNames(); - - List cars = CarUtils.generateCarsWithName(carNames); - - int tryTimes = InputView.getAnswerToInteger(Messages.ASK_TRY_TIMES); - - ResultView.println(Messages.RACE_RESULT); - - for (int j = 0; j < tryTimes; j++) { - CarUtils.moveCars(cars); - } - - List winnerCars = CarUtils.getWinnerCars(cars); - - ResultView.printWinner(winnerCars); - } -} \ No newline at end of file diff --git a/src/main/java/Car.java b/src/main/java/racing/Car.java similarity index 83% rename from src/main/java/Car.java rename to src/main/java/racing/Car.java index 9abddd54d1f..48767398c7a 100644 --- a/src/main/java/Car.java +++ b/src/main/java/racing/Car.java @@ -1,7 +1,11 @@ +package racing; + +import racing.data.Messages; + public class Car { - static final int MOVE_THRESHOLD = 4; - static final int CAR_NAME_THRESHOLD = 5; + public static final int MOVE_THRESHOLD = 4; + public static final int CAR_NAME_THRESHOLD = 5; private int distance; private String carName; diff --git a/src/main/java/racing/Judgement.java b/src/main/java/racing/Judgement.java new file mode 100644 index 00000000000..959df972237 --- /dev/null +++ b/src/main/java/racing/Judgement.java @@ -0,0 +1,19 @@ +package racing; + +import java.util.List; +import java.util.stream.Collectors; + +public class Judgement { + + public List getWinnerCars(List cars) { + + int maxDistance = cars.stream() + .mapToInt(Car::getDistance) + .max() + .orElse(0); + + return cars.stream() + .filter(io-> io.getDistance() == maxDistance) + .collect(Collectors.toList()); + } +} diff --git a/src/main/java/CarUtils.java b/src/main/java/racing/RacingGame.java similarity index 53% rename from src/main/java/CarUtils.java rename to src/main/java/racing/RacingGame.java index 651648d2932..8a6c33e6f45 100644 --- a/src/main/java/CarUtils.java +++ b/src/main/java/racing/RacingGame.java @@ -1,8 +1,35 @@ +package racing; + +import racing.data.Messages; +import racing.utils.RandomUtils; +import racing.views.InputView; +import racing.views.ResultView; + import java.util.ArrayList; import java.util.List; -import java.util.stream.Collectors; -public class CarUtils { +public class RacingGame { + + public static void main(String[] args) { + + String[] carNames = InputView.inputCarNames(); + + List cars = generateCarsWithName(carNames); + + int tryTimes = InputView.inputCarCount(Messages.ASK_TRY_TIMES); + + ResultView.showResult(); + + for (int j = 0; j < tryTimes; j++) { + moveCars(cars); + } + + Judgement judgement = new Judgement(); + + List winnerCars = judgement.getWinnerCars(cars); + + ResultView.printWinner(winnerCars); + } public static void moveCars(List cars) { for (Car car : cars) { @@ -27,16 +54,4 @@ public static List generateCarsWithName(String[] carNames) { } return cars; } - - public static List getWinnerCars(List cars) { - - int maxDistance = cars.stream() - .mapToInt(Car::getDistance) - .max() - .orElse(0); - - return cars.stream() - .filter(io-> io.getDistance() == maxDistance) - .collect(Collectors.toList()); - } } diff --git a/src/main/java/racing/data/Messages.java b/src/main/java/racing/data/Messages.java new file mode 100644 index 00000000000..29ca34ef12a --- /dev/null +++ b/src/main/java/racing/data/Messages.java @@ -0,0 +1,13 @@ +package racing.data; + +public class Messages { + + public static final String ERROR_VALID_TYPE = "유효한 타입이 아닙니다."; + public static final String ERROR_CAR_NAME_LENGTH = " 자동차 이름은 5자를 초과할 수 없습니다."; + public static final String ASK_CAR_NAMES = "경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."; + public static final String ASK_CAR_COUNT = "자동차 대수는 몇 대 인가요?"; + public static final String ASK_TRY_TIMES = "시도할 회수는 몇 회 인가요?"; + public static final String RACE_RESULT = "실행 결과"; + public static final String RACE_WINNER = "가 최종 우승 했습니다."; + public static final String INVALID_NUMBER_RANGE = "음수가 될 수 없습니다."; +} diff --git a/src/main/java/RandomUtils.java b/src/main/java/racing/utils/RandomUtils.java similarity index 90% rename from src/main/java/RandomUtils.java rename to src/main/java/racing/utils/RandomUtils.java index 0208e7d2fc6..e394a303fc9 100644 --- a/src/main/java/RandomUtils.java +++ b/src/main/java/racing/utils/RandomUtils.java @@ -1,3 +1,5 @@ +package racing.utils; + import java.util.Random; public class RandomUtils { diff --git a/src/main/java/InputView.java b/src/main/java/racing/views/InputView.java similarity index 71% rename from src/main/java/InputView.java rename to src/main/java/racing/views/InputView.java index b600231453a..bddbbe794c1 100644 --- a/src/main/java/InputView.java +++ b/src/main/java/racing/views/InputView.java @@ -1,11 +1,12 @@ -import javax.xml.transform.Result; +package racing.views; + import java.util.Scanner; public class InputView { private static final Scanner scanner = new Scanner(System.in); - public static int getAnswerToInteger(String question) { + public static int inputCarCount(String question) { while (true) { ResultView.println(question); try { @@ -16,12 +17,11 @@ public static int getAnswerToInteger(String question) { } } - public static String[] getCarNames() { + public static String[] inputCarNames() { while (true) { ResultView.askCarNames(); try { - String str = scanner.next(); - return str.split(","); + return scanner.next().split(","); } catch (Exception e) { ResultView.printTypeError(); } diff --git a/src/main/java/ResultView.java b/src/main/java/racing/views/ResultView.java similarity index 82% rename from src/main/java/ResultView.java rename to src/main/java/racing/views/ResultView.java index eb70b8032ea..520bda627ba 100644 --- a/src/main/java/ResultView.java +++ b/src/main/java/racing/views/ResultView.java @@ -1,3 +1,8 @@ +package racing.views; + +import racing.Car; +import racing.data.Messages; + import java.util.*; import java.util.stream.Collectors; @@ -26,4 +31,8 @@ public static void askCarNames() { public static void printWinner(List cars) { println(cars.stream().map(Car::getCarName).collect(Collectors.joining(", ")) + Messages.RACE_WINNER); } + + public static void showResult() { + println(Messages.RACE_RESULT); + } } diff --git a/src/test/java/CarTest.java b/src/test/java/RacingTest/CarTest.java similarity index 78% rename from src/test/java/CarTest.java rename to src/test/java/RacingTest/CarTest.java index 39a70e6603d..1b212ba845c 100644 --- a/src/test/java/CarTest.java +++ b/src/test/java/RacingTest/CarTest.java @@ -1,8 +1,12 @@ +package RacingTest; + +import racing.Car; +import racing.Judgement; +import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; +import racing.utils.RandomUtils; -import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -15,13 +19,13 @@ class CarTest { @Test @DisplayName(value = "Random Number 생성 테스트") void generateRandomNumber() { - assertThat(RandomUtils.generateRandomNumber(10)).isBetween(0, 9); + Assertions.assertThat(RandomUtils.generateRandomNumber(10)).isBetween(0, 9); } @Test @DisplayName(value = "랜덤 함수가 0~9 사이의 값이 나오는지 확인") void 차량_전진조건_테스트() { - assertThat(RandomUtils.generateRandomNumber(10)).isBetween(0, 9); + Assertions.assertThat(RandomUtils.generateRandomNumber(10)).isBetween(0, 9); } @Test @@ -50,7 +54,9 @@ void generateRandomNumber() { cars.get(1).move(4); cars.get(2).move(1); - assertThat(CarUtils.getWinnerCars(cars)).isEqualTo(List.of(cars.get(0), cars.get(1))); + Judgement judgement = new Judgement(); + + assertThat(judgement.getWinnerCars(cars)).isEqualTo(List.of(cars.get(0), cars.get(1))); } @Test From 09f97bb26427d7c751a2ba6cef021ee4643b5a82 Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Sat, 22 Mar 2025 00:48:59 +0900 Subject: [PATCH 5/6] =?UTF-8?q?fix=20:=20=EC=8B=9C=EB=8F=84=ED=9A=9F?= =?UTF-8?q?=EC=88=98=20=EB=A9=94=EC=86=8C=EB=93=9C=EB=AA=85=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/racing/RacingGame.java | 2 +- src/main/java/racing/views/InputView.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/racing/RacingGame.java b/src/main/java/racing/RacingGame.java index 8a6c33e6f45..76d5f07ded5 100644 --- a/src/main/java/racing/RacingGame.java +++ b/src/main/java/racing/RacingGame.java @@ -16,7 +16,7 @@ public static void main(String[] args) { List cars = generateCarsWithName(carNames); - int tryTimes = InputView.inputCarCount(Messages.ASK_TRY_TIMES); + int tryTimes = InputView.inputTryTimes(); ResultView.showResult(); diff --git a/src/main/java/racing/views/InputView.java b/src/main/java/racing/views/InputView.java index bddbbe794c1..7c6a777d2fc 100644 --- a/src/main/java/racing/views/InputView.java +++ b/src/main/java/racing/views/InputView.java @@ -1,14 +1,16 @@ package racing.views; +import racing.data.Messages; + import java.util.Scanner; public class InputView { private static final Scanner scanner = new Scanner(System.in); - public static int inputCarCount(String question) { + public static int inputTryTimes() { while (true) { - ResultView.println(question); + ResultView.println(Messages.ASK_TRY_TIMES); try { return scanner.nextInt(); } catch (Exception e) { From 3330a0e047192248b3ab3806bd4f708bb53e3dda Mon Sep 17 00:00:00 2001 From: jhm9595 Date: Sun, 23 Mar 2025 15:31:08 +0900 Subject: [PATCH 6/6] =?UTF-8?q?refactor=20:=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/racing/Car.java | 40 ------------- src/main/java/racing/Judgement.java | 19 ------- src/main/java/racing/RacingGame.java | 57 ------------------- src/main/java/racing/RacingMain.java | 29 ++++++++++ src/main/java/racing/domain/Car.java | 53 +++++++++++++++++ src/main/java/racing/domain/Cars.java | 26 +++++++++ src/main/java/racing/domain/Judgement.java | 31 ++++++++++ src/main/java/racing/domain/Position.java | 41 +++++++++++++ src/main/java/racing/domain/RacingGame.java | 45 +++++++++++++++ src/main/java/racing/views/InputView.java | 11 ++++ src/main/java/racing/views/ResultView.java | 10 +++- .../java/{RacingTest => racing}/CarTest.java | 27 +++++---- 12 files changed, 256 insertions(+), 133 deletions(-) delete mode 100644 src/main/java/racing/Car.java delete mode 100644 src/main/java/racing/Judgement.java delete mode 100644 src/main/java/racing/RacingGame.java create mode 100644 src/main/java/racing/RacingMain.java create mode 100644 src/main/java/racing/domain/Car.java create mode 100644 src/main/java/racing/domain/Cars.java create mode 100644 src/main/java/racing/domain/Judgement.java create mode 100644 src/main/java/racing/domain/Position.java create mode 100644 src/main/java/racing/domain/RacingGame.java rename src/test/java/{RacingTest => racing}/CarTest.java (76%) diff --git a/src/main/java/racing/Car.java b/src/main/java/racing/Car.java deleted file mode 100644 index 48767398c7a..00000000000 --- a/src/main/java/racing/Car.java +++ /dev/null @@ -1,40 +0,0 @@ -package racing; - -import racing.data.Messages; - -public class Car { - - public static final int MOVE_THRESHOLD = 4; - public static final int CAR_NAME_THRESHOLD = 5; - - private int distance; - private String carName; - - public Car() { - this.distance = 0; - } - - public Car(String carName) { - if(carName == null || carName.isBlank() || carName.length() > CAR_NAME_THRESHOLD){ - throw new IllegalArgumentException(Messages.ERROR_CAR_NAME_LENGTH); - } - this.distance = 0; - this.carName = carName; - } - - public int getDistance() { - return this.distance; - } - - public String getCarName() { - return this.carName; - } - - public void move(int randomNumber) { - if (isMovable(randomNumber)) distance++; - } - - public boolean isMovable(int randomNumber) { - return randomNumber >= MOVE_THRESHOLD; - } -} diff --git a/src/main/java/racing/Judgement.java b/src/main/java/racing/Judgement.java deleted file mode 100644 index 959df972237..00000000000 --- a/src/main/java/racing/Judgement.java +++ /dev/null @@ -1,19 +0,0 @@ -package racing; - -import java.util.List; -import java.util.stream.Collectors; - -public class Judgement { - - public List getWinnerCars(List cars) { - - int maxDistance = cars.stream() - .mapToInt(Car::getDistance) - .max() - .orElse(0); - - return cars.stream() - .filter(io-> io.getDistance() == maxDistance) - .collect(Collectors.toList()); - } -} diff --git a/src/main/java/racing/RacingGame.java b/src/main/java/racing/RacingGame.java deleted file mode 100644 index 76d5f07ded5..00000000000 --- a/src/main/java/racing/RacingGame.java +++ /dev/null @@ -1,57 +0,0 @@ -package racing; - -import racing.data.Messages; -import racing.utils.RandomUtils; -import racing.views.InputView; -import racing.views.ResultView; - -import java.util.ArrayList; -import java.util.List; - -public class RacingGame { - - public static void main(String[] args) { - - String[] carNames = InputView.inputCarNames(); - - List cars = generateCarsWithName(carNames); - - int tryTimes = InputView.inputTryTimes(); - - ResultView.showResult(); - - for (int j = 0; j < tryTimes; j++) { - moveCars(cars); - } - - Judgement judgement = new Judgement(); - - List winnerCars = judgement.getWinnerCars(cars); - - ResultView.printWinner(winnerCars); - } - - public static void moveCars(List cars) { - for (Car car : cars) { - car.move(RandomUtils.generateRandomNumber(10)); - ResultView.printResultWithName(car); - } - ResultView.println(""); - } - - public static List generateCars(int carCount) { - List cars = new ArrayList<>(); - for (int i = 0; i < carCount; i++) { - cars.add(new Car()); - } - return cars; - } - - public static List generateCarsWithName(String[] carNames) { - List cars = new ArrayList<>(); - for (int i = 0; i < carNames.length; i++) { - cars.add(new Car(carNames[i])); - } - return cars; - } -} diff --git a/src/main/java/racing/RacingMain.java b/src/main/java/racing/RacingMain.java new file mode 100644 index 00000000000..28f24cdd384 --- /dev/null +++ b/src/main/java/racing/RacingMain.java @@ -0,0 +1,29 @@ +package racing; + +import racing.domain.Car; +import racing.domain.Judgement; +import racing.domain.RacingGame; +import racing.views.InputView; +import racing.views.ResultView; + +import java.util.List; + +public class RacingMain { + + public static void main(String[] args) { + + String[] carNames = InputView.inputCarNames(); + + RacingGame racingGame = new RacingGame(carNames); + + int tryTimes = InputView.inputTryTimes(); + + ResultView.showResult(); + + for (int j = 0; j < tryTimes; j++) { + racingGame.moveCars(); + } + + ResultView.printWinner(new Judgement(racingGame.getCars()).getWinnerCars()); + } +} diff --git a/src/main/java/racing/domain/Car.java b/src/main/java/racing/domain/Car.java new file mode 100644 index 00000000000..29715cf3ad1 --- /dev/null +++ b/src/main/java/racing/domain/Car.java @@ -0,0 +1,53 @@ +package racing.domain; + +import racing.data.Messages; + +public class Car { + + public static final int MOVE_THRESHOLD = 4; + public static final int CAR_NAME_THRESHOLD = 5; + + private final Position position; + private String carName; + + public Car() { + this.position = new Position(0); + } + + public Car(String carName, int position) { + this.carName = carName; + this.position = new Position(position); + } + + public Car(String carName) { + if (carName == null || carName.isBlank() || carName.length() > CAR_NAME_THRESHOLD) { + throw new IllegalArgumentException(Messages.ERROR_CAR_NAME_LENGTH); + } + this.position = new Position(0); + this.carName = carName; + } + + public int getPosition() { + return this.position.getValue(); + } + + public String getCarName() { + return this.carName; + } + + public void move(int randomNumber) { + if (isMovable(randomNumber)) this.position.increase(); + } + + public boolean isMovable(int randomNumber) { + return randomNumber >= MOVE_THRESHOLD; + } + + public int max(int maxPosition) { + return this.position.max(maxPosition); + } + + public boolean isSamePosition(int position) { + return this.position.equals(new Position(position)); + } +} diff --git a/src/main/java/racing/domain/Cars.java b/src/main/java/racing/domain/Cars.java new file mode 100644 index 00000000000..7ad0dc4b0da --- /dev/null +++ b/src/main/java/racing/domain/Cars.java @@ -0,0 +1,26 @@ +package racing.domain; + +import java.util.ArrayList; +import java.util.List; + +public class Cars { + + List cars; + + public Cars() { + this.cars = new ArrayList(); + } + + public List getCars() { + return cars; + } + + public Car getCar(int index) { + return cars.get(index); + } + + public Cars addCar(Car car) { + this.cars.add(car); + return this; + } +} diff --git a/src/main/java/racing/domain/Judgement.java b/src/main/java/racing/domain/Judgement.java new file mode 100644 index 00000000000..b4490acb23d --- /dev/null +++ b/src/main/java/racing/domain/Judgement.java @@ -0,0 +1,31 @@ +package racing.domain; + +import java.util.List; +import java.util.stream.Collectors; + +public class Judgement { + + private final Cars cars; + + public Judgement(Cars cars){ + this.cars = cars; + } + + public List getWinnerCars() { + + return cars.getCars() + .stream() + .filter(car -> car.isSamePosition(getMaxPosition())) + .collect(Collectors.toList()); + } + + private int getMaxPosition() { + int maxPosition = 0; + + for (Car car : cars.getCars()) { + maxPosition = car.max(maxPosition); + } + + return maxPosition; + } +} diff --git a/src/main/java/racing/domain/Position.java b/src/main/java/racing/domain/Position.java new file mode 100644 index 00000000000..994777bcb9f --- /dev/null +++ b/src/main/java/racing/domain/Position.java @@ -0,0 +1,41 @@ +package racing.domain; + +import racing.data.Messages; + +import java.util.Objects; + +public class Position { + + int value = 0; + + public Position(int value) { + if (value < 0) { + throw new IllegalArgumentException(Messages.INVALID_NUMBER_RANGE); + } + this.value = value; + } + + public int getValue() { + return this.value; + } + + public void increase() { + this.value++; + } + + public int max(int position) { + return Math.max(this.value, position); + } + + @Override + public boolean equals(Object o) { + if (o == null || getClass() != o.getClass()) return false; + Position position = (Position) o; + return value == position.value; + } + + @Override + public int hashCode() { + return Objects.hashCode(value); + } +} diff --git a/src/main/java/racing/domain/RacingGame.java b/src/main/java/racing/domain/RacingGame.java new file mode 100644 index 00000000000..15d74277ec6 --- /dev/null +++ b/src/main/java/racing/domain/RacingGame.java @@ -0,0 +1,45 @@ +package racing.domain; + +import racing.utils.RandomUtils; +import racing.views.ResultView; + +public class RacingGame { + + private final Cars cars; + + public Cars getCars() { + return this.cars; + } + + public RacingGame(int carCounts) { + this.cars = generateCars(carCounts); + } + + public RacingGame(String[] carNames) { + this.cars = generateCarsWithName(carNames); + } + + public void moveCars() { + for (Car car : cars.getCars()) { + car.move(RandomUtils.generateRandomNumber(10)); + ResultView.printResultWithName(car); + } + ResultView.println(""); + } + + private Cars generateCars(int carCount) { + Cars cars = new Cars(); + for (int i = 0; i < carCount; i++) { + cars.addCar(new Car()); + } + return cars; + } + + private Cars generateCarsWithName(String[] carNames) { + Cars cars = new Cars(); + for(String carName : carNames){ + cars.addCar(new Car(carName)); + } + return cars; + } +} \ No newline at end of file diff --git a/src/main/java/racing/views/InputView.java b/src/main/java/racing/views/InputView.java index 7c6a777d2fc..ea14259c4b9 100644 --- a/src/main/java/racing/views/InputView.java +++ b/src/main/java/racing/views/InputView.java @@ -29,4 +29,15 @@ public static String[] inputCarNames() { } } } + + public static String[] inputCarCounts() { + while (true) { + ResultView.askCarCounts(); + try { + return scanner.next().split(","); + } catch (Exception e) { + ResultView.printTypeError(); + } + } + } } diff --git a/src/main/java/racing/views/ResultView.java b/src/main/java/racing/views/ResultView.java index 520bda627ba..e5944aec5ab 100644 --- a/src/main/java/racing/views/ResultView.java +++ b/src/main/java/racing/views/ResultView.java @@ -1,6 +1,6 @@ package racing.views; -import racing.Car; +import racing.domain.Car; import racing.data.Messages; import java.util.*; @@ -9,7 +9,7 @@ public class ResultView { public static void printResult(Car car) { - println("-".repeat(car.getDistance())); + println("-".repeat(car.getPosition())); } public static void println(String str) { @@ -17,7 +17,7 @@ public static void println(String str) { } public static void printResultWithName(Car car) { - println(car.getCarName() + " : " + "-".repeat(car.getDistance())); + println(car.getCarName() + " : " + "-".repeat(car.getPosition())); } public static void printTypeError() { @@ -28,6 +28,10 @@ public static void askCarNames() { println(Messages.ASK_CAR_NAMES); } + public static void askCarCounts() { + println(Messages.ASK_CAR_COUNT); + } + public static void printWinner(List cars) { println(cars.stream().map(Car::getCarName).collect(Collectors.joining(", ")) + Messages.RACE_WINNER); } diff --git a/src/test/java/RacingTest/CarTest.java b/src/test/java/racing/CarTest.java similarity index 76% rename from src/test/java/RacingTest/CarTest.java rename to src/test/java/racing/CarTest.java index 1b212ba845c..c9423a35960 100644 --- a/src/test/java/RacingTest/CarTest.java +++ b/src/test/java/racing/CarTest.java @@ -1,7 +1,8 @@ -package RacingTest; +package racing; -import racing.Car; -import racing.Judgement; +import racing.domain.Car; +import racing.domain.Cars; +import racing.domain.Judgement; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -39,24 +40,21 @@ void generateRandomNumber() { @DisplayName(value = "차량이 전진하는지 여부 확인") void 차량_전진_테스트() { car.move(RandomUtils.generateRandomNumber(10)); - assertThat("-".repeat(car.getDistance())).isIn("-", ""); + assertThat("-".repeat(car.getPosition())).isIn("-", ""); } @Test @DisplayName(value = "승자 테스트") void 승자_출력_테스트() { - List cars = List.of( - new Car("a"), - new Car("b"), - new Car("c") - ); - cars.get(0).move(4); - cars.get(1).move(4); - cars.get(2).move(1); - Judgement judgement = new Judgement(); + Cars cars = new Cars() + .addCar(new Car("A",4)) + .addCar(new Car("B",4)) + .addCar(new Car("C",2)); - assertThat(judgement.getWinnerCars(cars)).isEqualTo(List.of(cars.get(0), cars.get(1))); + Judgement judgement = new Judgement(cars); + + assertThat(judgement.getWinnerCars()).isEqualTo(List.of(cars.getCar(0), cars.getCar(1))); } @Test @@ -66,4 +64,5 @@ void generateRandomNumber() { new Car("가나다라마바"); }).isInstanceOf(IllegalArgumentException.class); } + } \ No newline at end of file