@@ -20,6 +20,7 @@ import (
2020
2121 "github.com/mailgun/holster/v4/setter"
2222 "github.com/stretchr/testify/assert"
23+ "github.com/stretchr/testify/require"
2324)
2425
2526func TestIfEmpty (t * testing.T ) {
@@ -148,24 +149,46 @@ func TestIsNil(t *testing.T) {
148149
149150// ---------------------------------------------------------
150151
151- var newRes string
152+ var newStrRes string
152153
153154func BenchmarkSetterNew (b * testing.B ) {
154155 var r string
155156 for i := 0 ; i < b .N ; i ++ {
156- setter .SetDefaultNew (& r , "" , "" , "42" )
157+ setter .Default (& r , "" , "" , "42" )
157158 }
158- newRes = r
159+ newStrRes = r
159160}
160161
161- var oldRes string
162+ var oldStrRes string
162163
163164func BenchmarkSetter (b * testing.B ) {
164165 var r string
165166 for i := 0 ; i < b .N ; i ++ {
166167 setter .SetDefault (& r , "" , "" , "42" )
167168 }
168- oldRes = r
169+ oldStrRes = r
170+ }
171+
172+ var newSliceRs []string
173+
174+ func BenchmarkSetterNew_Slice (b * testing.B ) {
175+ r := make ([]string , 0 , 3 )
176+ b .ResetTimer ()
177+ for i := 0 ; i < b .N ; i ++ {
178+ setter .DefaultSlice (& r , []string {}, []string {"welcome all" , "to a benchmark" , "of SILLY proportions" })
179+ }
180+ newSliceRs = r
181+ }
182+
183+ var oldSliceRs []string
184+
185+ func BenchmarkSetter_Slice (b * testing.B ) {
186+ r := make ([]string , 0 , 3 )
187+ b .ResetTimer ()
188+ for i := 0 ; i < b .N ; i ++ {
189+ setter .SetDefault (& r , []string {"" }, []string {"welcome all" , "to a benchmark" , "of SILLY proportions" })
190+ }
191+ oldSliceRs = r
169192}
170193
171194func TestSetterNew_IfEmpty (t * testing.T ) {
@@ -177,8 +200,8 @@ func TestSetterNew_IfEmpty(t *testing.T) {
177200 assert .Equal (t , 0 , conf .Bar )
178201
179202 // Should apply the default values
180- setter .SetDefaultNew (& conf .Foo , "default" )
181- setter .SetDefaultNew (& conf .Bar , 200 )
203+ setter .Default (& conf .Foo , "default" )
204+ setter .Default (& conf .Bar , 200 )
182205
183206 assert .Equal (t , "default" , conf .Foo )
184207 assert .Equal (t , 200 , conf .Bar )
@@ -187,13 +210,30 @@ func TestSetterNew_IfEmpty(t *testing.T) {
187210 conf .Bar = 500
188211
189212 // Should NOT apply the default values
190- setter .SetDefaultNew (& conf .Foo , "default" )
191- setter .SetDefaultNew (& conf .Bar , 200 )
213+ setter .Default (& conf .Foo , "default" )
214+ setter .Default (& conf .Bar , 200 )
192215
193216 assert .Equal (t , "thrawn" , conf .Foo )
194217 assert .Equal (t , 500 , conf .Bar )
195218}
196219
220+ func TestSetterNew_Slices (t * testing.T ) {
221+ var foo []string
222+ require .Len (t , foo , 0 )
223+
224+ // Should apply the default values
225+ setter .DefaultSlice (& foo , []string {"default" })
226+ require .Len (t , foo , 1 )
227+ assert .Equal (t , "default" , foo [0 ])
228+
229+ foo = []string {"thrawn" }
230+
231+ // Should NOT apply the default values
232+ setter .DefaultSlice (& foo , []string {"default" })
233+ require .Len (t , foo , 1 )
234+ assert .Equal (t , "thrawn" , foo [0 ])
235+ }
236+
197237func TestSetterNew_IfDefaultPrecedence (t * testing.T ) {
198238 var conf struct {
199239 Foo string
@@ -204,12 +244,12 @@ func TestSetterNew_IfDefaultPrecedence(t *testing.T) {
204244
205245 // Should use the final default value
206246 envValue := ""
207- setter .SetDefaultNew (& conf .Foo , envValue , "default" )
247+ setter .Default (& conf .Foo , envValue , "default" )
208248 assert .Equal (t , "default" , conf .Foo )
209249
210250 // Should use envValue
211251 envValue = "bar"
212- setter .SetDefaultNew (& conf .Bar , envValue , "default" )
252+ setter .Default (& conf .Bar , envValue , "default" )
213253 assert .Equal (t , "bar" , conf .Bar )
214254}
215255
0 commit comments