-
Notifications
You must be signed in to change notification settings - Fork 0
/
block_interface_test.go
75 lines (61 loc) · 1.61 KB
/
block_interface_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
package codegen
import (
"fmt"
"strings"
"testing"
"github.com/stretchr/testify/assert"
)
func TestInterfaceEmpty(t *testing.T) {
const want = `type myInterface interface {
}
`
var sb strings.Builder
newInterface("myInterface").write(&sb)
assert.Equal(t, want, sb.String())
}
func TestInterfaceOne(t *testing.T) {
const want = `type myInterface interface {
myFunc(param string)string
}
`
var sb strings.Builder
newInterface("myInterface").Funcs(
FuncDecl("myFunc").Params(Param("param", "string")).ReturnTypes(Type("string")),
).write(&sb)
assert.Equal(t, want, sb.String())
}
func TestInterfaceMultiple(t *testing.T) {
const want = `type myInterface interface {
myFunc(param string)string
anotherFunc(param int64)alias.MyType
}
`
var sb strings.Builder
newInterface("myInterface").Funcs(
FuncDecl("myFunc").Params(Param("param", "string")).ReturnTypes(Type("string")),
FuncDecl("anotherFunc").Params(Param("param", "int64")).ReturnTypes(QualType("alias", "MyType")),
).write(&sb)
assert.Equal(t, want, sb.String())
}
func TestInterfaceAddFunc(t *testing.T) {
const want = `type myInterface interface {
myFunc1()
myFunc2(a1 string)
myFunc3(a1 string,a2 string)
myFunc4(a1 string,a2 string,a3 string)
myFunc5(a1 string,a2 string,a3 string,a4 string)
}
`
decl := newInterface("myInterface")
for i := 0; i < 5; i++ {
params := make([]*ParamDecl, i)
for j := 0; j < i; j++ {
params[j] = Param(fmt.Sprintf("a%d", j+1), "string")
}
newFunc := FuncDecl(fmt.Sprintf("myFunc%d", i+1)).Params(params...)
decl.AddFunc(newFunc)
}
var sb strings.Builder
decl.write(&sb)
assert.Equal(t, want, sb.String())
}