1
exercism fetch scala minesweeper

src/test/scala/MinesweeperTest.scala

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
import org.scalatest.{Matchers, FunSuite}

/** @version 1.0.0 */
class MinesweeperTest extends FunSuite with Matchers {

  test("no rows") {
    Minesweeper.annotate(List()) should be(List())
  }

  test("no columns") {
    pending
    Minesweeper.annotate(List("")) should be(List(""))
  }

  test("no mines") {
    pending
    Minesweeper.annotate(List("   ",
                              "   ",
                              "   ")) should be(
      List("   ",
           "   ",
           "   "))
  }

  test("board with only mines") {
    pending
    Minesweeper.annotate(List("***",
                              "***",
                              "***")) should be(
      List("***",
           "***",
           "***"))
  }

  test("mine surrounded by spaces") {
    pending
    Minesweeper.annotate(List("   ",
                              " * ",
                              "   ")) should be(
      List("111",
           "1*1",
           "111"))
  }

  test("space surrounded by mines") {
    pending
    Minesweeper.annotate(List("***",
                              "* *",
                              "***")) should be(
      List("***",
           "*8*",
           "***"))
  }

  test("horizontal line") {
    pending
    Minesweeper.annotate(List(" * * ")) should be(List("1*2*1"))
  }

  test("horizontal line, mines at edges") {
    pending
    Minesweeper.annotate(List("*   *")) should be(List("*1 1*"))
  }

  test("vertical line") {
    pending
    Minesweeper.annotate(List(" ",
                              "*",
                              " ",
                              "*",
                              " ")) should be(
      List("1",
           "*",
           "2",
           "*",
           "1"))
  }

  test("vertical line, mines at edges") {
    pending
    Minesweeper.annotate(List("*",
                              " ",
                              " ",
                              " ",
                              "*")) should be(
      List("*",
           "1",
           " ",
           "1",
           "*"))
  }

  test("cross") {
    pending
    Minesweeper.annotate(List("  *  ",
                              "  *  ",
                              "*****",
                              "  *  ",
                              "  *  ")) should be(
      List(" 2*2 ",
           "25*52",
           "*****",
           "25*52",
           " 2*2 "))
  }

  test("large board") {
    pending
    Minesweeper.annotate(List(" *  * ",
                              "  *   ",
                              "    * ",
                              "   * *",
                              " *  * ",
                              "      ")) should be(
      List("1*22*1", 
           "12*322", 
           " 123*2", 
           "112*4*", 
           "1*22*2", 
          "111111"))
  }
}