diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 000000000..0ad93a33a --- /dev/null +++ b/docs/README.md @@ -0,0 +1,75 @@ +## ๐Ÿš€ ๊ธฐ๋Šฅ๋ชฉ๋ก + +<<<<<<< HEAD +## CAR + +- [x] ์ด๋ฆ„, ํฌ์ง€์…˜ ๊ด€๋ฆฌ +- [x] 0 ~ 9 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ณ  4 ์ด์ƒ์ด๋ฉด ํฌ์ง€์…˜ ์ด๋™ +- [x] ์ด๋ฆ„๊ณผ ํฌ์ง€์…˜์„ toString +- [x] ํฌ์ง€์…˜๊ณผ ์šฐ์Šน ํฌ์ง€์…˜ ๋น„๊ต + +## CARS +- [x] Car์˜ ์ผ๊ธ‰ ์ปฌ๋ ‰์…˜ +- [x] ์ฐจ์˜ ์ด๋™, ํ„ด๋‹น ์ถœ๋ ฅ๋ฌธ, ์šฐ์Šน ์ถœ๋ ฅ๋ฌธ ๊ด€๋ฆฌ + +## CAR VENUE SERVICE + +- [x] ์ฐธ๊ฐ€ํ•˜๋Š” ์ž๋™์ฐจ, ์‹œ๋„ ํšŸ์ˆ˜ ๊ด€๋ฆฌ +- [ ] .. + +## CAR POSITION OPERATOR + +- [x] ๋Œ€ํšŒ์— ์ฐธ๊ฐ€ํ•˜๋Š” ์ฐจ๋“ค์˜ ํ•œ ํ„ด๋‹น ํฌ์ง€์…˜ ๊ฐ’๋“ค ๊ด€๋ฆฌ + +## ROUND + +- [x] ์šฐ์Šน ๋ผ์šด๋“œ์™€ ํ˜„์žฌ ๋ผ์šด๋“œ ๊ด€๋ฆฌ + +## RANDOM NUMBER GENERATE(interface + class) + +- [x] 0~9 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ƒ์„ฑ + +## NUMBER + +- [x] ๋Œ€ํšŒ์˜ ๋ฌด์ž‘์œ„ ๊ฐ’ ๋ฒ”์œ„ ๊ด€๋ฆฌ +- [x] ๊ธฐ์ค€ ๊ฐ’(4) ๊ด€๋ฆฌ + +## Message + +- [x] ์ถœ๋ ฅ๋ฌธ์— ํ•„์š”ํ•œ ๋ฌธ์ž์—ด ๊ด€๋ฆฌ + +## ErrorMessage + +- [x] ์—๋Ÿฌ ์ถœ๋ ฅ๋ฌธ์— ํ•„์š”ํ•œ ๋ฌธ์ž์—ด ๊ด€๋ฆฌ + +## View + +- [x] ์ž๋™์ฐจ ์ด๋ฆ„ ์ž…๋ ฅ +- [x] ์‹œ๋„ํ•  ํšŸ์ˆ˜ ์ž…๋ ฅ +- [x] ํ•œํ„ด๋‹น ๊ฒฐ๊ณผ ์ถœ๋ ฅ +- [x] ์šฐ์Šน์ž ์ถœ๋ ฅ + +## Controller + +- [ ] ์ด๋ฆ„, ํšŸ์ˆ˜, ๊ฒฐ๊ณผ์ถœ๋ ฅ, ์šฐ์Šน์ž ์ถœ๋ ฅ์˜ ํ๋ฆ„ ์ œ์–ด + +## Exception + +- [ ] Car์˜ ์ด๋ฆ„์ด 1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ 5๋ณด๋‹ค ํฌ๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ +- [ ] ์‹œ๋„ํ•  ํšŸ์ˆ˜๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด ์˜ˆ์™ธ์ฒ˜๋ฆฌ +- +======= + +## CAR +- [ ] ์ด๋ฆ„, ํฌ์ง€์…˜ ๊ด€๋ฆฌ +- [ ] 0 ~ 9 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ž…๋ ฅ๋ฐ›๊ณ  4 ์ด์ƒ์ด๋ฉด ํฌ์ง€์…˜ ์ด๋™ +- [ ] ์ด๋ฆ„๊ณผ ํฌ์ง€์…˜์„ toString์œผ๋กœ ๋˜์ ธ์คŒ +- [ ] ํฌ์ง€์…˜๊ณผ ์šฐ์Šน ํฌ์ง€์…˜ ๋น„๊ต, + +## CAR VENUE +- [ ] ์ฐธ๊ฐ€ํ•˜๋Š” ์ž๋™์ฐจ, ์‹œ๋„ ํšŸ์ˆ˜ ๊ด€๋ฆฌ +- [ ] ์ตœ์ข… ์šฐ์Šน์ž ๊ด€๋ฆฌ, ๋‹ค์ˆ˜์ด๋ฉด ","๋กœ ๊ด€๋ฆฌ + +## RANDOM NUMBER GENERATE +- [ ] 0~9 ์‚ฌ์ด์˜ ๊ฐ’์„ ์ƒ์„ฑ +>>>>>>> 2582cec307554d1cd318e15d23e6ad11db432f44 diff --git a/src/main/java/racingcar/Application.java b/src/main/java/racingcar/Application.java index b9ed0456a..525b3469b 100644 --- a/src/main/java/racingcar/Application.java +++ b/src/main/java/racingcar/Application.java @@ -1,7 +1,10 @@ package racingcar; +import racingcar.controller.RacingCarController; + public class Application { public static void main(String[] args) { // TODO ๊ตฌํ˜„ ์ง„ํ–‰ + new RacingCarController().play(); } } diff --git a/src/main/java/racingcar/Car.java b/src/main/java/racingcar/Car.java deleted file mode 100644 index ab3df9492..000000000 --- a/src/main/java/racingcar/Car.java +++ /dev/null @@ -1,12 +0,0 @@ -package racingcar; - -public class Car { - private final String name; - private int position = 0; - - public Car(String name) { - this.name = name; - } - - // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ -} diff --git a/src/main/java/racingcar/controller/RacingCarController.java b/src/main/java/racingcar/controller/RacingCarController.java new file mode 100644 index 000000000..b7fcaddb9 --- /dev/null +++ b/src/main/java/racingcar/controller/RacingCarController.java @@ -0,0 +1,34 @@ +package racingcar.controller; + +import racingcar.domain.Car; +import racingcar.domain.Cars; +import racingcar.service.CarVenueService; +import racingcar.view.View; + +import java.util.List; + +import static racingcar.message.Message.ESCAPE_SEQUENCE; + +public class RacingCarController { + private final View view = new View(); + + public void play() { + List cars = view.inputCar(); + int round = view.inputRound(); + CarVenueService carVenueService = new CarVenueService(cars, round); + moveAndPrint(carVenueService); + } + + private void moveAndPrint(CarVenueService carVenueService) { + StringBuilder print = new StringBuilder(); + while (!carVenueService.isEnd()) { + carVenueService.moveTurn(); + print.append(carVenueService.printTurn() + ESCAPE_SEQUENCE.getMessage()); + } + view.printResult(print.toString()); + whoIsWinner(carVenueService); + } + private void whoIsWinner(CarVenueService carVenueService){ + view.printWinner(carVenueService.printWinner()); + } +} diff --git a/src/main/java/racingcar/domain/Car.java b/src/main/java/racingcar/domain/Car.java new file mode 100644 index 000000000..a52ba4168 --- /dev/null +++ b/src/main/java/racingcar/domain/Car.java @@ -0,0 +1,52 @@ +package racingcar.domain; + +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static racingcar.message.ErrorMessage.CAR_NAME_TOO_LONG; +import static racingcar.message.Message.*; +import static racingcar.util.NumberManager.NAME_MIN_LENGTH; +import static racingcar.util.NumberManager.STANDARD_NUMBER; + +public class Car { + private final int maxNameSize = 5; + private final String name; + private int position = 0; + + + public Car(String name) { + validate(name); + this.name = name; + } + + private void validate(String name) { + if (name.length() > maxNameSize || name.length() < NAME_MIN_LENGTH.getNumber()) { + throw new IllegalArgumentException(CAR_NAME_TOO_LONG.getMessage()); + } + } + + // ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ + public void move(int moveInput) { + if (moveInput >= STANDARD_NUMBER.getNumber()) position++; + } + + public int getPosition() { + return position; + } + + @Override + public String toString() { + StringBuilder print = new StringBuilder(name); + appendPosition(print); + return print.toString(); + } + + private void appendPosition(StringBuilder print) { + print.append(INFIX.getMessage()); + print.append(IntStream.range(0, position).mapToObj(i -> POSITION.getMessage()).collect(Collectors.joining())); + } + + public String getName() { + return name; + } +} diff --git a/src/main/java/racingcar/domain/Cars.java b/src/main/java/racingcar/domain/Cars.java new file mode 100644 index 000000000..afa14c476 --- /dev/null +++ b/src/main/java/racingcar/domain/Cars.java @@ -0,0 +1,50 @@ +package racingcar.domain; + +import racingcar.message.Message; +import racingcar.util.CarOperator; + +import java.util.List; +import java.util.StringJoiner; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static racingcar.message.Message.*; + +public class Cars { + private final List cars; + + public Cars(List cars) { + this.cars = cars; + } + + public void moveCars(CarOperator operator) { + List nowMove = operator.tempPosition(); + IntStream.range(0, cars.size()).forEach(index -> { + cars.get(index).move((nowMove.get(index))); + }); + } + + public String printCars() { + return cars.stream().map(car -> car.toString() + ESCAPE_SEQUENCE.getMessage()) + .collect(Collectors.joining()); + } + + public int getMaxPosition() { + return cars.stream().mapToInt(Car::getPosition).max() + .orElseThrow(IllegalArgumentException::new); + } + + public String getWinCar() { + int max = getMaxPosition(); + StringJoiner joiner = new StringJoiner(DELIMITER.getMessage() + " "); + IntStream.range(0, cars.size()) + .filter(i -> cars.get(i).getPosition() == max) + .mapToObj(i -> cars.get(i).getName()) + .forEach(joiner::add); + return joiner.toString(); + } + + public int getSize(){ + return cars.size(); + } +} diff --git a/src/main/java/racingcar/domain/Round.java b/src/main/java/racingcar/domain/Round.java new file mode 100644 index 000000000..e6cc33870 --- /dev/null +++ b/src/main/java/racingcar/domain/Round.java @@ -0,0 +1,19 @@ +package racingcar.domain; + +public class Round { + private final int finalRound; + private int tempRound = 0; + + public Round(int finalRound) { + this.finalRound = finalRound; + } + + public void next() { + tempRound++; + } + + public boolean isFinish() { + if (tempRound == finalRound) return true; + return false; + } +} diff --git a/src/main/java/racingcar/message/ErrorMessage.java b/src/main/java/racingcar/message/ErrorMessage.java new file mode 100644 index 000000000..50ae91d79 --- /dev/null +++ b/src/main/java/racingcar/message/ErrorMessage.java @@ -0,0 +1,17 @@ +package racingcar.message; + +public enum ErrorMessage { + CAR_NAME_TOO_LONG("์ฐจ ์ด๋ฆ„์€ ๊ณต๋ฐฑ์ด ์•„๋‹ˆ๊ณ , 5๊ธ€์ž ์ด๋‚ด์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค."), + ROUND_IS_DIGIT("์‹œ๋„ ํšŸ์ˆ˜๋Š” ์ˆซ์ž์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค."), + DUPLICATE_PARTICIPANT("์ค‘๋ณต๋œ ์ฐธ๊ฐ€์ž๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค."); + private final String prefix = "[ERROR]"; + private String message; + + private ErrorMessage(String message) { + this.message = message; + } + + public String getMessage(){ + return prefix + message; + } +} diff --git a/src/main/java/racingcar/message/Message.java b/src/main/java/racingcar/message/Message.java new file mode 100644 index 000000000..c736860ac --- /dev/null +++ b/src/main/java/racingcar/message/Message.java @@ -0,0 +1,22 @@ +package racingcar.message; + +public enum Message { + DELIMITER(","), + INFIX(" : "), + POSITION("-"), + ESCAPE_SEQUENCE("\n"), + WINNER("์ตœ์ข… ์šฐ์Šน์ž : "), + LOSER(""), + PRINT_INPUT_NAMES("๊ฒฝ์ฃผํ•  ์ž๋™์ฐจ ์ด๋ฆ„์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์ด๋ฆ„์€ ์‰ผํ‘œ(,) ๊ธฐ์ค€์œผ๋กœ ๊ตฌ๋ถ„)"), + PRINT_INPUT_FINAL_ROUND("์‹œ๋„ํ•  ํšŒ์ˆ˜๋Š” ๋ช‡ํšŒ์ธ๊ฐ€์š”?"), + PRINT_OUTPUT("์‹คํ–‰ ๊ฒฐ๊ณผ"); + + private String message; + + Message(String message) { + this.message = message; + } + public String getMessage(){ + return message; + } +} diff --git a/src/main/java/racingcar/service/CarVenueService.java b/src/main/java/racingcar/service/CarVenueService.java new file mode 100644 index 000000000..c07c309db --- /dev/null +++ b/src/main/java/racingcar/service/CarVenueService.java @@ -0,0 +1,44 @@ +package racingcar.service; + +import racingcar.domain.Car; +import racingcar.domain.Cars; +import racingcar.domain.Round; +import racingcar.util.CarOperator; +import racingcar.util.RandomNumberGenerate; + +import java.util.List; + +import static racingcar.message.Message.WINNER; + +public class CarVenueService { + private final Cars cars; + private final CarOperator carOperator; + private final Round round; + + + public CarVenueService(List cars, int finalRound) { + this.cars = new Cars(cars); + this.carOperator = new CarOperator(new RandomNumberGenerate(), cars.size()); + this.round = new Round(finalRound); + } + + public void moveTurn() { + round.next(); + cars.moveCars(carOperator); + } + + public String printTurn() { + return cars.printCars(); + } + + public boolean isEnd() { + if (round.isFinish()) return true; + return false; + } + + public String printWinner() { + StringBuilder print = new StringBuilder(WINNER.getMessage()); + print.append(cars.getWinCar()); + return print.toString(); + } +} diff --git a/src/main/java/racingcar/util/CarOperator.java b/src/main/java/racingcar/util/CarOperator.java new file mode 100644 index 000000000..03894577f --- /dev/null +++ b/src/main/java/racingcar/util/CarOperator.java @@ -0,0 +1,19 @@ +package racingcar.util; + +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +public class CarOperator { + private final NumberGenerate numberGenerate; + private final int carAmount; + + public CarOperator(NumberGenerate numberGenerate, int carAmount) { + this.numberGenerate = numberGenerate; + this.carAmount = carAmount; + } + + public List tempPosition() { + return IntStream.range(0, carAmount).mapToObj(index -> numberGenerate.generate()).collect(Collectors.toList()); + } +} diff --git a/src/main/java/racingcar/util/NumberGenerate.java b/src/main/java/racingcar/util/NumberGenerate.java new file mode 100644 index 000000000..17dedcbd5 --- /dev/null +++ b/src/main/java/racingcar/util/NumberGenerate.java @@ -0,0 +1,6 @@ +package racingcar.util; + +@FunctionalInterface +public interface NumberGenerate { + int generate(); +} diff --git a/src/main/java/racingcar/util/NumberManager.java b/src/main/java/racingcar/util/NumberManager.java new file mode 100644 index 000000000..c82d9b460 --- /dev/null +++ b/src/main/java/racingcar/util/NumberManager.java @@ -0,0 +1,17 @@ +package racingcar.util; + +public enum NumberManager { + NAME_MIN_LENGTH(1), + START_NUMBER(0), + LAST_NUMBER(9), + STANDARD_NUMBER(4); + private int number; + + NumberManager(int number) { + this.number = number; + } + + public int getNumber() { + return number; + } +} diff --git a/src/main/java/racingcar/util/RandomNumberGenerate.java b/src/main/java/racingcar/util/RandomNumberGenerate.java new file mode 100644 index 000000000..d8d0d3ffb --- /dev/null +++ b/src/main/java/racingcar/util/RandomNumberGenerate.java @@ -0,0 +1,13 @@ +package racingcar.util; + +import camp.nextstep.edu.missionutils.Randoms; + +import static racingcar.util.NumberManager.*; + +public class RandomNumberGenerate implements NumberGenerate { + + @Override + public int generate() { + return Randoms.pickNumberInRange(START_NUMBER.getNumber(), LAST_NUMBER.getNumber()); + } +} diff --git a/src/main/java/racingcar/view/OutputView.java b/src/main/java/racingcar/view/OutputView.java new file mode 100644 index 000000000..e1fe3e731 --- /dev/null +++ b/src/main/java/racingcar/view/OutputView.java @@ -0,0 +1,22 @@ +package racingcar.view; + +import static racingcar.message.Message.*; + +public class OutputView { + public void printCarsName() { + System.out.println(PRINT_INPUT_NAMES.getMessage()); + } + + public void printInputFinalRound() { + System.out.println(PRINT_INPUT_FINAL_ROUND.getMessage()); + } + + public void printResult(String result) { + System.out.println(PRINT_OUTPUT.getMessage()); + System.out.println(result); + } + + public void printWinner(String winner) { + System.out.println(winner); + } +} diff --git a/src/main/java/racingcar/view/View.java b/src/main/java/racingcar/view/View.java new file mode 100644 index 000000000..8d23fcd2e --- /dev/null +++ b/src/main/java/racingcar/view/View.java @@ -0,0 +1,62 @@ +package racingcar.view; + +import camp.nextstep.edu.missionutils.Console; +import racingcar.domain.Car; +import racingcar.domain.Cars; +import racingcar.message.ErrorMessage; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static racingcar.message.ErrorMessage.*; +import static racingcar.message.Message.*; + +public class View extends OutputView { + public List inputCar() { + printCarsName(); + String input = Console.readLine(); + String[] splitInput = input.split(DELIMITER.getMessage()); + List cars = new ArrayList<>(); + makeCars(splitInput, cars); + return cars; + } + + private void validateDuplicate(String[] splitInput) { + if(splitInput.length != Arrays.stream(splitInput).distinct().count()){ + throw new IllegalArgumentException(DUPLICATE_PARTICIPANT.getMessage()); + } + } + + private void makeCars(String[] splitInput, List cars) { + try { + validateDuplicate(splitInput); + for (String car : splitInput) { + cars.add(new Car(car)); + } + } catch (IllegalArgumentException exception) { + System.out.println(exception.getMessage()); + inputCar(); + } + } + + public int inputRound() { + printInputFinalRound(); + String inputRound = Console.readLine(); + try { + validateRound(inputRound); + } catch (IllegalArgumentException exception) { + System.out.println(exception); + inputRound(); + } + return Integer.parseInt(inputRound); + } + + private void validateRound(String inputRound) { + try { + Integer.parseInt(inputRound); + } catch (NumberFormatException exception) { + throw new IllegalArgumentException(ROUND_IS_DIGIT.getMessage()); + } + } +} diff --git a/src/test/java/racingcar/CarTest.java b/src/test/java/racingcar/CarTest.java new file mode 100644 index 000000000..fa3776814 --- /dev/null +++ b/src/test/java/racingcar/CarTest.java @@ -0,0 +1,27 @@ +package racingcar; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import racingcar.domain.Car; + +import static org.assertj.core.api.Assertions.*; + +class CarTest { + @Test + public void printCarPositionTest() throws Exception { + Car car = new Car("bebe"); + car.move(5); + car.move(4); + car.move(1); + Assertions.assertEquals(car.toString(), "bebe : --"); + } + + @Test + public void carNameTest() throws Exception { + assertThatThrownBy(() -> + new Car("ffffff")).isInstanceOf(IllegalArgumentException.class); + assertThatThrownBy(() -> + new Car("")).isInstanceOf(IllegalArgumentException.class); + } + +} \ No newline at end of file diff --git a/src/test/java/racingcar/domain/CarVenueServiceTest.java b/src/test/java/racingcar/domain/CarVenueServiceTest.java new file mode 100644 index 000000000..c07026933 --- /dev/null +++ b/src/test/java/racingcar/domain/CarVenueServiceTest.java @@ -0,0 +1,58 @@ +package racingcar.domain; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import racingcar.service.CarVenueService; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.IntStream; + +class CarVenueServiceTest { + + + @Test + @DisplayName("๊ฒŒ์ž„ ์—”๋”ฉ ํ™•์ธ ํ…Œ์ŠคํŠธ") + public void endGameTest() throws Exception{ + List cars = new ArrayList<>(); + cars.add(new Car("hi1")); + int round = 3; + CarVenueService carVenueService = new CarVenueService(cars, round); + IntStream.range(0, round).forEach(i -> carVenueService.moveTurn()); + Assertions.assertEquals(carVenueService.isEnd(), true); + } + + @Test + @DisplayName("๊ฒŒ์ž„ ์ง„ํ–‰ ๋ฐ ์ถœ๋ ฅ ํ™•์ธ") + public void carVenueServiceTest() throws Exception{ + //given + List cars = new ArrayList<>(); + cars.add(new Car("hi1")); + cars.add(new Car("hi2")); + int round = 3; + CarVenueService carVenueService = new CarVenueService(cars, round); + carVenueService.moveTurn(); + Assertions.assertEquals(carVenueService.printTurn().contains("hi1 : "), + true); + Assertions.assertEquals(carVenueService.printTurn().contains("hi2 : "), + true); + } + + @Test + public void getMaxPositionTest() throws Exception{ + //given + List cars = new ArrayList<>(); + Car hiCar = new Car("hi"); + Car byeCar = new Car("bye"); + Car helloCar = new Car("hello"); + cars.add(hiCar); + cars.add(byeCar); + cars.add(helloCar); + Cars carCollection = new Cars(cars); + hiCar.move(5); + hiCar.move(5); + Assertions.assertEquals(carCollection.getMaxPosition(), 2); + //then + } +} \ No newline at end of file diff --git a/src/test/java/racingcar/domain/RoundTest.java b/src/test/java/racingcar/domain/RoundTest.java new file mode 100644 index 000000000..9d5fca1db --- /dev/null +++ b/src/test/java/racingcar/domain/RoundTest.java @@ -0,0 +1,20 @@ +package racingcar.domain; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class RoundTest { + @Test + @DisplayName("Round ์—”๋“œ ํ…Œ์ŠคํŠธ") + public void roundEndTest() throws Exception{ + Round round = new Round(2); + round.next(); + Assertions.assertEquals(round.isFinish(), false); + round.next(); + Assertions.assertEquals(round.isFinish(), true); + } + +} \ No newline at end of file diff --git a/src/test/java/racingcar/util/CarOperatorTest.java b/src/test/java/racingcar/util/CarOperatorTest.java new file mode 100644 index 000000000..5a2362681 --- /dev/null +++ b/src/test/java/racingcar/util/CarOperatorTest.java @@ -0,0 +1,15 @@ +package racingcar.util; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; + +class CarOperatorTest { + @Test + @DisplayName("CarOperator๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜„์žฌ ํ„ด์˜ ๋žœ๋ค๊ฐ’ ์‚ฌ์ด์ฆˆ ํ™•์ธ") + public void carOperatorSizeTest(){ + CarOperator carOperator = new CarOperator(new RandomNumberGenerate(), 3); + Assertions.assertEquals(carOperator.tempPosition().size(), 3); + } + +} \ No newline at end of file