-
Notifications
You must be signed in to change notification settings - Fork 669
/
Copy pathleetcode_test.go
125 lines (110 loc) · 3.11 KB
/
leetcode_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
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
123
124
125
package testutil
import (
"fmt"
"github.com/stretchr/testify/assert"
"testing"
"time"
)
func Test_isTLE(t *testing.T) {
DebugTLE = 0
assert.False(t, isTLE(func() {}))
DebugTLE = time.Second
assert.False(t, isTLE(func() {}))
assert.True(t, isTLE(func() { select {} }))
}
func TestRunLeetCodeFunc(t *testing.T) {
specialF := func(a []string) []string {
fmt.Println("args:", a)
return a
}
// , in string slice
data := [][]string{{`["alice,20,800,mtv","alice,50,100,beijing"]`}}
if err := RunLeetCodeFunc(t, specialF, data, data); err != nil {
t.Error(err)
}
baseF := func(a string, b int, c float64, d bool, e byte) (string, int, float64, bool, byte) {
fmt.Println("args:", a, b, c, d, e)
return a, b, c, d, e
}
data = [][]string{{`"ac"`, `-123`, `1.23000`, `true`, `"a"`}}
if err := RunLeetCodeFunc(t, baseF, data, data); err != nil {
t.Error(err)
}
sliceF := func(a []string, b []int, c []float64, d []bool) ([]string, []int, []float64, []bool) {
fmt.Println("args:", a, b, c, d)
return a, b, c, d
}
data = [][]string{{`["ac","wa","tle"]`, `[-123,3,0,1]`, `[1.23000,3.00000]`, `[true,false,true]`}}
if err := RunLeetCodeFunc(t, sliceF, data, data); err != nil {
t.Error(err)
}
data = [][]string{{`[]`, `[]`, `[]`, `[]`}}
if err := RunLeetCodeFunc(t, sliceF, data, data); err != nil {
t.Error(err)
}
matrixF := func(a [][]string, b [][]int) ([][]string, [][]int) {
fmt.Println("args:", a, b)
return a, b
}
data = [][]string{{`[["ac","wa","tle"],["1"]]`, `[[-123,3,0,1],[1]]`}}
if err := RunLeetCodeFunc(t, matrixF, data, data); err != nil {
t.Error(err)
}
data = [][]string{{`[["ac"]]`, `[[-123]]`}}
if err := RunLeetCodeFunc(t, matrixF, data, data); err != nil {
t.Error(err)
}
data = [][]string{{`[[],[],[],[]]`, `[[],[]]`}}
if err := RunLeetCodeFunc(t, matrixF, data, data); err != nil {
t.Error(err)
}
data = [][]string{{`[[]]`, `[]`}}
if err := RunLeetCodeFunc(t, matrixF, data, data); err != nil {
t.Error(err)
}
treeNodeF := func(root *TreeNode) *TreeNode {
fmt.Println(root.toRawString())
return root
}
data = [][]string{{`[]`}, {`[1]`}, {`[1,2]`}, {`[1,2,3]`}, {`[1,null,2,3]`}, {`[5,4,7,3,null,2,null,-1,null,9]`}, {`[1,null,2,3,4,null,null,5,6]`}}
if err := RunLeetCodeFunc(t, treeNodeF, data, data); err != nil {
t.Error(err)
}
listNodeF := func(head *ListNode) *ListNode {
fmt.Println(head.toRawString())
return head
}
data = [][]string{{`[]`}, {`[1]`}, {`[1,2,3,4,5]`}}
if err := RunLeetCodeFunc(t, listNodeF, data, data); err != nil {
t.Error(err)
}
}
type foo struct {
}
func constructor() foo {
return foo{}
}
func (f *foo) F0(a, b int) {
fmt.Println("f0", a, b)
}
func (f *foo) F1(a, b int) int {
fmt.Println("f1", a, b)
return a + b
}
func (f *foo) F2(a, b int) []int {
fmt.Println("f2", a, b)
return []int{a, b}
}
func TestRunLeetCodeClass(t *testing.T) {
sampleIns := []string{`
["foo","f0","f1","f2"]
[[],[10,100],[1,2],[11,22]]
`, `
["foo","f1","f2"]
[[],[-1,-2],[-11,-22]]
`}
sampleOuts := []string{`[null,null,3,[11,22]]`, `[null,-3,[-11,-22]]`}
if err := RunLeetCodeClass(t, constructor, sampleIns, sampleOuts); err != nil {
t.Error(err)
}
}