Files
swift-chess/Tests/EngineTests/EngineTests.swift
2024-06-28 00:02:48 +02:00

115 lines
3.3 KiB
Swift

import XCTest
@testable import Engine
final class EngineTests: XCTestCase {
override func setUp() {
super.setUp()
}
func testPositionIndex() throws {
var rank: Int8 = 9
for i: Int8 in 0..<64 {
let file = (i % 8) + 1
if file - 1 == 0 {
rank -= 1
}
let pos: Square.Position = .init(rank: rank, file: file)
XCTAssertTrue(
pos.index == Int(i), "Expected \(i) got \(pos.index!)")
}
}
func testDiagonalMoves() throws {
let b: Bishop = .init(with: .White, on: .init(rank: 4, file: 4))
let result = [
Square.Position(rank: 5, file: 3),
Square.Position(rank: 6, file: 2),
Square.Position(rank: 7, file: 1),
Square.Position(rank: 5, file: 5),
Square.Position(rank: 6, file: 6),
Square.Position(rank: 7, file: 7),
Square.Position(rank: 8, file: 8),
Square.Position(rank: 3, file: 5),
Square.Position(rank: 2, file: 6),
Square.Position(rank: 1, file: 7),
Square.Position(rank: 3, file: 3),
Square.Position(rank: 2, file: 2),
Square.Position(rank: 1, file: 1),
]
XCTAssertEqual(result, b.pseudoLegalPositions)
}
func testLinearMoves() throws {
let r: Rook = .init(with: .White, on: .init(rank: 4, file: 4))
let result = [
Square.Position(rank: 5, file: 4),
Square.Position(rank: 6, file: 4),
Square.Position(rank: 7, file: 4),
Square.Position(rank: 8, file: 4),
Square.Position(rank: 4, file: 5),
Square.Position(rank: 4, file: 6),
Square.Position(rank: 4, file: 7),
Square.Position(rank: 4, file: 8),
Square.Position(rank: 3, file: 4),
Square.Position(rank: 2, file: 4),
Square.Position(rank: 1, file: 4),
Square.Position(rank: 4, file: 3),
Square.Position(rank: 4, file: 2),
Square.Position(rank: 4, file: 1),
]
XCTAssertEqual(result, r.pseudoLegalPositions)
}
func testKingMoves() throws {
let k: King = .init(with: .White, on: .init(rank: 2, file: 8))
let result = [
Square.Position(rank: 3, file: 8),
Square.Position(rank: 1, file: 8),
Square.Position(rank: 1, file: 7),
Square.Position(rank: 2, file: 7),
Square.Position(rank: 3, file: 7),
]
XCTAssertEqual(result, k.pseudoLegalPositions)
}
func testKnightMoves() throws {
let n: Knight = .init(with: .White, on: .init(rank: 4, file: 4))
let result = [
Square.Position(rank: 6, file: 5),
Square.Position(rank: 6, file: 3),
Square.Position(rank: 2, file: 5),
Square.Position(rank: 2, file: 3),
Square.Position(rank: 5, file: 6),
Square.Position(rank: 5, file: 2),
Square.Position(rank: 3, file: 6),
Square.Position(rank: 3, file: 2),
]
XCTAssertEqual(result, n.pseudoLegalPositions)
}
func testPawnMoves() throws {
let pw: Pawn = .init(with: .White, on: .init(rank: 4, file: 4))
var result = [
Square.Position(rank: 5, file: 4),
Square.Position(rank: 6, file: 4),
Square.Position(rank: 5, file: 5),
Square.Position(rank: 5, file: 3),
]
XCTAssertEqual(result, pw.pseudoLegalPositions)
let pb: Pawn = .init(with: .Black, on: .init(rank: 4, file: 4))
result = [
Square.Position(rank: 3, file: 4),
Square.Position(rank: 2, file: 4),
Square.Position(rank: 3, file: 5),
Square.Position(rank: 3, file: 3),
]
XCTAssertEqual(result, pb.pseudoLegalPositions)
}
// func testBoard() throws {
// let board = Board()
// }
override func tearDown() {
super.tearDown()
}
}