-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathordmap_test.go
119 lines (94 loc) · 1.94 KB
/
ordmap_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
package openapi_test
import (
"testing"
"github.com/MarkRosemaker/openapi"
"github.com/MarkRosemaker/ordmap"
)
func TestOrderedMaps(t *testing.T) {
testSort[*openapi.CallbackRefs](t)
testSort[*openapi.Callback](t)
testSort[*openapi.Content](t)
testSort[*openapi.Encodings](t)
testSort[*openapi.Examples](t)
testSort[*openapi.Headers](t)
testSort[*openapi.LinkParameters](t)
testSort[*openapi.Links](t)
testSort2[*openapi.MapOfStrings](t)
testSort[*openapi.Parameters](t)
testSort[*openapi.PathItems](t)
testSort[*openapi.Paths](t)
testSort[*openapi.RequestBodies](t)
testSort[*openapi.Responses[string]](t)
testSort[*openapi.Schemas](t)
testSort[*openapi.SchemaRefs](t)
testSort[*openapi.SecuritySchemes](t)
testSort[*openapi.ServerVariables](t)
}
func testSort[MP interface {
Set(K, *V)
*M
}, M interface {
Sort()
ordmap.ByIndexer[K, *V]
}, K ~string, V any](t *testing.T,
) {
t.Helper()
var om M
om.Sort() // no panic
// set some values
var a, b, c V
MP(&om).Set("c", &c)
MP(&om).Set("a", &a)
MP(&om).Set("b", &b)
keys := []K{"c", "a", "b"}
i := 0
for k := range om.ByIndex() {
if k != keys[i] {
t.Fatalf("got: %v, want: %v", k, keys[i])
}
i++
}
om.Sort()
keysSorted := []K{"a", "b", "c"}
i = 0
for k := range om.ByIndex() {
if k != keysSorted[i] {
t.Fatalf("got: %v, want: %v", k, keysSorted[i])
}
i++
}
}
func testSort2[MP interface {
Set(K, V)
*M
}, M interface {
Sort()
ordmap.ByIndexer[K, V]
}, K ~string, V any](t *testing.T,
) {
t.Helper()
var om M
om.Sort() // no panic
// set some values
var a, b, c V
MP(&om).Set("c", c)
MP(&om).Set("a", a)
MP(&om).Set("b", b)
keys := []K{"c", "a", "b"}
i := 0
for k := range om.ByIndex() {
if k != keys[i] {
t.Fatalf("got: %v, want: %v", k, keys[i])
}
i++
}
om.Sort()
keysSorted := []K{"a", "b", "c"}
i = 0
for k := range om.ByIndex() {
if k != keysSorted[i] {
t.Fatalf("got: %v, want: %v", k, keysSorted[i])
}
i++
}
}