diff --git a/Connect4/connect4_lib/Sources/connect4_lib/rules/IRules.swift b/Connect4/connect4_lib/Sources/connect4_lib/rules/IRules.swift index 1ac68ac..0e6d012 100644 --- a/Connect4/connect4_lib/Sources/connect4_lib/rules/IRules.swift +++ b/Connect4/connect4_lib/Sources/connect4_lib/rules/IRules.swift @@ -9,13 +9,51 @@ public protocol IRules { func isGameOver(byPlayer playerId: Int, onGrid grid: [[Int?]]) -> (isOver: Bool, result: Result) // TODO plug in the EnumResult // and - // isGameOver(c) -> (Bool, EnumResult) // getNextPlayer(c) -> Int // isValid(c) -> Bool } -public enum Result { +public enum Result : Equatable { + public static func == (lhs: Result, rhs: Result) -> Bool { + switch lhs { + case .notOver : + + switch rhs { + case .notOver : return true + default : return false + } + + case .deadlocked : + + switch rhs { + case .deadlocked : return true + default : return false + } + + case .won(let lPlayerId, let lVictoryTiles) : + + switch rhs { + case .won(let rPlayerId, let rVictoryTiles) : + if (lPlayerId != rPlayerId || lVictoryTiles == nil || rVictoryTiles == nil) { + return false + } + + for n in 0..