Skip to content

Commit bb21ed4

Browse files
committed
Added generator for maps
1 parent a2014c9 commit bb21ed4

File tree

1 file changed

+12
-7
lines changed

1 file changed

+12
-7
lines changed

utils/unittest/entity.go

+12-7
Original file line numberDiff line numberDiff line change
@@ -271,17 +271,22 @@ func generateRandomReflectValue(field reflect.Value) error {
271271
return generateRandomReflectValue(field.Index(index))
272272
case reflect.Map:
273273
mapKeys := field.MapKeys()
274+
var key reflect.Value
274275
if len(mapKeys) == 0 {
275-
return fmt.Errorf("cannot generate random value for empty map")
276+
field.Set(reflect.MakeMap(field.Type()))
277+
key = reflect.New(field.Type().Key()).Elem()
278+
if err := generateRandomReflectValue(key); err != nil {
279+
return err
280+
}
281+
} else {
282+
index := rand.Intn(len(mapKeys))
283+
key = mapKeys[index]
276284
}
277-
index := rand.Intn(len(mapKeys))
278-
key := mapKeys[index]
279-
oldVal := field.MapIndex(key)
280-
newVal := reflect.New(oldVal.Type()).Elem()
281-
if err := generateRandomReflectValue(newVal); err != nil {
285+
val := reflect.New(field.Type().Elem()).Elem()
286+
if err := generateRandomReflectValue(val); err != nil {
282287
return err
283288
}
284-
field.SetMapIndex(key, newVal)
289+
field.SetMapIndex(key, val)
285290
case reflect.Ptr:
286291
if field.IsNil() {
287292
field.Set(reflect.New(field.Type().Elem()))

0 commit comments

Comments
 (0)