Skip to content

Commit dcce21d

Browse files
committed
test: BaseballGameService 게임 로직 테스트 추가
1 parent 4b34605 commit dcce21d

2 files changed

Lines changed: 96 additions & 0 deletions

File tree

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.kakao.onboarding.precource.dukeyun.baseball.baseball;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import com.kakao.onboarding.precource.dukeyun.baseball.mock.TestBaseballNumberGenerator;
6+
import java.util.List;
7+
import org.junit.jupiter.api.BeforeEach;
8+
import org.junit.jupiter.api.DisplayNameGeneration;
9+
import org.junit.jupiter.api.DisplayNameGenerator;
10+
import org.junit.jupiter.api.Test;
11+
12+
@DisplayNameGeneration(DisplayNameGenerator.ReplaceUnderscores.class)
13+
class BaseballGameServiceTest {
14+
15+
private BaseballGameService baseballGameService;
16+
17+
@BeforeEach
18+
public void init() {
19+
baseballGameService = new BaseballGameService(new TestBaseballNumberGenerator(List.of(1, 2, 3)));
20+
baseballGameService.init();
21+
}
22+
23+
@Test
24+
public void 정답_시_결과_객체에_클리어_정보를_반환한다() throws Exception {
25+
// given
26+
BaseballGameTurnInput input = new BaseballGameTurnInput("123");
27+
28+
// when
29+
BaseballGameTurnResult result = (BaseballGameTurnResult) baseballGameService.playTurn(input);
30+
31+
//then
32+
assertThat(result.isGameCleared()).isTrue();
33+
assertThat(result.getNumBall()).isEqualTo(0);
34+
assertThat(result.getNumStrike()).isEqualTo(3);
35+
}
36+
37+
@Test
38+
public void 정답이_아닐_시_결과_객체에_클리어_실패_정보를_반환한다() throws Exception {
39+
// given
40+
BaseballGameTurnInput input = new BaseballGameTurnInput("132");
41+
42+
// when
43+
BaseballGameTurnResult result = (BaseballGameTurnResult) baseballGameService.playTurn(input);
44+
45+
//then
46+
assertThat(result.isGameCleared()).isFalse();
47+
assertThat(result.getNumBall()).isEqualTo(2);
48+
assertThat(result.getNumStrike()).isEqualTo(1);
49+
}
50+
51+
@Test
52+
public void 모두_틀리면_볼과_스트라이크_모두_0이다() throws Exception {
53+
// given
54+
BaseballGameTurnInput input = new BaseballGameTurnInput("456");
55+
56+
// when
57+
BaseballGameTurnResult result = (BaseballGameTurnResult) baseballGameService.playTurn(input);
58+
59+
//then
60+
assertThat(result.isGameCleared()).isFalse();
61+
assertThat(result.getNumBall()).isEqualTo(0);
62+
assertThat(result.getNumStrike()).isEqualTo(0);
63+
}
64+
65+
@Test
66+
public void 모두_자리만_다르면_3볼이다() throws Exception {
67+
// given
68+
BaseballGameTurnInput input = new BaseballGameTurnInput("312");
69+
70+
// when
71+
BaseballGameTurnResult result = (BaseballGameTurnResult) baseballGameService.playTurn(input);
72+
73+
//then
74+
assertThat(result.isGameCleared()).isFalse();
75+
assertThat(result.getNumBall()).isEqualTo(3);
76+
assertThat(result.getNumStrike()).isEqualTo(0);
77+
}
78+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.kakao.onboarding.precource.dukeyun.baseball.mock;
2+
3+
import com.kakao.onboarding.precource.dukeyun.baseball.baseball.BaseballNumber;
4+
import com.kakao.onboarding.precource.dukeyun.baseball.baseball.BaseballNumberGenerator;
5+
import java.util.List;
6+
7+
public class TestBaseballNumberGenerator implements BaseballNumberGenerator {
8+
private final List<Integer> fixedNumbers;
9+
10+
public TestBaseballNumberGenerator(List<Integer> fixedNumbers) {
11+
this.fixedNumbers = fixedNumbers;
12+
}
13+
14+
@Override
15+
public BaseballNumber generate() {
16+
return new BaseballNumber(fixedNumbers);
17+
}
18+
}

0 commit comments

Comments
 (0)