From 70424bae30cc0fab32af3fe3d62a9f82030c4560 Mon Sep 17 00:00:00 2001 From: Adam BONAFOS Date: Tue, 11 Feb 2025 11:11:51 +0100 Subject: [PATCH] plus de test --- ...OverTest.swift => C4_IsGameOverTest.swift} | 8 +- .../TicTacToeRules/TTT_IsGameOverTest.swift | 81 +++++++++++++++++++ 2 files changed, 85 insertions(+), 4 deletions(-) rename Model/Tests/ModelTests/Connect4Rules/{IsGameOverTest.swift => C4_IsGameOverTest.swift} (94%) create mode 100644 Model/Tests/ModelTests/TicTacToeRules/TTT_IsGameOverTest.swift diff --git a/Model/Tests/ModelTests/Connect4Rules/IsGameOverTest.swift b/Model/Tests/ModelTests/Connect4Rules/C4_IsGameOverTest.swift similarity index 94% rename from Model/Tests/ModelTests/Connect4Rules/IsGameOverTest.swift rename to Model/Tests/ModelTests/Connect4Rules/C4_IsGameOverTest.swift index 018d98c..3819806 100644 --- a/Model/Tests/ModelTests/Connect4Rules/IsGameOverTest.swift +++ b/Model/Tests/ModelTests/Connect4Rules/C4_IsGameOverTest.swift @@ -1,7 +1,7 @@ import XCTest @testable import Model -final class IsGameOverTest: XCTestCase { +final class Connect4IsGameOverTest: XCTestCase { func testHorizontal() { let rules = Connect4Rules(piecesToAlign: 4) var board = Board() @@ -22,7 +22,7 @@ final class IsGameOverTest: XCTestCase { XCTAssertEqual(rules.isGameOver(board: board).winner, Token.red) } func testFullGridWithoutWin() { - let rules = TicTacToeRules(piecesToAlign: 3) + let rules = Connect4Rules(piecesToAlign: 3) var board = Board(rowsNb: 3, columnsNb: 3) board[0, 1] = .yellow @@ -69,7 +69,7 @@ final class IsGameOverTest: XCTestCase { XCTAssertEqual(isGameOver.winner, Token.red) } func testDiagonalDescending() { - let rules = TicTacToeRules(piecesToAlign: 3) + let rules = Connect4Rules(piecesToAlign: 3) var board = Board(rowsNb: 3, columnsNb: 3) // Placer les jetons pour une victoire diagonale ascendante @@ -88,7 +88,7 @@ final class IsGameOverTest: XCTestCase { } func testDiagonalAscending() { - let rules = TicTacToeRules(piecesToAlign: 3) + let rules = Connect4Rules(piecesToAlign: 3) var board = Board(rowsNb: 3, columnsNb: 3) // Placer les jetons pour une victoire diagonale descendante diff --git a/Model/Tests/ModelTests/TicTacToeRules/TTT_IsGameOverTest.swift b/Model/Tests/ModelTests/TicTacToeRules/TTT_IsGameOverTest.swift new file mode 100644 index 0000000..c17f441 --- /dev/null +++ b/Model/Tests/ModelTests/TicTacToeRules/TTT_IsGameOverTest.swift @@ -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) + } +}