-
Notifications
You must be signed in to change notification settings - Fork 0
/
generator_test.go
123 lines (94 loc) · 2.38 KB
/
generator_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
package idgen
import (
"errors"
"testing"
)
func TestMust(t *testing.T) {
id := Must("id", nil)
if id != "id" {
t.Errorf("expected the value \"id\", got: %s", id)
}
}
func TestMust_Panic(t *testing.T) {
var err = errors.New("failed to generate ID")
defer func() {
e := recover()
if e == nil {
t.Fatal("Must is expected to fail")
}
if e != err {
t.Errorf("Must is expected to fail with error\nexpected: %s\nactual: %s", err, e)
}
}()
Must("", err)
}
func TestConstantGenerator(t *testing.T) {
generator := NewConstantGenerator("id")
testSafeGenerator(t, generator)
}
func TestConstantGenerator_Empty(t *testing.T) {
generator := &ConstantGenerator{}
_, err := generator.Generate()
if err == nil || err.Error() != "no id is configured" {
t.Errorf("expected an error, got: %s", err)
}
}
func TestGenerator(t *testing.T) {
generator := NewGenerator(NewConstantGenerator("id"))
testGenerator(t, generator)
}
func TestGenerator_Panic(t *testing.T) {
generator := NewGenerator(NewConstantGenerator(""))
testGeneratorPanic(t, generator)
}
func TestSafeGeneratorFunc_Generate(t *testing.T) {
generator := SafeGeneratorFunc(func() (string, error) {
return "id", nil
})
testSafeGenerator(t, generator)
}
func TestGeneratorFunc_Generate(t *testing.T) {
generator := GeneratorFunc(func() string {
return "id"
})
testGenerator(t, generator)
}
func TestListGenerator(t *testing.T) {
generator := NewListGenerator([]string{"id"})
testSafeGenerator(t, generator)
_, err := generator.Generate()
if err == nil || err.Error() != "no more ids left" {
t.Errorf("expected an error, got: %s", err)
}
}
func TestListGenerator_Empty(t *testing.T) {
generator := &ListGenerator{}
_, err := generator.Generate()
if err == nil || err.Error() != "no more ids left" {
t.Errorf("expected an error, got: %s", err)
}
}
func testSafeGenerator(t *testing.T, generator SafeGenerator) {
id, err := generator.Generate()
if err != nil {
t.Fatal(err)
}
if id != "id" {
t.Errorf("expected the value \"id\", got: %s", id)
}
}
func testGenerator(t *testing.T, generator Generator) {
id := generator.Generate()
if id != "id" {
t.Errorf("expected the value \"id\", got: %s", id)
}
}
func testGeneratorPanic(t *testing.T, generator Generator) {
defer func() {
err := recover()
if err == nil {
t.Fatal("Generator is expected to fail")
}
}()
_ = generator.Generate()
}