diff --git a/src/main/java/racingGame/controller/Main.java b/src/main/java/racingGame/controller/Main.java deleted file mode 100644 index 9c6f958..0000000 --- a/src/main/java/racingGame/controller/Main.java +++ /dev/null @@ -1,13 +0,0 @@ -package racingGame.controller; - -import racingGame.model.RacingGame; -import racingGame.util.InputView; -import racingGame.util.ResultView; - -public class Main { - public static void main(String[] args) { - RacingGame racingGame = new RacingGame(); - racingGame.settingCar(InputView.inputCar()); - ResultView.printResult(racingGame.tryAllCarGame(InputView.inputTry())); - } -} \ No newline at end of file diff --git a/src/main/java/racingGame/model/Car.java b/src/main/java/racingGame/model/Car.java deleted file mode 100644 index dbc6a6a..0000000 --- a/src/main/java/racingGame/model/Car.java +++ /dev/null @@ -1,14 +0,0 @@ -package racingGame.model; - -public class Car { - private int carPosition = 0; - - public int getCarPosition() { - return carPosition; - } - - public int carMove() { - carPosition++; - return carPosition; - } -} \ No newline at end of file diff --git a/src/main/java/racingGame/util/ResultView.java b/src/main/java/racingGame/util/ResultView.java deleted file mode 100644 index 42d5f50..0000000 --- a/src/main/java/racingGame/util/ResultView.java +++ /dev/null @@ -1,24 +0,0 @@ -package racingGame.util; - -import racingGame.model.Car; - -import java.util.List; - -public class ResultView { - private static final String RESULT_SIGN = "출력 결과"; - private static final char MOVED = '-'; - - public static void printResult(List cars) { - System.out.println(RESULT_SIGN); - for (Car car : cars) { - readCar(car.getCarPosition()); - } - } - - public static void readCar(int carPosition) { - for (int i = 0; i < carPosition; i++) { - System.out.print(MOVED); - } - System.out.println(); - } -} diff --git a/src/main/java/racinggame/controller/Main.java b/src/main/java/racinggame/controller/Main.java new file mode 100644 index 0000000..08ff52a --- /dev/null +++ b/src/main/java/racinggame/controller/Main.java @@ -0,0 +1,23 @@ +package racinggame.controller; + +import racinggame.model.Car; +import racinggame.model.RacingGame; +import racinggame.model.WinnerGenerator; +import racinggame.util.InputView; +import racinggame.util.ResultView; + +import java.util.List; + +public class Main { + public static void main(String[] args) { + RacingGame racingGame = new RacingGame(); + WinnerGenerator winnerGenerator = new WinnerGenerator(); + + racingGame.settingCar(InputView.inputCar()); //main 에서도 변수를 활용하자 String carNames = InputView.getCarNames(); 처럼 + List finishedCars = racingGame.tryAllCarGame(InputView.inputTry()); // 여기서도 InputView.inputTry를 애당초 int tryNo = InputView.getTryNo(); 이런 식으로 활용 했었어야 했다. + ResultView.printResult(finishedCars); + ResultView.printWinner(winnerGenerator.makeWinners(finishedCars)); + + //느낀점 내가 짠 main은 작성한 메소드를 불러오기에만 급급했다. main 내에서도 변수에 할당 하면 좀더 편했을 것 같다. + } +} \ No newline at end of file diff --git a/src/main/java/racinggame/javajigi_racingGame/RacingMain.java b/src/main/java/racinggame/javajigi_racingGame/RacingMain.java new file mode 100644 index 0000000..4868df3 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/RacingMain.java @@ -0,0 +1,18 @@ +package racinggame.javajigi_racingGame; + +import racinggame.javajigi_racingGame.domain.RacingGame; +import racinggame.javajigi_racingGame.dto.RacingResult; +import racinggame.javajigi_racingGame.view.InputView; +import racinggame.javajigi_racingGame.view.ResultView; + +public class RacingMain { + public static void main(String[] args) { + String carNames = InputView.getCarNames(); + int tryNo = InputView.getTryNo(); + + RacingGame racingGame = new RacingGame(carNames); + RacingResult result = racingGame.racing(tryNo); + + ResultView.printResult(result); + } +} \ No newline at end of file diff --git a/src/main/java/racinggame/javajigi_racingGame/domain/Car.java b/src/main/java/racinggame/javajigi_racingGame/domain/Car.java new file mode 100644 index 0000000..b9a462f --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/domain/Car.java @@ -0,0 +1,59 @@ +package racinggame.javajigi_racingGame.domain; + +import java.util.Objects; + +import racinggame.javajigi_racingGame.dto.CarDto; +import racinggame.javajigi_racingGame.utils.StringUtils; + +public class Car { + private static final int FORWARD_NUM = 4; + + private String name; + private int position = 0; + + public Car(String name) { + if (StringUtils.isBlank(name)) { + throw new IllegalArgumentException("자동차 이름은 값이 존재해야 합니다."); + } + this.name = name.trim(); + } + + public int getPosition() { + return position; + } + + public String getName() { + return name; + } + + public void move(int number) { + if (number >= FORWARD_NUM) { + position++; + } + } + public CarDto toCarDto() { + return new CarDto(name, position); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Car car = (Car) o; + return position == car.position && + Objects.equals(name, car.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, position); + } + + @Override + public String toString() { + return "Car{" + + "name='" + name + '\'' + + ", position=" + position + + '}'; + } +} diff --git a/src/main/java/racinggame/javajigi_racingGame/domain/RacingGame.java b/src/main/java/racinggame/javajigi_racingGame/domain/RacingGame.java new file mode 100644 index 0000000..3387d60 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/domain/RacingGame.java @@ -0,0 +1,51 @@ +package racinggame.javajigi_racingGame.domain; + +import java.util.ArrayList; +import java.util.List; + +import racinggame.javajigi_racingGame.dto.RacingResult; +import racinggame.javajigi_racingGame.utils.RandomValueGenerator; +import racinggame.javajigi_racingGame.utils.StringUtils; + +public class RacingGame { + private static final int MAX_BOUND = 10; + + private List cars = new ArrayList<>(); + + public RacingGame(String inputNames) { + if (StringUtils.isBlank(inputNames)) { + throw new IllegalArgumentException("사용자 이름은 빈 값이 될 수 없습니다."); + } + this.cars = createCars(inputNames); + } + + private static List createCars(String inputNames) { + List cars = new ArrayList<>(); + String[] names = inputNames.split(","); + for (String name : names) { + cars.add(new Car(name)); + } + return cars; + } + + public RacingResult racing(int tryNo) { + for (int i = 0; i < tryNo; i++) { + racingPerTry(); + } + return getResult(); + } + + private void racingPerTry() { + for (Car car: cars) { + car.move(RandomValueGenerator.nextInt(MAX_BOUND)); + } + } + + private RacingResult getResult() { + RacingResult result = new RacingResult(); + for (Car car : cars) { + result.add(car.toCarDto()); + } + return result; + } +} diff --git a/src/main/java/racinggame/javajigi_racingGame/dto/CarDto.java b/src/main/java/racinggame/javajigi_racingGame/dto/CarDto.java new file mode 100644 index 0000000..03eb5c7 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/dto/CarDto.java @@ -0,0 +1,58 @@ +package racinggame.javajigi_racingGame.dto; + +import java.util.Objects; +import java.util.stream.IntStream; + +public class CarDto { + private static final String STATUS_BAR = "-"; + + private String name; + private int position; + + public CarDto(String name, int position) { + this.name = name; + this.position = position; + } + + public String getName() { + return name; + } + + public int getPosition() { + return position; + } + + public boolean isMaxPosition(int maxPosition) { + return maxPosition == this.position; + } + + public String createStatus() { + StringBuilder status = new StringBuilder(); + IntStream.range(0, position).forEach(i -> { + status.append(STATUS_BAR); + }); + return status.toString(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + CarDto carDto = (CarDto) o; + return position == carDto.position && + Objects.equals(name, carDto.name); + } + + @Override + public int hashCode() { + return Objects.hash(name, position); + } + + @Override + public String toString() { + return "CarDto{" + + "name='" + name + '\'' + + ", position=" + position + + '}'; + } +} diff --git a/src/main/java/racinggame/javajigi_racingGame/dto/RacingResult.java b/src/main/java/racinggame/javajigi_racingGame/dto/RacingResult.java new file mode 100644 index 0000000..f5d65b4 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/dto/RacingResult.java @@ -0,0 +1,54 @@ +package racinggame.javajigi_racingGame.dto; + +import java.util.ArrayList; +import java.util.List; + +public class RacingResult { + private static final String COMMA_SEPARATOR = ","; + + private List cars = new ArrayList<>(); + + public void add(CarDto carDto) { + cars.add(carDto); + } + + public List getCars() { + return cars; + } + + public String createWinnerNames() { + return joinComma(getWinnerNames(getWinners(cars, maxPosition(cars)))); + } + + public static int maxPosition(List carDtos) { + int maxPosition = 0; + for (CarDto carDto: carDtos) { + if (maxPosition < carDto.getPosition()) { + maxPosition = carDto.getPosition(); + } + } + return maxPosition; + } + + public static List getWinners(List carDtos, int maxPosition) { + List winners = new ArrayList<>(); + for (CarDto carDto: carDtos) { + if (carDto.isMaxPosition(maxPosition)) { + winners.add(carDto); + } + } + return winners; + } + + public static List getWinnerNames(List winners) { + List winnerNames = new ArrayList<>(); + for (CarDto carDto: winners) { + winnerNames.add(carDto.getName()); + } + return winnerNames; + } + + public static String joinComma(List winnerNames) { + return String.join(COMMA_SEPARATOR, winnerNames); + } +} diff --git a/src/main/java/racinggame/javajigi_racingGame/utils/RandomValueGenerator.java b/src/main/java/racinggame/javajigi_racingGame/utils/RandomValueGenerator.java new file mode 100644 index 0000000..5c6191d --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/utils/RandomValueGenerator.java @@ -0,0 +1,11 @@ +package racinggame.javajigi_racingGame.utils; + +import java.util.Random; + +public class RandomValueGenerator { + private static final Random random = new Random(); + + public static int nextInt(int bound) { + return random.nextInt(bound); + } +} diff --git a/src/main/java/racinggame/javajigi_racingGame/utils/StringUtils.java b/src/main/java/racinggame/javajigi_racingGame/utils/StringUtils.java new file mode 100644 index 0000000..1bbfdd8 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/utils/StringUtils.java @@ -0,0 +1,10 @@ +package racinggame.javajigi_racingGame.utils; + +public class StringUtils { + public static boolean isBlank(String value) { + if (value == null || value.isEmpty()) { + return true; + } + return value.trim().isEmpty(); + } +} \ No newline at end of file diff --git a/src/main/java/racinggame/javajigi_racingGame/view/InputView.java b/src/main/java/racinggame/javajigi_racingGame/view/InputView.java new file mode 100644 index 0000000..9c23bce --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/view/InputView.java @@ -0,0 +1,17 @@ +package racinggame.javajigi_racingGame.view; + +import java.util.Scanner; + +public class InputView { + private static Scanner scanner = new Scanner(System.in); + + public static String getCarNames() { + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."); + return scanner.nextLine(); + } + + public static int getTryNo() { + System.out.println("시도할 회수는 몇회 인가요?"); + return scanner.nextInt(); + } +} \ No newline at end of file diff --git a/src/main/java/racinggame/javajigi_racingGame/view/ResultView.java b/src/main/java/racinggame/javajigi_racingGame/view/ResultView.java new file mode 100644 index 0000000..5a197b0 --- /dev/null +++ b/src/main/java/racinggame/javajigi_racingGame/view/ResultView.java @@ -0,0 +1,14 @@ +package racinggame.javajigi_racingGame.view; + +import racinggame.javajigi_racingGame.dto.CarDto; +import racinggame.javajigi_racingGame.dto.RacingResult; + +public class ResultView { + public static void printResult(RacingResult result) { + System.out.println("실행 결과"); + for ( CarDto carDto: result.getCars() ) { + System.out.println(String.format("%s: %s", carDto.getName(), carDto.createStatus())); + } + System.out.println(String.format("%s가 최종 우승했습니다", result.createWinnerNames())); + } +} \ No newline at end of file diff --git a/src/main/java/racinggame/model/Car.java b/src/main/java/racinggame/model/Car.java new file mode 100644 index 0000000..150027c --- /dev/null +++ b/src/main/java/racinggame/model/Car.java @@ -0,0 +1,40 @@ +package racinggame.model; + +public class Car { //javajigi님의 코드를 보며 비교해 본 결과 내 Car클래스는 역할 분담이 부족한거 같다. 어디가 어떤 클래스의 역할인지 더 고민해보고 스크립트를 짜야 겠다. + private int carPosition = 0; + private String playerName; + private static int winnerPosition = 0; + + public void calculateWinnerPosition() { + if (carPosition > winnerPosition) { + winnerPosition = carPosition; + } + } + + public boolean settingWinner() { + if (this.carPosition == winnerPosition) { + return true; + } + return false; + } + + public int getCarPosition() { + return carPosition; + } + + public String getPlayerName() { + return playerName; + } + + public static int getWinnerPosition() { + return winnerPosition; + } + + public void setPlayerName(String[] names, int index) { + this.playerName = names[index]; + } + + public void move() { + carPosition++; + } +} \ No newline at end of file diff --git a/src/main/java/racingGame/model/RacingGame.java b/src/main/java/racinggame/model/RacingGame.java similarity index 56% rename from src/main/java/racingGame/model/RacingGame.java rename to src/main/java/racinggame/model/RacingGame.java index 3b5b0a5..00e1a4e 100644 --- a/src/main/java/racingGame/model/RacingGame.java +++ b/src/main/java/racinggame/model/RacingGame.java @@ -1,25 +1,27 @@ -package racingGame.model; +package racinggame.model; -import racingGame.util.RandomGenerator; +import racinggame.util.RandomGenerator; import java.util.ArrayList; import java.util.List; public class RacingGame { - private List cars; + public List cars; private static int MOVE_RESTRICTION = 4; - public void settingCar(int numCar) { + public void settingCar(String[] names) { cars = new ArrayList<>(); - for (int i = 0; i < numCar; i++) { + for (int i = 0; i < names.length; i++) { Car car = new Car(); cars.add(car); + cars.get(i).setPlayerName(names, i); } } public List tryAllCarGame(int numberOfTry) { for (Car car : cars) { tryEachCarGame(car, numberOfTry); + car.calculateWinnerPosition(); } return cars; } @@ -31,15 +33,19 @@ private void tryEachCarGame(Car car, int numberOfTry) { } private void move(Car car) { - if (isMove()) { - car.carMove(); + if (isMove(RandomGenerator.randomGenerator())) { + car.move(); } } - private boolean isMove() { - if (RandomGenerator.randomGenerator() >= MOVE_RESTRICTION) { + private boolean isMove(int randNum) { + if (randNum >= MOVE_RESTRICTION) { return true; } return false; } + + public List getCars() { + return cars; + } } \ No newline at end of file diff --git a/src/main/java/racinggame/model/WinnerGenerator.java b/src/main/java/racinggame/model/WinnerGenerator.java new file mode 100644 index 0000000..1ef8d86 --- /dev/null +++ b/src/main/java/racinggame/model/WinnerGenerator.java @@ -0,0 +1,21 @@ +package racinggame.model; + +import java.util.ArrayList; +import java.util.List; + +public class WinnerGenerator { + private List winnerList = new ArrayList<>(); + + public List makeWinners(List cars) { + for (Car car : cars) { + addWinnerName(car); + } + return winnerList; + } + + private void addWinnerName(Car car) { + if (car.settingWinner()) { + winnerList.add(car); + } + } +} diff --git a/src/main/java/racingGame/util/InputView.java b/src/main/java/racinggame/util/InputView.java similarity index 50% rename from src/main/java/racingGame/util/InputView.java rename to src/main/java/racinggame/util/InputView.java index 35cb1d4..153952e 100644 --- a/src/main/java/racingGame/util/InputView.java +++ b/src/main/java/racinggame/util/InputView.java @@ -1,12 +1,14 @@ -package racingGame.util; +package racinggame.util; import java.util.Scanner; public class InputView { - public static int inputCar() { + public static String[] inputCar() { Scanner scanner = new Scanner(System.in); - System.out.println("자동차 대수는 몇 대 인가요?"); - return scanner.nextInt(); + System.out.println("경주할 자동차 이름을 입력하세요(이름은 쉼표(,)를 기준으로 구분)."); + String inputName = scanner.next(); + String[] names = inputName.split(","); + return names; } public static int inputTry() { diff --git a/src/main/java/racingGame/util/RandomGenerator.java b/src/main/java/racinggame/util/RandomGenerator.java similarity index 90% rename from src/main/java/racingGame/util/RandomGenerator.java rename to src/main/java/racinggame/util/RandomGenerator.java index b180b14..3a38942 100644 --- a/src/main/java/racingGame/util/RandomGenerator.java +++ b/src/main/java/racinggame/util/RandomGenerator.java @@ -1,4 +1,4 @@ -package racingGame.util; +package racinggame.util; import java.util.Random; diff --git a/src/main/java/racinggame/util/ResultView.java b/src/main/java/racinggame/util/ResultView.java new file mode 100644 index 0000000..255697e --- /dev/null +++ b/src/main/java/racinggame/util/ResultView.java @@ -0,0 +1,37 @@ +package racinggame.util; + +import racinggame.model.Car; + +import java.util.List; + +public class ResultView { //ResultView는 유틸이기 때문에 진짜 이미 계산된 우승자 및 출력결과만 출력해야한다. + private static final String RESULT_SIGN = "실행 결과"; + private static final String WINNER_SIGN = "가 최종 우승했습니다. 축하합니다!!"; + private static final char MOVED = '-'; + + public static void printResult(List cars) { + System.out.println(RESULT_SIGN); + for (Car car : cars) { + readPlayerName(car.getPlayerName()); + readCarPosition(car.getCarPosition()); + } + } + + private static void readPlayerName(String playerName) { + System.out.print(playerName + " : "); + } + + private static void readCarPosition(int carPosition) { + for (int i = 0; i < carPosition; i++) { + System.out.print(MOVED); + } + System.out.println(); + } + + public static void printWinner(List winnerList) { + for (int i = 0; i < winnerList.size(); i++) { + System.out.print(winnerList.get(i).getPlayerName() + " "); + } + System.out.println(WINNER_SIGN); + } +} diff --git a/src/test/java/CarTest.java b/src/test/java/CarTest.java new file mode 100644 index 0000000..0ae0b0a --- /dev/null +++ b/src/test/java/CarTest.java @@ -0,0 +1,34 @@ +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import racinggame.model.Car; + +import static org.junit.Assert.assertEquals; + +public class CarTest { + Car car; + + @Before + public void setUp() { + car = new Car(); + } + + @Test + public void 플레이어이름설정() { + String[] names = {"a", "b", "c", "d"}; + car.setPlayerName(names, 1); + assertEquals("b", car.getPlayerName()); + } + + @Test + public void 움직임여부() { + int beforeCarPosition = car.getCarPosition(); + car.move(); + assertEquals(beforeCarPosition + 1, car.getCarPosition()); + } + + @After + public void tearDown() { + car = null; + } +} diff --git a/src/test/java/RacingGameTest.java b/src/test/java/RacingGameTest.java index ec61a04..141ba71 100644 --- a/src/test/java/RacingGameTest.java +++ b/src/test/java/RacingGameTest.java @@ -1,29 +1,28 @@ -/* -import Car; -import racingGame.racingGame; -import RandomGenerator; import org.junit.After; import org.junit.Before; import org.junit.Test; +import racinggame.model.RacingGame; -import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertEquals; public class RacingGameTest { - racingGame racingGame; - Car car; - RandomGenerator utils; + RacingGame racingGame; + @Before public void setUp() { - utils = new RandomGenerator(); + racingGame = new RacingGame(); + String[] names = {"a", "b", "c"}; + racingGame.settingCar(names); } + @Test - public void 랜덤생성작동여부(){ - assertNotNull(utils.randomGenerator()); + public void 차량셋팅확인() { + assertEquals(3, racingGame.getCars().size()); } @After - public void tearDown(){ + public void tearDown() { racingGame = null; } } -*/ + diff --git a/src/test/java/RandomGeneratorTest.java b/src/test/java/RandomGeneratorTest.java new file mode 100644 index 0000000..c6241d7 --- /dev/null +++ b/src/test/java/RandomGeneratorTest.java @@ -0,0 +1,26 @@ +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import racinggame.util.RandomGenerator; + +import static org.junit.Assert.assertNotNull; + +public class RandomGeneratorTest { + RandomGenerator randomGenerator; + + @Before + public void setUp() { + randomGenerator = new RandomGenerator(); + } + + @Test + public void 랜덤생성작동여부() { + assertNotNull(randomGenerator.randomGenerator()); + } + + + @After + public void tearDown() { + randomGenerator = null; + } +} diff --git a/src/test/java/WinnerGeneratorTest.java b/src/test/java/WinnerGeneratorTest.java new file mode 100644 index 0000000..c5c144e --- /dev/null +++ b/src/test/java/WinnerGeneratorTest.java @@ -0,0 +1,36 @@ +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import racinggame.model.RacingGame; +import racinggame.model.WinnerGenerator; + +import static org.junit.Assert.assertTrue; + +public class WinnerGeneratorTest { + WinnerGenerator winnerGenerator; + RacingGame racingGame; + private static final int WINNER_NOT_ZERO = 1; + + @Before + public void setUp() { + winnerGenerator = new WinnerGenerator(); + racingGame = new RacingGame(); + String[] names = {"a", "b", "c", "d", "e"}; + racingGame.settingCar(names); + } + + @Test + public void 우승자선발여부() { + boolean isWinnerNotZero = false; + if (winnerGenerator.makeWinners(racingGame.tryAllCarGame(5)).size() >= WINNER_NOT_ZERO) { + isWinnerNotZero = true; + } + assertTrue(isWinnerNotZero); + } + + @After + public void tearDown() { + winnerGenerator = null; + racingGame = null; + } +} diff --git a/src/test/java/javajigi_racinggame/Test.java b/src/test/java/javajigi_racinggame/Test.java new file mode 100644 index 0000000..5b752c0 --- /dev/null +++ b/src/test/java/javajigi_racinggame/Test.java @@ -0,0 +1,4 @@ +package javajigi_racinggame; + +public class Test { +} diff --git a/src/test/java/javajigi_racinggame/domain/CarTest.java b/src/test/java/javajigi_racinggame/domain/CarTest.java new file mode 100644 index 0000000..6181e12 --- /dev/null +++ b/src/test/java/javajigi_racinggame/domain/CarTest.java @@ -0,0 +1,30 @@ +package javajigi_racinggame.domain; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Before; +import org.junit.Test; + +import racinggame.javajigi_racingGame.domain.Car; +import racinggame.javajigi_racingGame.dto.CarDto; + +public class CarTest { + private Car car; + + @Before + public void setUp() throws Exception { + car = new Car("javajigi"); + } + + @Test + public void move_stay() { + car.move(3); + assertThat(car.toCarDto()).isEqualTo(new CarDto("javajigi", 0)); + } + + @Test + public void move_forward() { + car.move(4); + assertThat(car.toCarDto()).isEqualTo(new CarDto("javajigi", 1)); + } +} \ No newline at end of file diff --git a/src/test/java/javajigi_racinggame/dto/CarDtoTest.java b/src/test/java/javajigi_racinggame/dto/CarDtoTest.java new file mode 100644 index 0000000..697c57a --- /dev/null +++ b/src/test/java/javajigi_racinggame/dto/CarDtoTest.java @@ -0,0 +1,14 @@ +package javajigi_racinggame.dto; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; +import racinggame.javajigi_racingGame.dto.CarDto; + +public class CarDtoTest { + @Test + public void createStatus() { + CarDto car = new CarDto("pobi", 3); + assertThat(car.createStatus()).isEqualTo("---"); + } +} \ No newline at end of file diff --git a/src/test/java/javajigi_racinggame/dto/RacingResultTest.java b/src/test/java/javajigi_racinggame/dto/RacingResultTest.java new file mode 100644 index 0000000..8843966 --- /dev/null +++ b/src/test/java/javajigi_racinggame/dto/RacingResultTest.java @@ -0,0 +1,57 @@ +package javajigi_racinggame.dto; + +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; +import racinggame.javajigi_racingGame.dto.CarDto; +import racinggame.javajigi_racingGame.dto.RacingResult; + +public class RacingResultTest { + @Test + public void createWinnerNames() { + RacingResult result = new RacingResult(); + result.add(new CarDto("pobi", 8)); + result.add(new CarDto("honux", 7)); + result.add(new CarDto("crong", 8)); + assertThat(result.createWinnerNames()).isEqualTo("pobi,crong"); + } + + @Test + public void maxPosition() { + List cars = Arrays.asList( + new CarDto("pobi", 8), + new CarDto("honux", 7), + new CarDto("crong", 8) + ); + assertThat(RacingResult.maxPosition(cars)).isEqualTo(8); + } + + @Test + public void getWinners() { + List cars = Arrays.asList( + new CarDto("pobi", 8), + new CarDto("honux", 7), + new CarDto("crong", 8) + ); + List winners = RacingResult.getWinners(cars, 8); + assertThat(winners.size()).isEqualTo(2); + } + + @Test + public void getWinnerNames() { + List winners = Arrays.asList( + new CarDto("pobi", 8), + new CarDto("crong", 8) + ); + assertThat(RacingResult.getWinnerNames(winners)).contains("pobi", "crong"); + } + + @Test + public void joinComma() { + List winnerNames = Arrays.asList("pobi", "crong"); + assertThat(RacingResult.joinComma(winnerNames)).isEqualTo("pobi,crong"); + } +} \ No newline at end of file