-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtesting.go
More file actions
69 lines (63 loc) · 1.22 KB
/
Copy pathtesting.go
File metadata and controls
69 lines (63 loc) · 1.22 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
package sorting
import (
"math/rand"
)
// CmpInt will be inlined by the compiler, so performance is the same as the non-generic version.
// You can verify this by running `go test -gcflags="-m" .`.
// This will show a message like "can inline cmpInt"
func CmpInt(a, b int) int {
if a < b {
return -1
} else if a > b {
return 1
}
return 0
}
type SortFunc func(data []int, cmp func(a, b int) int)
var SortFuncs = map[string]SortFunc{
"insertion_sort": InsertionSort[[]int],
"merge_sort": MergeSort[[]int],
"quicksort": QuickSort[[]int],
}
type TestCase struct {
Name string
TestFunc func(n int) []int
}
var TestCases = []TestCase{
{
Name: "all elements equal",
TestFunc: func(n int) []int {
return make([]int, n)
},
},
{
Name: "sorted elements",
TestFunc: func(n int) []int {
x := make([]int, n)
for i := 0; i < n; i++ {
x[i] = i
}
return x
},
},
{
Name: "reverse sorted elements",
TestFunc: func(n int) []int {
x := make([]int, n)
for i := 0; i < n; i++ {
x[i] = n - i - 1
}
return x
},
},
{
Name: "random elements",
TestFunc: func(n int) []int {
x := make([]int, n)
for i := 0; i < n; i++ {
x[i] = rand.Intn(50)
}
return x
},
},
}