-
Notifications
You must be signed in to change notification settings - Fork 174
Expand file tree
/
Copy pathInputValidatorTest.java
More file actions
75 lines (64 loc) · 2.77 KB
/
InputValidatorTest.java
File metadata and controls
75 lines (64 loc) · 2.77 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
75
package baseball;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.assertj.core.api.Assertions.assertThatCode;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
class InputValidatorTest {
private final InputValidator validator = new InputValidator();
@Test
@DisplayName("정상 입력: 서로 다른 3자리 숫자는 통과해야 한다")
void inputNormal() {
assertThatCode(() -> validator.validate("123"))
.doesNotThrowAnyException();
}
@ParameterizedTest
@ValueSource(strings = {"12", "1234"})
@DisplayName("예외: 3자리가 아닌 숫자 입력 시 예외 발생")
void inputLongCase(String input) {
assertThatThrownBy(() -> validator.validate(input))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("[ERROR]");
}
@ParameterizedTest
@ValueSource(strings = {"a12", "kakao", "1 3"})
@DisplayName("예외: 숫자가 아닌 문자 입력 시 예외 발생")
void inputStringCase(String input) {
assertThatThrownBy(() -> validator.validate(input))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("[ERROR]");
}
@ParameterizedTest
@ValueSource(strings = {"112", "121", "333"})
@DisplayName("예외: 중복된 숫자가 있으면 예외 발생")
void inputDuplicateNum(String input) {
assertThatThrownBy(() -> validator.validate(input))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("[ERROR]");
}
@ParameterizedTest
@ValueSource(strings = {"012", "109"})
@DisplayName("예외: 0이 포함된 숫자 입력 시 예외 발생")
void inputIncludeZeroCase(String input) {
assertThatThrownBy(() -> validator.validate(input))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("[ERROR]");
}
@Test
@DisplayName("재시작 정상: 1 또는 2 입력 시 통과")
void inputRedoCase() {
assertThatCode(() -> validator.validateRestart("1"))
.doesNotThrowAnyException();
assertThatCode(() -> validator.validateRestart("2"))
.doesNotThrowAnyException();
}
@ParameterizedTest
@ValueSource(strings = {"0", "3", "a", "start"})
@DisplayName("재시작 예외: 1, 2가 아닌 값 입력 시 예외 발생")
void inputWrongRedoCase(String input) {
assertThatThrownBy(() -> validator.validateRestart(input))
.isInstanceOf(IllegalArgumentException.class)
.hasMessageContaining("[ERROR]");
}
}