-
Notifications
You must be signed in to change notification settings - Fork 5
/
sudoku_fuzz_test.go
38 lines (35 loc) · 912 Bytes
/
sudoku_fuzz_test.go
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
package sudoku
import (
"strings"
"testing"
)
func FuzzParseboard(f *testing.F) {
f.Add("4.....8.5.3..........7......2.....6.....8.4......1.......6.3.7.5..2.....1.4......")
f.Add(DisplayAsInput(EmptyBoard()))
f.Add(`
. . . |. . 6 |. . .
. 5 9 |. . . |. . 8
2 . . |. . 8 |. . .
------+------+------
. 4 5 |. . . |. . .
. . 3 |. . . |. . .
. . 6 |. . 3 |. 5 4
------+------+------
. . . |3 2 5 |. . 6
. . . |. . . |. . .
. . . |. . . |. . .`)
f.Add("1234")
f.Add("")
f.Add(strings.Repeat("1", 81))
f.Fuzz(func(t *testing.T, bstr string) {
// Mostly checks that there are no panics, and ParseBoard returns either
// a board or and error, but not both.
b, err := ParseBoard(bstr, true)
if b != nil && err != nil {
t.Fatalf("expect b or err to be nil, got b=%v, err=%v", b, err)
}
if b == nil && err == nil {
t.Fatalf("expect b or err to be non-nil, got b=%v, err=%v", b, err)
}
})
}