-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcontainer_test.go
74 lines (61 loc) · 1.35 KB
/
container_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
package godi
import (
"testing"
)
func TestContainer_New(t *testing.T) {
c := Container{}
c.New()
if &c == nil {
t.Fatalf("container is not created; c = %v", c)
}
if &GlobalContainer == nil {
t.Fatalf("global container is not created; c = %v", c)
}
if len(c.services) != 0 {
t.Fatalf("the list of services is not empty; c.services = %v", c.services)
}
}
func TestContainer_ConstructService(t *testing.T) {
type A struct {
Data string
}
type B struct {
Num int
}
type C struct {
A A `godi:"autowire"`
B B `godi:"autowire"`
}
type D struct {
C C `godi:"autowire"`
}
c := Container{}
c.New()
c.RegisterService(CustomDriver{Name: "test"})
c.RegisterService(A{Data: "test"})
c.RegisterService(B{Num: 1})
c.RegisterService(C{})
service, err := c.ConstructService(Repository{})
if err != nil {
t.Fatalf("error is not empty; err = %v", err)
}
if &service == nil {
t.Fatal("service is not created")
}
if service.(Repository).Driver.Name != "test" {
t.Fatal("inner service is not created")
}
service2, err := c.ConstructService(D{})
if err != nil {
t.Fatalf("error is not empty; err = %v", err)
}
if &service2 == nil {
t.Fatal("service is not created")
}
if service2.(D).C.A.Data != "test" {
t.Fatal("inner service is not created")
}
if service2.(D).C.B.Num != 1 {
t.Fatal("inner service is not created")
}
}