forked from go-gl/glow
-
Notifications
You must be signed in to change notification settings - Fork 0
/
spec_test.go
80 lines (77 loc) · 1.7 KB
/
spec_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
package main
import "testing"
func TestParseSignature(t *testing.T) {
tt := []struct {
input string
expectedName string
expectedType Type
}{
{
input: "const void *<name>pointer</name>",
expectedName: "pointer",
expectedType: Type{
Name: "void",
PointerLevel: 1,
CDefinition: "const void *",
},
},
{
input: "<ptype>GLsizei</ptype> <name>stride</name>",
expectedName: "stride",
expectedType: Type{
Name: "GLsizei",
PointerLevel: 0,
CDefinition: "GLsizei ",
},
},
{
input: "const <ptype>GLuint</ptype> *<name>value</name>",
expectedName: "value",
expectedType: Type{
Name: "GLuint",
PointerLevel: 1,
CDefinition: "const GLuint *",
},
},
{
input: "<ptype>GLuint</ptype> <name>baseAndCount</name>[2]",
expectedName: "baseAndCount",
expectedType: Type{
Name: "GLuint",
PointerLevel: 1,
CDefinition: "GLuint *",
},
},
{
input: "uintptr_t **",
expectedName: "",
expectedType: Type{
Name: "uintptr_t",
PointerLevel: 2,
CDefinition: "uintptr_t **",
},
},
}
for _, tc := range tt {
tc := tc
t.Run(tc.input, func(t *testing.T) {
name, ctype, err := parseSignature(xmlSignature(tc.input))
failed := false
if err != nil {
t.Logf("parseSignature returned error: %v", err)
failed = true
}
if name != tc.expectedName {
t.Logf("name [%s] does not match expected [%s]", name, tc.expectedName)
failed = true
}
if ctype != tc.expectedType {
t.Logf("type [%v] does not match expected [%v]", ctype, tc.expectedType)
failed = true
}
if failed {
t.Fail()
}
})
}
}