package sets
import (
"math/rand"
"reflect"
"testing/quick"
)
func (_ Set[T]) Generate(rand *rand.Rand, size int) reflect.Value {
s := New[T]()
var zero T
itemType := reflect.TypeOf(zero)
for {
if s.Len() >= size {
break
}
item, ok := quick.Value(itemType, rand)
if !ok {
continue
}
if val, ok := item.Interface().(T); ok {
s.Insert(val)
}
}
return reflect.ValueOf(s)
}