-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathBaseballModelTest.java
More file actions
74 lines (58 loc) · 2.45 KB
/
BaseballModelTest.java
File metadata and controls
74 lines (58 loc) · 2.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package baseball;
import static org.assertj.core.api.Assertions.assertThat;
import baseball.model.BaseballNumbers;
import baseball.model.GameResult;
import baseball.model.NumberGenerator;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class BaseballModelTest {
@Test
@DisplayName("생성된 숫자는 반드시 3자리여야 한다")
void generate_SizeTest() {
NumberGenerator generator = new NumberGenerator();
List<Integer> numbers = generator.createRandomNumbers();
assertThat(numbers).hasSize(3);
}
@Test
@DisplayName("생성된 숫자는 모두 1에서 9 사이의 값이어야 한다")
void generate_RangeTest() {
NumberGenerator generator = new NumberGenerator();
List<Integer> numbers = generator.createRandomNumbers();
// 모든 숫자가 1 이상 9 이하인지 검증
for (int number : numbers) {
assertThat(number).isBetween(1, 9);
}
}
@Test
@DisplayName("생성된 3개의 숫자는 서로 중복되지 않아야 한다")
void generate_DuplicateTest() {
NumberGenerator generator = new NumberGenerator();
List<Integer> numbers = generator.createRandomNumbers();
// 중복을 허용하지 않는 Set에 넣었을 때도 크기가 3이어야 함
Set<Integer> uniqueNumbers = new HashSet<Integer>(numbers);
assertThat(uniqueNumbers).hasSize(3);
}
@Test
@DisplayName("숫자와 위치가 같으면 '스트라이크'로 판정된다")
void compare_StrikeTest() {
BaseballNumbers computer = new BaseballNumbers(List.of(1, 2, 3));
BaseballNumbers player = new BaseballNumbers(List.of(1, 2, 5));
// When: 비교 로직을 실행하면
GameResult result = computer.compare(player);
// Then: 2스트라이크여야 한다
assertThat(result.getStrikes()).isEqualTo(2);
}
@Test
@DisplayName("숫자는 같지만 위치가 다르면 '볼'로 판정된다")
void compare_BallTest() {
BaseballNumbers computer = new BaseballNumbers(List.of(1, 2, 3));
BaseballNumbers player = new BaseballNumbers(List.of(3, 1, 2));
// When: 비교 로직을 실행하면
GameResult result = computer.compare(player);
// Then: 3볼 0스트라이크여야 한다
assertThat(result.getBalls()).isEqualTo(3);
}
}