@@ -32,6 +32,11 @@ type Child struct {
3232 Age int `default:"10"`
3333}
3434
35+ type ChildPtr struct {
36+ Name * string
37+ Age * int `default:"10"`
38+ }
39+
3540type ExampleBasic struct {
3641 Bool bool `default:"true"`
3742 Integer int `default:"33"`
@@ -77,6 +82,11 @@ type ExampleBasic struct {
7782 Float64Ptr * float64 `default:"6.4"`
7883 DurationPtr * time.Duration `default:"1s"`
7984 SecondPtr * time.Duration `default:"1s"`
85+ StructPtr * struct {
86+ Bool bool `default:"true"`
87+ Integer * int `default:"33"`
88+ }
89+ ChildrenPtr []* ChildPtr
8090}
8191
8292func (s * DefaultsSuite ) TestSetDefaultsBasic (c * C ) {
@@ -137,6 +147,9 @@ func (s *DefaultsSuite) assertTypes(c *C, foo *ExampleBasic) {
137147 c .Assert (* foo .Float64Ptr , Equals , 6.4 )
138148 c .Assert (* foo .DurationPtr , Equals , time .Second )
139149 c .Assert (* foo .SecondPtr , Equals , time .Second )
150+ c .Assert (foo .StructPtr .Bool , Equals , true )
151+ c .Assert (* foo .StructPtr .Integer , Equals , 33 )
152+ c .Assert (foo .ChildrenPtr , IsNil )
140153}
141154
142155func (s * DefaultsSuite ) TestSetDefaultsWithValues (c * C ) {
@@ -152,6 +165,10 @@ func (s *DefaultsSuite) TestSetDefaultsWithValues(c *C) {
152165 intzero := 0
153166 foo .IntPtr = & intzero
154167
168+ ageZero := 0
169+ childPtr := & ChildPtr {Age : & ageZero }
170+ foo .ChildrenPtr = append (foo .ChildrenPtr , childPtr )
171+
155172 SetDefaults (foo )
156173
157174 c .Assert (foo .Integer , Equals , 55 )
@@ -161,6 +178,8 @@ func (s *DefaultsSuite) TestSetDefaultsWithValues(c *C) {
161178 c .Assert (string (foo .Bytes ), Equals , "foo" )
162179 c .Assert (foo .Children [0 ].Age , Equals , 10 )
163180 c .Assert (foo .Children [1 ].Age , Equals , 2 )
181+ c .Assert (* foo .ChildrenPtr [0 ].Age , Equals , 0 )
182+ c .Assert (foo .ChildrenPtr [0 ].Name , IsNil )
164183
165184 c .Assert (* foo .IntPtr , Equals , 0 )
166185}
0 commit comments