Skip to content

Commit a8fc621

Browse files
authored
Merge pull request #5 from team-xquare/feature/1_validator
🔀 :: (#1) [validator] 다양한 매개변수로 검증할 수 있는 학번 검증 메서드 추가
2 parents 6bdb099 + a24e78e commit a8fc621

File tree

2 files changed

+113
-1
lines changed

2 files changed

+113
-1
lines changed

lib/src/main/java/io/xquare/validator/StudentValidator.java

Lines changed: 52 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,63 @@ public static boolean isEmailValid(String email) {
2424
}
2525

2626
/**
27-
* 학번을 통해 해당 학년이 맞는지 검사합니다.
27+
* 학번을 통해 해당 학년이 맞는지 검사합니다.
28+
* 문자열 길이가 4자리를 넘었을 경우에는 검증에 실패합니다.
2829
* @param gcn 학번
2930
* @param grade 학년
3031
* @return true: 검증 성공, false: 검증 실패
3132
*/
3233
public static boolean isGradeValid(String gcn, Integer grade) {
3334
return gcn.matches(grade + "[0-9]*$") && gcn.length() < 5;
3435
}
36+
37+
/**
38+
* 학번을 통해 해당 학년이 맞는지 검사합니다.
39+
* 문자열 길이가 4자리를 넘었을 경우에는 검증에 실패합니다.
40+
* @param gcn 학번
41+
* @param grades 학년
42+
* @return true: 검증 성공, false: 검증 실패
43+
*/
44+
public static boolean isGradeValid(String gcn, Integer... grades) {
45+
if (gcn.length() > 4)
46+
return false;
47+
48+
for (int grade : grades) {
49+
if (gcn.matches(grade + "[0-9]*$"))
50+
return true;
51+
}
52+
53+
return false;
54+
}
55+
56+
/**
57+
* 학번을 통해 해당 학년이 맞는지 검사합니다.
58+
* 문자열 길이가 4자리를 넘었을 경우에는 검증에 실패합니다.
59+
* @param gcn 학번
60+
* @param grade 학년
61+
* @return true: 검증 성공, false: 검증 실패
62+
*/
63+
public static boolean isGradeValid(Integer gcn, Integer grade) {
64+
return gcn / 1000 == grade && gcn / 10000 == 0;
65+
}
66+
67+
/**
68+
* 학번을 통해 해당 학년이 맞는지 검사합니다.
69+
* 문자열 길이가 4자리를 넘었을 경우에는 검증에 실패합니다.
70+
* @param gcn 학번
71+
* @param grades 학년
72+
* @return true: 검증 성공, false: 검증 실패
73+
*/
74+
public static boolean isGradeValid(Integer gcn, Integer... grades) {
75+
if (gcn / 10000 != 0) {
76+
return false;
77+
}
78+
79+
for (int grade : grades) {
80+
if (gcn / 1000 == grade)
81+
return true;
82+
}
83+
84+
return false;
85+
}
3586
}

lib/src/test/groovy/io/xquare/validator/StudentValidatorSpec.groovy

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ class StudentValidatorSpec extends Specification {
4242

4343
}
4444

45+
@Unroll
4546
def "IsGradeValid 반환 값이 올바른지 검증 [학번: #gcn, 학년: #grade, 예상 결과값: #expectedResult]"() {
4647
when:
4748
boolean result = StudentValidator.isGradeValid(gcn, grade)
@@ -59,4 +60,64 @@ class StudentValidatorSpec extends Specification {
5960
"2304" | 1 | false
6061
"23005" | 2 | false
6162
}
63+
64+
@Unroll
65+
def "IsGradeValid 다수의 학년 조건을 넣을때 반환 값이 올바른지 검증 [학번: #gcn, 학년1: #grade1, 학년2: #grade2, 예상 결과값: #expectedResult]"() {
66+
when:
67+
boolean result = StudentValidator.isGradeValid(gcn, grade1, grade2)
68+
69+
then:
70+
result == expectedResult
71+
72+
where:
73+
gcn | grade1 | grade2 | expectedResult
74+
// Must return true
75+
"2304" | 1 | 2 | true
76+
"1302" | 1 | 3 | true
77+
78+
// Must return false
79+
"2304" | 1 | 3 | false
80+
"13021" | 1 | 2 | false
81+
}
82+
83+
@Unroll
84+
def "IsGradeValid 정수형으로 학년 조건을 넣을때 반환 값이 올바른지 검증 [학번: #gcn, 학년: #grade, 예상 결과값: #expectedResult]"() {
85+
when:
86+
boolean result = StudentValidator.isGradeValid(gcn, grade)
87+
88+
then:
89+
result == expectedResult
90+
91+
where:
92+
gcn | grade | expectedResult
93+
// Must return true
94+
1202 | 1 | true
95+
3304 | 3 | true
96+
97+
// Must return false
98+
12025 | 1 | false
99+
1202 | 2 | false
100+
3040 | 1 | false
101+
}
102+
103+
@Unroll
104+
def "IsGradeValid 정수형으로 다수의 학년 조건을 넣을때 반환 값이 올바른지 검증 [학번: #gcn, 학년1: #grade1, 학년2: #grade2, 예상 결과값: #expectedResult]"() {
105+
when:
106+
boolean result = StudentValidator.isGradeValid(gcn, grade1, grade2)
107+
108+
then:
109+
result == expectedResult
110+
111+
where:
112+
gcn | grade1 | grade2 | expectedResult
113+
// Must return true
114+
1202 | 1 | 2 | true
115+
2304 | 2 | 3 | true
116+
3401 | 3 | 1 | true
117+
118+
// Must return false
119+
1203 | 2 | 3 | false
120+
23010 | 1 | 2 | false
121+
3104 | 1 | 2 | false
122+
}
62123
}

0 commit comments

Comments
 (0)