forked from woowacourse/kotlin-omok
-
Notifications
You must be signed in to change notification settings - Fork 0
/
StonesTest.kt
52 lines (42 loc) · 1.61 KB
/
StonesTest.kt
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
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertDoesNotThrow
import org.junit.jupiter.api.assertThrows
class StonesTest {
@Test
fun `각각 다른 위치의 오목알을 가질 수 있다`() {
assertDoesNotThrow {
Stones(ONE_ONE_STONE, ONE_TWO_STONE)
}
}
@Test
fun `중복되는 위치의 오목알을 가지면 에러가 발생한다`() {
assertThrows<IllegalArgumentException> {
Stones(ONE_ONE_STONE, ONE_ONE_STONE)
}
}
@Test
fun `오목알을 놓을 수 있다`() {
val stones = Stones(ONE_ONE_STONE, ONE_TWO_STONE)
val newStones = stones.add(ONE_THREE_STONE)
assertThat(newStones).isEqualTo(Stones(ONE_ONE_STONE, ONE_TWO_STONE, ONE_THREE_STONE))
}
@Test
fun `오목알이 포함되어 있는지 판단한다`() {
val stones = Stones(ONE_ONE_STONE, ONE_TWO_STONE, ONE_THREE_STONE)
val expected = stones.hasStone(ONE_ONE_STONE)
assertThat(expected).isTrue
}
@Test
fun `오목알이 5개 이상 연이어 있으면 참을 반환한다`() {
val stones = Stones(ONE_ONE_STONE, ONE_TWO_STONE, ONE_THREE_STONE, ONE_FOUR_STONE, ONE_FIVE_STONE)
val expected = stones.checkWin(ONE_ONE_STONE)
assertThat(expected).isTrue
}
@Test
fun `오목알이 5개 미만 연이어 있으면 거짓을 반환한다`() {
val stones = Stones(ONE_ONE_STONE, ONE_TWO_STONE, ONE_THREE_STONE)
val expected = stones.checkWin(ONE_ONE_STONE)
assertThat(expected).isFalse
}
}