diff --git a/Connect4/connect4_lib/Sources/connect4_lib/rules/BasicDefaultsNoDiag.swift b/Connect4/connect4_lib/Sources/connect4_lib/rules/BasicDefaultsNoDiag.swift index ccf2a84..1988e74 100644 --- a/Connect4/connect4_lib/Sources/connect4_lib/rules/BasicDefaultsNoDiag.swift +++ b/Connect4/connect4_lib/Sources/connect4_lib/rules/BasicDefaultsNoDiag.swift @@ -30,7 +30,8 @@ public struct BasicDefaultsNoDiag : IRules { self.nbChipsToAlign = nbChipsToAlign } - func isGameOver(byPlayer playerId: Int, onGrid grid: [[Int?]]) -> (isOver: Bool, hasWinner: Bool, victoryTiles: [(Int, Int)]?) { + public func isGameOver(byPlayer playerId: Int, onGrid grid: [[Int?]]) + -> (isOver: Bool, hasWinner: Bool, victoryTiles: [(Int, Int)]?) { // first check if board is full var isFull = true diff --git a/Connect4/connect4_lib/Tests/connect4_libTests/BasicDefaultNoDiagTest.swift b/Connect4/connect4_lib/Tests/connect4_libTests/BasicDefaultNoDiagTest.swift index b958916..2126dde 100644 --- a/Connect4/connect4_lib/Tests/connect4_libTests/BasicDefaultNoDiagTest.swift +++ b/Connect4/connect4_lib/Tests/connect4_libTests/BasicDefaultNoDiagTest.swift @@ -39,8 +39,81 @@ final class BasicDefaultNoDiagTest: XCTestCase { } func testIsGameOver() throws { - func expect() { + func expect(byPlayer playerId: Int, + withGrid grid: [[Int?]], + shouldBeOver: Bool, + shouldHaveWinner: Bool, + victoryTilesShouldBe: [(Int, Int)]?) { + if let rules = BasicDefaultsNoDiag(withMinNbRows: 3, withMaxNbRows: 5, withMinNbCols: 3, withMaxNbCols: 5, withNbChipsToAlign: 3) { + + XCTAssertEqual(shouldBeOver, rules.isGameOver(byPlayer: playerId, onGrid: grid).isOver) + XCTAssertEqual(shouldHaveWinner, rules.isGameOver(byPlayer: playerId, onGrid: grid).hasWinner) + XCTAssertFalse(rules.isGameOver(byPlayer: playerId, onGrid: grid).hasWinner && !(rules.isGameOver(byPlayer: playerId, onGrid: grid).isOver)) + + if shouldHaveWinner { + XCTAssertTrue(rules.isGameOver(byPlayer: playerId, onGrid: grid).isOver) + + let actualVictoryTiles = rules.isGameOver(byPlayer: playerId, onGrid: grid).victoryTiles + + XCTAssertNotNil(actualVictoryTiles) + + for n in 0..