🚧 BasicDefaultNoDiag rules

main
Alexis Drai 2 years ago
parent df7c27ad54
commit ad2f6537bf

@ -1,11 +1,34 @@
import Foundation
public struct BasicDefaultsNoDiag : IRules {
var minNbRows: Int
var maxNbRows: Int
var minNbCols: Int
var maxNbCols: Int
var nbChipsToAlign: Int
public let minNbRows: Int
public let maxNbRows: Int
public let minNbCols: Int
public let maxNbCols: Int
public let nbChipsToAlign: Int
public init?(withMinNbRows minNbRows: Int = 5,
withMaxNbRows maxNbRows: Int = 15,
withMinNbCols minNbCols: Int = 5,
withMaxNbCols maxNbCols: Int = 15,
withNbChipsToAlign nbChipsToAlign: Int = 4) {
guard (
minNbRows >= 3
&& minNbCols >= 3
&& maxNbRows >= minNbRows
&& maxNbCols >= minNbCols
&& nbChipsToAlign >= 2
&& nbChipsToAlign < minNbCols
&& nbChipsToAlign < minNbRows
) else { return nil }
self.minNbRows = minNbRows
self.maxNbRows = maxNbRows
self.minNbCols = minNbCols
self.maxNbCols = maxNbCols
self.nbChipsToAlign = nbChipsToAlign
}
func isGameOver(byPlayer playerId: Int, onGrid grid: [[Int?]]) -> (isOver: Bool, hasWinner: Bool, victoryTiles: [(Int, Int)]?) {
@ -85,24 +108,4 @@ public struct BasicDefaultsNoDiag : IRules {
case right
case down
}
init?(withMinNbRows minNbRows: Int = 0,
withMaxNbRows maxNbRows: Int = 15,
withMaxNbCols minNbCols: Int = 0,
withMaxNbCols maxNbCols: Int = 15,
withNbChipsToAlign nbChipsToAlign: Int = 4) {
guard (nbChipsToAlign >= 2
&& (
nbChipsToAlign < maxNbCols || nbChipsToAlign < maxNbRows
)) else { return nil }
self.minNbRows = minNbRows
self.maxNbRows = maxNbRows
self.minNbCols = minNbCols
self.maxNbCols = maxNbCols
self.nbChipsToAlign = nbChipsToAlign
}
}

@ -2,11 +2,45 @@ import XCTest
import connect4_lib
final class BasicDefaultNoDiagTest: XCTestCase {
func testInit() {
// TODO
func testInit() throws {
func expect(withMinNbRows minNbRows: Int,
withMaxNbRows maxNbRows: Int,
withMinNbCols minNbCols: Int,
withMaxNbCols maxNbCols: Int,
withNbChipsToAlign nbChipsToAlign: Int,
shouldNotBeNil: Bool) {
let rules = BasicDefaultsNoDiag(withMinNbRows: minNbRows,
withMaxNbRows: maxNbRows,
withMinNbCols: minNbCols,
withMaxNbCols: maxNbCols,
withNbChipsToAlign: nbChipsToAlign)
if !shouldNotBeNil {
XCTAssertNil(rules)
return
}
XCTAssertNotNil(rules)
XCTAssertEqual(minNbRows, rules?.minNbRows)
XCTAssertEqual(maxNbRows, rules?.maxNbRows)
XCTAssertEqual(minNbCols, rules?.minNbCols)
XCTAssertEqual(maxNbCols, rules?.maxNbCols)
XCTAssertEqual(nbChipsToAlign, rules?.nbChipsToAlign)
}
func testIsGameOver() {
// TODO
expect(withMinNbRows: 5, withMaxNbRows: 10, withMinNbCols: 5, withMaxNbCols: 10, withNbChipsToAlign: 3, shouldNotBeNil: true)
expect(withMinNbRows: 1, withMaxNbRows: 10, withMinNbCols: 5, withMaxNbCols: 10, withNbChipsToAlign: 3, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 10, withMinNbCols: 1, withMaxNbCols: 10, withNbChipsToAlign: 3, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 4, withMinNbCols: 5, withMaxNbCols: 10, withNbChipsToAlign: 3, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 10, withMinNbCols: 5, withMaxNbCols: 4, withNbChipsToAlign: 3, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 10, withMinNbCols: 5, withMaxNbCols: 10, withNbChipsToAlign: 1, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 10, withMinNbCols: 5, withMaxNbCols: 12, withNbChipsToAlign: 11, shouldNotBeNil: false)
expect(withMinNbRows: 5, withMaxNbRows: 12, withMinNbCols: 5, withMaxNbCols: 10, withNbChipsToAlign: 11, shouldNotBeNil: false)
}
func testIsGameOver() throws {
func expect() {
}
}
}

Loading…
Cancel
Save