You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
2.9 KiB

import XCTest
import connect4_lib
final class GameTest: XCTestCase {
func scan() -> Int {
return 0
}
func testPlay() throws {
let rules = BasicDefaultsNoDiag()
func expect(withGrid orig: [[Int?]],
choice1: @escaping () -> Int,
choice2: @escaping () -> Int,
shouldWork: Bool) {
let p1 = Human(withId: 1, withName: "bot1", usingScanner: choice1)
let p2 = Human(withId: 2, withName: "bot2", usingScanner: choice2)
let board = Board(withGrid: orig)
let game = Game(withScanner: scan, withBoard: board!, withRules: rules!, withPlayer1: p1!, withPlayer2: p2!)
XCTAssertEqual(shouldWork, game!.play())
}
expect(withGrid: [[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil]], choice1: { return 0 }, choice2: scan, shouldWork: true)
expect(withGrid: [[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[ 1 , nil, nil, nil, nil, nil, nil]], choice1: scan, choice2: { return 3 }, shouldWork: true)
expect(withGrid: [[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[ 1 , nil, nil, 2 , nil, nil, nil]], choice1: { return -1 }, choice2: scan, shouldWork: false)
expect(withGrid: [[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[ 1 , nil, nil, 2 , nil, nil, nil]], choice1: { return 0 }, choice2: scan, shouldWork: true)
expect(withGrid: [[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[nil, nil, nil, nil, nil, nil, nil],
[ 1 , nil, nil, nil, nil, nil, nil],
[ 1 , nil, nil, 2 , nil, nil, nil]], choice1: scan, choice2: { return 7 }, shouldWork: false) }
}