parent
da647361e7
commit
70424bae30
@ -0,0 +1,81 @@
|
||||
import XCTest
|
||||
@testable import Model
|
||||
|
||||
final class TicTacToeIsGameOverTest: XCTestCase {
|
||||
|
||||
var rules: TicTacToeRules!
|
||||
var board: Board!
|
||||
|
||||
override func setUp() {
|
||||
super.setUp()
|
||||
rules = TicTacToeRules(piecesToAlign: 3) // Tic-Tac-Toe classique
|
||||
board = Board(rowsNb: 3, columnsNb: 3)
|
||||
}
|
||||
|
||||
func testHorizontalWin() {
|
||||
board[0, 0] = .red
|
||||
XCTAssertFalse(rules.isGameOver(board: board).result)
|
||||
|
||||
board[0, 1] = .red
|
||||
XCTAssertFalse(rules.isGameOver(board: board).result)
|
||||
|
||||
board[0, 2] = .red // 3 en ligne, victoire
|
||||
|
||||
let isGameOver = rules.isGameOver(board: board)
|
||||
XCTAssertTrue(isGameOver.result)
|
||||
XCTAssertEqual(isGameOver.winner, .red)
|
||||
}
|
||||
|
||||
func testFullGridWithoutWin() {
|
||||
board[0, 1] = .yellow
|
||||
board[0, 0] = .red
|
||||
|
||||
board[1, 1] = .yellow
|
||||
board[0, 2] = .red
|
||||
|
||||
board[1, 2] = .yellow
|
||||
board[1, 0] = .red
|
||||
|
||||
board[2, 0] = .yellow
|
||||
board[2, 1] = .red
|
||||
|
||||
board[2, 2] = .yellow
|
||||
|
||||
// Personne ne gagne, mais la partie est terminée
|
||||
let isGameOver = rules.isGameOver(board: board)
|
||||
XCTAssertTrue(isGameOver.result)
|
||||
XCTAssertEqual(isGameOver.winner, Token.empty)
|
||||
}
|
||||
|
||||
func testVerticalWin() {
|
||||
board[0, 0] = .red
|
||||
board[1, 0] = .red
|
||||
board[2, 0] = .red // 3 en colonne, victoire
|
||||
|
||||
let isGameOver = rules.isGameOver(board: board)
|
||||
XCTAssertTrue(isGameOver.result)
|
||||
XCTAssertEqual(isGameOver.winner, .red)
|
||||
}
|
||||
|
||||
func testDiagonalDescendingWin() {
|
||||
// Diagonale \
|
||||
board[0, 0] = .red
|
||||
board[1, 1] = .red
|
||||
board[2, 2] = .red // 3 en diagonale, victoire
|
||||
|
||||
let isGameOver = rules.isGameOver(board: board)
|
||||
XCTAssertTrue(isGameOver.result)
|
||||
XCTAssertEqual(isGameOver.winner, .red)
|
||||
}
|
||||
|
||||
func testDiagonalAscendingWin() {
|
||||
// Diagonale /
|
||||
board[2, 0] = .yellow
|
||||
board[1, 1] = .yellow
|
||||
board[0, 2] = .yellow // 3 en diagonale, victoire
|
||||
|
||||
let isGameOver = rules.isGameOver(board: board)
|
||||
XCTAssertTrue(isGameOver.result)
|
||||
XCTAssertEqual(isGameOver.winner, .yellow)
|
||||
}
|
||||
}
|
Loading…
Reference in new issue