Skip to content

Commit 7de124a

Browse files
committed
model (part 2) with JUnit testing
1 parent 4f12521 commit 7de124a

File tree

5 files changed

+87
-18
lines changed

5 files changed

+87
-18
lines changed

.idea/gradle.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/vcs.xml

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/src/main/java/com/example/tictactoemvc/TicTacToeGame.kt

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.example.tictactoemvc
33
class TicTacToeGame {
44

55
private var board: Array<Array<Mark>> = Array(ROWS) { Array(COLUMNS) { Mark.MARK_NONE } }
6-
private var gameState: GameState = GameState.X_TURN
6+
var gameState: GameState = GameState.X_TURN
77

88
companion object {
99
val ROWS = 3
@@ -44,4 +44,28 @@ class TicTacToeGame {
4444
}
4545
return ""
4646
}
47+
48+
fun pressButtonAt(row: Int, column: Int) {
49+
if (row !in 0 until ROWS || column !in 0 until COLUMNS) {
50+
return
51+
}
52+
53+
if (board[row][column] != Mark.MARK_NONE) {
54+
return
55+
}
56+
57+
if (gameState == GameState.X_TURN) {
58+
board[row][column] = Mark.MARK_X
59+
gameState = GameState.O_TURN
60+
checkForWin()
61+
} else if (gameState == GameState.O_TURN) {
62+
board[row][column] = Mark.MARK_0
63+
gameState = GameState.X_TURN
64+
checkForWin()
65+
}
66+
}
67+
68+
private fun checkForWin() {
69+
//TODO
70+
}
4771
}

app/src/test/java/com/example/tictactoemvc/ExampleUnitTest.kt

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.example.tictactoemvc
2+
3+
import org.junit.Test
4+
5+
import org.junit.Assert.*
6+
7+
/**
8+
* unit test for TicTacToe, which will execute on the development machine (host).
9+
*
10+
* See [testing documentation](http://d.android.com/tools/testing).
11+
*/
12+
class TicTacToeGameTest {
13+
@Test
14+
fun boardIsReset() {
15+
val game = TicTacToeGame()
16+
17+
for (row in 0 until TicTacToeGame.ROWS) {
18+
for (column in 0 until TicTacToeGame.COLUMNS) {
19+
assertEquals("", game.stringForButtonAt(row, column))
20+
}
21+
}
22+
23+
assertEquals(TicTacToeGame.GameState.X_TURN, game.gameState)
24+
}
25+
26+
@Test
27+
fun pressRegisters() {
28+
val game = TicTacToeGame()
29+
30+
game.pressButtonAt(1, 2)
31+
assertEquals("X", game.stringForButtonAt(1, 2))
32+
assertEquals(TicTacToeGame.GameState.O_TURN, game.gameState)
33+
34+
game.pressButtonAt(2, 2)
35+
assertEquals(TicTacToeGame.GameState.X_TURN, game.gameState)
36+
assertEquals("O", game.stringForButtonAt(2, 2))
37+
38+
game.pressButtonAt(2, 2)
39+
assertEquals("O", game.stringForButtonAt(2, 2))
40+
}
41+
42+
@Test
43+
fun pressOutOfBoundsIsIgnored() {
44+
val game = TicTacToeGame()
45+
46+
assertEquals(TicTacToeGame.GameState.X_TURN, game.gameState)
47+
game.pressButtonAt(-1, 0)
48+
assertEquals(TicTacToeGame.GameState.X_TURN, game.gameState)
49+
50+
game.pressButtonAt(0, -1)
51+
game.pressButtonAt(3, 0)
52+
game.pressButtonAt(0, 3)
53+
assertEquals(TicTacToeGame.GameState.X_TURN, game.gameState)
54+
}
55+
}

0 commit comments

Comments
 (0)