Skip to content

Commit

Permalink
tests: use Swift Testing
Browse files Browse the repository at this point in the history
  • Loading branch information
mesqueeb committed Jul 10, 2024
1 parent a39c81b commit 578e6be
Show file tree
Hide file tree
Showing 3 changed files with 105 additions and 102 deletions.
202 changes: 100 additions & 102 deletions FuegoOnAppleSilicon/Tests/Helpers.swift
Original file line number Diff line number Diff line change
@@ -1,117 +1,115 @@
@testable import FuegoOnAppleSilicon
import XCTest

final class FuegoOnAppleSiliconTests: XCTestCase {
func testTileIndexesToGoBoardCoordinate() {
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(0, 0)).rawValue, "A1", "Expected A1 for tile (0, 0)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(18, 18)).rawValue, "T19", "Expected T19 for tile (18, 18)")
// Test tiles around 'I'
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(0, 7)).rawValue, "H1", "Expected H1 for tile (0, 7)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(0, 8)).rawValue, "J1", "Expected J1 for tile (0, 8)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(1, 7)).rawValue, "H2", "Expected H2 for tile (1, 7)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(1, 8)).rawValue, "J2", "Expected J2 for tile (1, 8)")
// Additional tests to ensure surrounding tiles are correctly converted
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(0, 6)).rawValue, "G1", "Expected G1 for tile (0, 6)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(0, 9)).rawValue, "K1", "Expected K1 for tile (0, 9)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(1, 6)).rawValue, "G2", "Expected G2 for tile (1, 6)")
XCTAssertEqual(tileToGoBoardCoordinate(TileIndexes(1, 9)).rawValue, "K2", "Expected K2 for tile (1, 9)")
}
import Testing

@Test func tileIndexesToGoBoardCoordinate() {
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(0, 0)).rawValue == "A1", "Expected A1 for tile (0, 0)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(18, 18)).rawValue == "T19", "Expected T19 for tile (18, 18)")
// Test tiles around 'I'
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(0, 7)).rawValue == "H1", "Expected H1 for tile (0, 7)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(0, 8)).rawValue == "J1", "Expected J1 for tile (0, 8)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(1, 7)).rawValue == "H2", "Expected H2 for tile (1, 7)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(1, 8)).rawValue == "J2", "Expected J2 for tile (1, 8)")
// Additional tests to ensure surrounding tiles are correctly converted
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(0, 6)).rawValue == "G1", "Expected G1 for tile (0, 6)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(0, 9)).rawValue == "K1", "Expected K1 for tile (0, 9)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(1, 6)).rawValue == "G2", "Expected G2 for tile (1, 6)")
#expect(FuegoOnAppleSilicon.tileToGoBoardCoordinate(TileIndexes(1, 9)).rawValue == "K2", "Expected K2 for tile (1, 9)")
}

func testGoBoardCoordinateToTileIndexes() {
XCTAssertEqual(goBoardCoordinateToTileIndexes(.A1), TileIndexes(0, 0), "Expected tile (0, 0) for coordinate A1")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.T19), TileIndexes(18, 18), "Expected tile (18, 18) for coordinate T19")
// Test coordinates around 'I'
XCTAssertEqual(goBoardCoordinateToTileIndexes(.H1), TileIndexes(0, 7), "Expected tile (0, 7) for coordinate H1")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.J1), TileIndexes(0, 8), "Expected tile (0, 8) for coordinate J1")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.H2), TileIndexes(1, 7), "Expected tile (1, 7) for coordinate H2")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.J2), TileIndexes(1, 8), "Expected tile (1, 8) for coordinate J2")
// Additional tests to ensure surrounding coordinates are correctly converted
XCTAssertEqual(goBoardCoordinateToTileIndexes(.G1), TileIndexes(0, 6), "Expected tile (0, 6) for coordinate G1")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.K1), TileIndexes(0, 9), "Expected tile (0, 9) for coordinate K1")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.G2), TileIndexes(1, 6), "Expected tile (1, 6) for coordinate G2")
XCTAssertEqual(goBoardCoordinateToTileIndexes(.K2), TileIndexes(1, 9), "Expected tile (1, 9) for coordinate K2")
}
@Test func goBoardCoordinateToTileIndexes() {
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.A1) == TileIndexes(0, 0), "Expected tile (0, 0) for coordinate A1")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.T19) == TileIndexes(18, 18), "Expected tile (18, 18) for coordinate T19")
// Test coordinates around 'I'
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.H1) == TileIndexes(0, 7), "Expected tile (0, 7) for coordinate H1")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.J1) == TileIndexes(0, 8), "Expected tile (0, 8) for coordinate J1")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.H2) == TileIndexes(1, 7), "Expected tile (1, 7) for coordinate H2")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.J2) == TileIndexes(1, 8), "Expected tile (1, 8) for coordinate J2")
// Additional tests to ensure surrounding coordinates are correctly converted
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.G1) == TileIndexes(0, 6), "Expected tile (0, 6) for coordinate G1")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.K1) == TileIndexes(0, 9), "Expected tile (0, 9) for coordinate K1")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.G2) == TileIndexes(1, 6), "Expected tile (1, 6) for coordinate G2")
#expect(FuegoOnAppleSilicon.goBoardCoordinateToTileIndexes(.K2) == TileIndexes(1, 9), "Expected tile (1, 9) for coordinate K2")
}

@Test func singleBlackStoneSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .E4),
(.white, .D5), (.black, .E5), (.white, .F5),
/* */ (.white, .E6)
], lastStonePlaced: .E6)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .E5)
]

func testSingleBlackStoneSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .E4),
(.white, .D5), (.black, .E5), (.white, .F5),
/* */ (.white, .E6)
], lastStonePlaced: .E6)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .E5)
]

XCTAssertEqual(deadStones.count, expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
XCTAssertTrue(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
#expect(deadStones.count == expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
#expect(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
}

func testTwoBlackStonesSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .E3),
(.white, .D4), (.black, .E4), (.white, .F4),
(.white, .D5), (.black, .E5), (.white, .F5),
/* */ (.white, .E6)
], lastStonePlaced: .E6)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .E4), (.black, .E5)
]

XCTAssertEqual(deadStones.count, expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
XCTAssertTrue(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
@Test func twoBlackStonesSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .E3),
(.white, .D4), (.black, .E4), (.white, .F4),
(.white, .D5), (.black, .E5), (.white, .F5),
/* */ (.white, .E6)
], lastStonePlaced: .E6)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .E4), (.black, .E5)
]

#expect(deadStones.count == expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
#expect(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
}

func testThreeBlackStonesWithOneFreeSpotSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3),
(.white, .C4), (.black, .D4), (.black, .E4), (.white, .F4),
(.white, .C5), /* */ (.black, .E5), (.white, .F5),
/* */ (.white, .D6), (.white, .E6)
], lastStonePlaced: .E6)
@Test func threeBlackStonesWithOneFreeSpotSurroundedByWhite() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3),
(.white, .C4), (.black, .D4), (.black, .E4), (.white, .F4),
(.white, .C5), /* */ (.black, .E5), (.white, .F5),
/* */ (.white, .D6), (.white, .E6)
], lastStonePlaced: .E6)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = []
let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = []

XCTAssertEqual(deadStones.count, expectedDeadStones.count, "The number of dead stones is not as expected.")
}
#expect(deadStones.count == expectedDeadStones.count, "The number of dead stones is not as expected.")
}

func testBlackStonesInCircleWithOneFreeSpotNotDead() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3), (.white, .F3),
(.white, .C4), (.black, .D4), (.black, .E4), (.black, .F4), (.white, .G4),
(.white, .C5), (.black, .D5), /* */ (.black, .F5), (.white, .G5),
(.white, .C6), (.black, .D6), (.black, .E6), (.black, .F6), (.white, .G6),
/* */ (.white, .D7), (.white, .E7), (.white, .F7)
], lastStonePlaced: .E7)
@Test func blackStonesInCircleWithOneFreeSpotNotDead() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3), (.white, .F3),
(.white, .C4), (.black, .D4), (.black, .E4), (.black, .F4), (.white, .G4),
(.white, .C5), (.black, .D5), /* */ (.black, .F5), (.white, .G5),
(.white, .C6), (.black, .D6), (.black, .E6), (.black, .F6), (.white, .G6),
/* */ (.white, .D7), (.white, .E7), (.white, .F7)
], lastStonePlaced: .E7)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = []
let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = []

XCTAssertEqual(deadStones.count, expectedDeadStones.count, "The number of dead stones is not as expected.")
}
#expect(deadStones.count == expectedDeadStones.count, "The number of dead stones is not as expected.")
}

func testBlackStonesInCircleWithOneWhiteStoneInMiddleDead() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3), (.white, .F3),
(.white, .C4), (.black, .D4), (.black, .E4), (.black, .F4), (.white, .G4),
(.white, .C5), (.black, .D5), (.white, .E5), (.black, .F5), (.white, .G5),
(.white, .C6), (.black, .D6), (.black, .E6), (.black, .F6), (.white, .G6),
/* */ (.white, .D7), (.white, .E7), (.white, .F7)
], lastStonePlaced: .E5)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .D4), (.black, .E4), (.black, .F4),
(.black, .D5), /* */ (.black, .F5),
(.black, .D6), (.black, .E6), (.black, .F6)
]

XCTAssertEqual(deadStones.count, expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
XCTAssertTrue(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
@Test func blackStonesInCircleWithOneWhiteStoneInMiddleDead() {
let deadStones = determineDeadStones(board: [
/* */ (.white, .D3), (.white, .E3), (.white, .F3),
(.white, .C4), (.black, .D4), (.black, .E4), (.black, .F4), (.white, .G4),
(.white, .C5), (.black, .D5), (.white, .E5), (.black, .F5), (.white, .G5),
(.white, .C6), (.black, .D6), (.black, .E6), (.black, .F6), (.white, .G6),
/* */ (.white, .D7), (.white, .E7), (.white, .F7)
], lastStonePlaced: .E5)

let expectedDeadStones: [(GoStoneColor, GoBoardCoordinate)] = [
(.black, .D4), (.black, .E4), (.black, .F4),
(.black, .D5), /* */ (.black, .F5),
(.black, .D6), (.black, .E6), (.black, .F6)
]

#expect(deadStones.count == expectedDeadStones.count, "The number of dead stones is not as expected.")
for deadStone in deadStones {
#expect(expectedDeadStones.contains(where: { $0 == deadStone }), "Unexpected dead stone found: \(deadStone)")
}
}
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ The library comes with some useful types and helper functions, be sure to check

There is a sample Xcode project provided as part of the repo that you reference here: [FuegoTestApp](./xcode/FuegoTestApp/)

### Documentation

See the [documentation](https://swiftpackageindex.com/mesqueeb/FuegoOnAppleSilicon/documentation/fuegoonapplesilicon) for more info.

## Development

### Building the XCframework
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
"version": "0.3.2",
"type": "module",
"scripts": {
"test": "swift test --enable-swift-testing",
"build": "./build-xcframework.sh",
"release": "node ./node/release.js"
},
Expand Down

0 comments on commit 578e6be

Please sign in to comment.