Skip to content

Commit ab29730

Browse files
committed
두번째 리뷰 반영 - 2단계 자동차경주
1 parent 0bf19ff commit ab29730

File tree

6 files changed

+44
-44
lines changed

6 files changed

+44
-44
lines changed

src/main/java/Car.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,16 @@ public class Car {
22

33
private final String carName;
44
private int position = 0;
5-
private final RandomMove randomMove;
6-
7-
public Car(String name, RandomMove randomMove,int position) {
5+
private final RandomMovable randomMovable;
86

7+
public Car(String name, RandomMovable randomMovable, int position) {
98
this.carName = name;
10-
this.randomMove = randomMove;
9+
this.randomMovable = randomMovable;
1110
this.position = position;
1211
}
1312

14-
public void move(Movable movable) {
15-
if (randomMove.canMove()) {
13+
public void move() {
14+
if (randomMovable.canMove()) {
1615
position++;
1716
}
1817
}

src/main/java/Movable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//움직일 수 있나? 만 보는 인터페이스
22
@FunctionalInterface
33
public interface Movable {
4-
boolean canMove();
4+
boolean canMove();
55
}
66

src/main/java/RandomMovable.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import java.util.concurrent.ThreadLocalRandom;
2+
3+
public class RandomMovable implements Movable {
4+
5+
private final int moveThreshold;
6+
private final int randomBound;
7+
8+
//생성자에서 전진 조건을 설정
9+
public RandomMovable(int moveThreshold, int randomBound) {
10+
this.moveThreshold = moveThreshold;
11+
this.randomBound = randomBound;
12+
}
13+
14+
@Override
15+
public boolean canMove() {
16+
return (ThreadLocalRandom.current().nextInt(randomBound)) >= moveThreshold;
17+
}
18+
}

src/main/java/RandomMove.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/main/java/Winners.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33

44
public class Winners {
55

6-
public static List<String> findWinnersNames(List<Car> cars) {
7-
return cars.stream()
8-
.filter(car -> car.getPosition() >= 5)
9-
.map(Car::getCarName)
10-
.collect(Collectors.toList());
11-
}
6+
public static List<String> findWinnersNames(List<Car> cars) {
7+
return cars.stream()
8+
.filter(car -> car.getPosition() >= 5)
9+
.map(Car::getCarName)
10+
.collect(Collectors.toList());
11+
}
1212
}

src/test/java/WinnersTest.java

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
import static org.assertj.core.api.Assertions.assertThat;
2-
3-
import java.util.List;
41
import org.junit.jupiter.api.DisplayName;
52
import org.junit.jupiter.api.Test;
63

4+
import java.util.List;
5+
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
78
public class WinnersTest {
89

9-
@Test
10-
@DisplayName("우승자(들) 이름을 반환한다")
11-
void returnWinnerNames() {
12-
Car normalCar = new Car("Car A",new RandomMove(4,10),5);
13-
Car electricCar = new Car("Car B",new RandomMove(5,10),4);
14-
Car truck = new Car("Car C",new RandomMove(6,10),2);
15-
Car mini = new Car("Car D",new RandomMove(3,10),5);
10+
@Test
11+
@DisplayName("우승자(들) 이름을 반환한다")
12+
void returnWinnerNames() {
13+
Car normalCar = new Car("Car A", new RandomMovable(4, 10), 5);
14+
Car electricCar = new Car("Car B", new RandomMovable(5, 10), 4);
15+
Car truck = new Car("Car C", new RandomMovable(6, 10), 2);
16+
Car mini = new Car("Car D", new RandomMovable(3, 10), 5);
1617

17-
List<Car> cars = List.of(normalCar, electricCar, truck, mini);
18-
assertThat(Winners.findWinnersNames(cars)).containsExactlyInAnyOrder("Car A", "Car D");
19-
}
18+
List<Car> cars = List.of(normalCar, electricCar, truck, mini);
19+
assertThat(Winners.findWinnersNames(cars)).containsExactlyInAnyOrder("Car A", "Car D");
20+
}
2021
}

0 commit comments

Comments
 (0)