-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathfmt_test.go
More file actions
105 lines (101 loc) · 2.38 KB
/
Copy pathfmt_test.go
File metadata and controls
105 lines (101 loc) · 2.38 KB
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
package apl
import (
"fmt"
"io"
"strings"
"testing"
)
func TestScanRankArray(t *testing.T) {
testCases := []struct {
in string
rank int
out []string
}{
{"", 0, []string{}},
{"", 1, []string{}},
{"", 2, []string{}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3", 0, []string{
"1", "2", "3", "4", "5", "6", "7", "8", "9", "1", "2", "3",
}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3", 1, []string{
"1 2 3 [3]",
"4 5 6 [3]",
"7 8 9 [3]",
"1 2 3 [3]",
}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3", 2, []string{
" 1 2 3\n 4 5 6 [2 3]",
" 7 8 9\n 1 2 3 [2 3]",
}},
{"1 2 3\n4 5 7\n", -1, []string{
" 1 2 3\n 4 5 7 [2 3]",
}},
{"1 2 3\n4 5 6", -1, []string{
" 1 2 3\n 4 5 6 [2 3]",
}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3\n\n", -1, []string{
" 1 2 3\n 4 5 6\n\n 7 8 9\n 1 2 3 [2 2 3]",
}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3", -1, []string{
" 1 2 3\n 4 5 6\n\n 7 8 9\n 1 2 3 [2 2 3]",
}},
{"1 2 3\n4 5 6\n\n7 8 9\n1 2 3", 3, []string{
" 1 2 3\n 4 5 6\n\n 7 8 9\n 1 2 3 [2 2 3]",
}},
{"1 2 3\n\n4 5 6\n\n7 8 9\n\n1 2 3", 1, []string{
"1 2 3 [3]",
"4 5 6 [3]",
"7 8 9 [3]",
"1 2 3 [3]",
}},
{"1 2 3\n\n4 5 6\n\n7 8 9\n\n1 2 3", 2, []string{
" 1 2 3 [1 3]",
" 4 5 6 [1 3]",
" 7 8 9 [1 3]",
" 1 2 3 [1 3]",
}},
{"1 2 3\n\n4 5 6\n\n7 8 9\n\n1 2 3", 3, []string{
" 1 2 3\n\n 4 5 6\n\n 7 8 9\n\n 1 2 3 [4 1 3]",
}},
{"[[[1 2 3],[4 5 6]],[[7 8 9],[1 2 3]]]", 2, []string{
" 1 2 3\n 4 5 6 [2 3]",
" 7 8 9\n 1 2 3 [2 3]",
}},
{"[[1,2,3],[4,5,6]]", -1, []string{
" 1 2 3\n 4 5 6 [2 3]",
}},
{"[1,2,3]", -1, []string{
"1 2 3 [3]",
}},
{"[1,2,3;4,5,6]", -1, []string{
" 1 2 3\n 4 5 6 [2 3]",
}},
}
for k, tc := range testCases {
a := New(nil)
in := strings.NewReader(tc.in)
for i := 0; ; i++ {
v, err := a.ScanRankArray(in, tc.rank)
if err == io.EOF && i == len(tc.out) {
goto next
} else if err == io.EOF {
t.Fatalf("#%d: expected %d results, got %d", k, len(tc.out), i-1)
} else if err != nil {
t.Fatalf("#%d: %s", k, err)
} else if i == len(tc.out) {
t.Fatalf("#%d: too many output values: %v", k, v)
} else {
s := ""
if _, ok := v.(Array); !ok {
s = v.String(a.Format)
} else {
s = fmt.Sprintf("%v %v", v.String(a.Format), v.(Array).Shape())
}
if s != tc.out[i] {
t.Fatalf("#%d:%d: expected:\n%s\ngot:\n%s", k, i, tc.out[i], s)
}
}
}
next:
}
}