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