1
exercism fetch swift minesweeper

Tests/LinuxMain.swift

1
2
3
4
5
6
import XCTest
@testable import MinesweeperTests

XCTMain([
    testCase(MinesweeperTests.allTests),
    ])

Tests/MinesweeperTests/MinesweeperTests.swift

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
import XCTest
@testable import Minesweeper

class MinesweeperTests: XCTestCase {
    func testTransform1() {
        let input = ["+------+", "| *  * |", "|  *   |", "|    * |", "|   * *|",
                     "| *  * |", "|      |", "+------+"]
        let output = ["+------+", "|1*22*1|", "|12*322|", "| 123*2|", "|112*4*|",
                      "|1*22*2|", "|111111|", "+------+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform2() {
        let input = ["+-----+", "| * * |", "|     |", "|   * |", "|  * *|",
                     "| * * |", "+-----+"]
        let output = ["+-----+", "|1*2*1|", "|11322|", "| 12*2|", "|12*4*|",
                      "|1*3*2|", "+-----+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform3() {
        let input = ["+-----+", "| * * |", "+-----+"]
        let output = ["+-----+", "|1*2*1|", "+-----+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func test_transform4() {
        let input = ["+-+", "|*|", "| |", "|*|", "| |", "| |", "+-+"]
        let output = ["+-+", "|*|", "|2|", "|*|", "|1|", "| |", "+-+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform5() {
        let input = ["+-+", "|*|", "+-+"]
        let output = ["+-+", "|*|", "+-+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform6() {
        let input = ["+--+", "|**|", "|**|", "+--+"]
        let output = ["+--+", "|**|", "|**|", "+--+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform7() {
        let input = ["+--+", "|**|", "|**|", "+--+"]
        let output = ["+--+", "|**|", "|**|", "+--+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform8() {
        let input = ["+---+", "|***|", "|* *|", "|***|", "+---+"]
        let output = ["+---+", "|***|", "|*8*|", "|***|", "+---+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testTransform9() {
        let input = ["+-----+", "|     |", "|   * |", "|     |", "|     |",
                     "| *   |", "+-----+"]
        let output = ["+-----+", "|  111|", "|  1*1|", "|  111|", "|111  |",
                      "|1*1  |", "+-----+"]
        XCTAssertEqual(output, try! Board(input).transform())
    }

    func testDifferentLength() {
        let input = ["+-+", "| |", "|*  |", "|  |", "+-+"]

        XCTAssertThrowsError(_ = try Board(input)) { error in
            XCTAssertEqual(error as? Board.BoardError, .differentLength)
        }
    }

    func testFaultyBorder() {
        let input = ["+-----+", "*   * |", "+-- --+"]

        XCTAssertThrowsError(_ = try Board(input)) { error in
            XCTAssertEqual(error as? Board.BoardError, .faultyBorder)
        }
    }

    func testInvalidCharacter() {
        let input = ["+-----+", "|X  * |", "+-----+"]

        XCTAssertThrowsError(_ = try Board(input)) { error in
            XCTAssertEqual(error as? Board.BoardError, .invalidCharacter)
        }
    }

    static var allTests: [(String, (MinesweeperTests) -> () throws -> Void)] {
        return [
            ("testTransform1", testTransform1),
            ("testTransform2", testTransform2),
            ("testTransform3", testTransform3),
            ("test_transform4", test_transform4),
            ("testTransform5", testTransform5),
            ("testTransform6", testTransform6),
            ("testTransform7", testTransform7),
            ("testTransform8", testTransform8),
            ("testTransform9", testTransform9),
            ("testDifferentLength", testDifferentLength),
            ("testFaultyBorder", testFaultyBorder),
            ("testInvalidCharacter", testInvalidCharacter),
        ]
    }
}