|
|
@ -21,22 +21,33 @@ final class IsGameOverTest: XCTestCase {
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*func testFullGridWithoutWin() {
|
|
|
|
func testFullGridWithoutWin() {
|
|
|
|
// A REVOIR
|
|
|
|
let rules = TicTacToeRules(piecesToAlign: 3)
|
|
|
|
let rules = Connect4Rules(piecesToAlign: 4)
|
|
|
|
var board = Board(rowsNb: 3, columnsNb: 3)
|
|
|
|
var board = Board()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Remplir une grille complète sans qu'il y ait de victoire
|
|
|
|
board[0, 1] = .yellow
|
|
|
|
for row in 0..<board.rowNb {
|
|
|
|
board[0, 0] = .red
|
|
|
|
for col in 0..<board.columnNb {
|
|
|
|
XCTAssertFalse(rules.isGameOver(board: board).result)
|
|
|
|
board[row, col] = (row + col) % 2 == 0 ? Token.red : Token.yellow
|
|
|
|
|
|
|
|
}
|
|
|
|
board[1, 1] = .yellow
|
|
|
|
}
|
|
|
|
board[0, 2] = .red
|
|
|
|
|
|
|
|
XCTAssertFalse(rules.isGameOver(board: board).result)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
board[1, 2] = .yellow
|
|
|
|
|
|
|
|
board[1, 0] = .red
|
|
|
|
|
|
|
|
XCTAssertFalse(rules.isGameOver(board: board).result)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
board[2, 0] = .yellow
|
|
|
|
|
|
|
|
board[2, 1] = .red
|
|
|
|
|
|
|
|
XCTAssertFalse(rules.isGameOver(board: board).result)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
board[2, 2] = .yellow
|
|
|
|
|
|
|
|
|
|
|
|
// Personne ne gagne, mais la partie est terminée
|
|
|
|
// Personne ne gagne, mais la partie est terminée
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
let isGameOver = rules.isGameOver(board: board)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.empty)
|
|
|
|
XCTAssertTrue(isGameOver.result)
|
|
|
|
}*/
|
|
|
|
XCTAssertEqual(isGameOver.winner, Token.empty)
|
|
|
|
|
|
|
|
}
|
|
|
|
func testVertical() {
|
|
|
|
func testVertical() {
|
|
|
|
let rules = Connect4Rules(piecesToAlign: 4)
|
|
|
|
let rules = Connect4Rules(piecesToAlign: 4)
|
|
|
|
var board = Board()
|
|
|
|
var board = Board()
|
|
|
@ -53,46 +64,44 @@ final class IsGameOverTest: XCTestCase {
|
|
|
|
board[3, 0] = Token.red
|
|
|
|
board[3, 0] = Token.red
|
|
|
|
|
|
|
|
|
|
|
|
// Le rouge gagne
|
|
|
|
// Le rouge gagne
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
let isGameOver = rules.isGameOver(board: board)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red)
|
|
|
|
XCTAssertTrue(isGameOver.result)
|
|
|
|
|
|
|
|
XCTAssertEqual(isGameOver.winner, Token.red)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
/*func testDiagonalAscending() {
|
|
|
|
func testDiagonalDescending() {
|
|
|
|
let rules = Connect4Rules(piecesToAlign: 4)
|
|
|
|
let rules = TicTacToeRules(piecesToAlign: 3)
|
|
|
|
var board = Board()
|
|
|
|
var board = Board(rowsNb: 3, columnsNb: 3)
|
|
|
|
|
|
|
|
|
|
|
|
// Placer les jetons pour une victoire diagonale ascendante
|
|
|
|
// Placer les jetons pour une victoire diagonale ascendante
|
|
|
|
board[0, 0] = Token.red
|
|
|
|
board[2, 0] = Token.red
|
|
|
|
board[1, 1] = Token.yellow
|
|
|
|
board[2, 1] = Token.yellow
|
|
|
|
board[1, 0] = Token.red
|
|
|
|
|
|
|
|
board[2, 2] = Token.yellow
|
|
|
|
board[1, 1] = Token.red
|
|
|
|
board[2, 1] = Token.red
|
|
|
|
board[0, 0] = Token.yellow
|
|
|
|
board[3, 3] = Token.yellow
|
|
|
|
|
|
|
|
board[3, 2] = Token.red
|
|
|
|
board[0, 2] = Token.red
|
|
|
|
board[3, 1] = Token.yellow
|
|
|
|
|
|
|
|
board[3, 0] = Token.red
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Rouge gagne ici
|
|
|
|
// Rouge gagne ici
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
let isGameOver = rules.isGameOver(board: board)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red)
|
|
|
|
XCTAssertTrue(isGameOver.result)
|
|
|
|
}*/
|
|
|
|
XCTAssertEqual(isGameOver.winner, Token.red)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*func testDiagonalDescending() {
|
|
|
|
func testDiagonalAscending() {
|
|
|
|
let rules = Connect4Rules(piecesToAlign: 4)
|
|
|
|
let rules = TicTacToeRules(piecesToAlign: 3)
|
|
|
|
var board = Board()
|
|
|
|
var board = Board(rowsNb: 3, columnsNb: 3)
|
|
|
|
|
|
|
|
|
|
|
|
// Placer les jetons pour une victoire diagonale descendante
|
|
|
|
// Placer les jetons pour une victoire diagonale descendante
|
|
|
|
board[3, 0] = Token.red
|
|
|
|
board[0, 2] = .yellow
|
|
|
|
board[2, 1] = Token.yellow
|
|
|
|
board[1, 2] = .red
|
|
|
|
board[2, 0] = Token.red
|
|
|
|
|
|
|
|
board[1, 2] = Token.yellow
|
|
|
|
board[1, 1] = .yellow
|
|
|
|
board[1, 1] = Token.red
|
|
|
|
board[0, 0] = .red
|
|
|
|
board[0, 3] = Token.yellow
|
|
|
|
|
|
|
|
board[0, 2] = Token.red
|
|
|
|
board[2, 0] = .yellow
|
|
|
|
board[0, 1] = Token.yellow
|
|
|
|
|
|
|
|
board[0, 0] = Token.red
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Rouge gagne ici
|
|
|
|
// Rouge gagne ici
|
|
|
|
XCTAssertTrue(rules.isGameOver(board: board).result)
|
|
|
|
let isGameOver = rules.isGameOver(board: board)
|
|
|
|
XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red)
|
|
|
|
XCTAssertTrue(isGameOver.result)
|
|
|
|
}*/
|
|
|
|
XCTAssertEqual(isGameOver.winner, Token.yellow)
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|