Documentation
¶
Index ¶
- func Charset() string
- func CharsetASCII() string
- func CharsetAlpha() string
- func CharsetDigit() string
- func KV[K comparable, V any](mkK func() K, mkV func() V) func() (K, V)
- func Map[K comparable, V any](length int, mk func() (K, V)) map[K]V
- func Pick[T any](rnd *Random, vs ...T) T
- func Slice[T any](length int, mk func() T) []T
- func Unique[T any](blk func() T, excludeList ...T) T
- type Contact
- type CryptoSeed
- type Factory
- type Random
- func (r *Random) Bool() bool
- func (r *Random) Contact(opts ...internal.ContactOption) Contact
- func (r *Random) Domain() string
- func (r *Random) Email() string
- func (r *Random) Error() error
- func (r *Random) Float32() float32
- func (r *Random) Float64() float64
- func (r *Random) Int() int
- func (r *Random) IntB(min, max int) int
- func (r *Random) IntBetween(min, max int) int
- func (r *Random) IntN(n int) int
- func (r *Random) Make(T any) any
- func (r *Random) Name() contactGenerator
- func (r *Random) Read(p []byte) (n int, err error)
- func (r *Random) Repeat(min, max int, do func()) int
- func (r *Random) SliceElement(slice interface{}) interface{}
- func (r *Random) String() string
- func (r *Random) StringN(length int) string
- func (r *Random) StringNC(length int, charset string) string
- func (r *Random) StringNWithCharset(length int, charset string) string
- func (r *Random) Time() time.Time
- func (r *Random) TimeB(from, to time.Time) time.Time
- func (r *Random) TimeBetween(from, to time.Time) time.Time
- func (r *Random) TimeN(from time.Time, years, months, days int) time.Time
- func (r *Random) UUID() string
Examples ¶
- New
- Pick (PseudoRandomValuePicking)
- Pick (RandomValuePicking)
- Random (CryptoSeed)
- Random (MathRand)
- Random.Bool
- Random.Error
- Random.Float32
- Random.Float64
- Random.Int
- Random.IntBetween
- Random.IntN
- Random.Make
- Random.Read
- Random.Repeat
- Random.SliceElement
- Random.String
- Random.StringN
- Random.StringNC
- Random.StringNWithCharset
- Random.Time
- Random.TimeBetween
- Random.TimeN
- Unique
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CharsetASCII ¶
func CharsetASCII() string
func CharsetAlpha ¶
func CharsetAlpha() string
func CharsetDigit ¶
func CharsetDigit() string
func KV ¶
func KV[K comparable, V any](mkK func() K, mkV func() V) func() (K, V)
func Map ¶
func Map[K comparable, V any](length int, mk func() (K, V)) map[K]V
func Pick ¶ added in v0.146.0
Example (PseudoRandomValuePicking) ¶
package main
import (
"go.llib.dev/testcase/random"
"math/rand"
)
func main() {
// Pick pseudo randomly from the given values using the seed.
// This will make picking deterministically random when the same seed is used.
const seed = 42
rnd := random.New(rand.NewSource(seed))
var _ = random.Pick(rnd, "one", "two", "three")
}
Example (RandomValuePicking) ¶
package main
import (
"go.llib.dev/testcase/random"
)
func main() {
// Pick randomly from the values of 1,2,3
var _ = random.Pick(nil, 1, 2, 3)
}
func Unique ¶ added in v0.145.0
func Unique[T any](blk func() T, excludeList ...T) T
Unique function is a utility that helps with generating distinct values from those in a given exclusion list. If you need multiple unique values of the same type, this helper function can be useful for ensuring they're all different.
rnd := random.New(random.CryptoSeed{})
v1 := random.Unique(rnd.Int)
v2 := random.Unique(rnd.Int, v1)
v3 := random.Unique(rnd.Int, v1, v2)
Example ¶
package main
import (
"go.llib.dev/testcase/assert"
"go.llib.dev/testcase/random"
"testing"
)
func main() {
// useful when you need random values which are not equal
rnd := random.New(random.CryptoSeed{})
v1 := rnd.Int()
v2 := random.Unique(rnd.Int, v1)
v3 := random.Unique(rnd.Int, v1, v2)
var tb testing.TB
assert.NotEqual(tb, v1, v3)
assert.NotEqual(tb, v2, v3)
}
Types ¶
type CryptoSeed ¶
type CryptoSeed struct{}
func (CryptoSeed) Int63 ¶
func (c CryptoSeed) Int63() int64
Int63 returns a non-negative pseudo-random 63-bit integer as an int64.
func (CryptoSeed) Seed ¶
func (c CryptoSeed) Seed(seed int64)
Seed should use the provided seed value to initialize the generator to a deterministic state, but in CryptoSeed, the value is ignored.
func (CryptoSeed) Uint64 ¶
func (c CryptoSeed) Uint64() uint64
type Factory ¶
type Factory struct {
// contains filtered or unexported fields
}
func (*Factory) RegisterType ¶
type Random ¶
A Random is a source of random numbers. It is safe to be used in from multiple goroutines.
Example (CryptoSeed) ¶
package main
import (
"go.llib.dev/testcase/random"
)
func main() {
random.New(random.CryptoSeed{})
}
Example (MathRand) ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
seed := time.Now().UnixNano()
source := rand.NewSource(seed)
random.New(source)
}
func New ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
_ = random.New(rand.NewSource(time.Now().Unix()))
}
func (*Random) Bool ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.Bool() // returns a random bool
}
func (*Random) Error ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
err := rnd.Error()
_ = err
}
func (*Random) Float32 ¶
Float32 returns, as a float32, a pseudo-random number in [0.0,1.0).
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.Float32()
}
func (*Random) Float64 ¶
Float64 returns, as a float64, a pseudo-random number in [0.0,1.0).
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.Float64()
}
func (*Random) Int ¶
Int returns a non-negative pseudo-random int.
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.Int()
}
func (*Random) IntB ¶
IntB returns, as an int, a non-negative pseudo-random number based on the received int range's [min,max].
func (*Random) IntBetween ¶
IntBetween returns, as an int, a non-negative pseudo-random number based on the received int range's [min,max].
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.IntBetween(24, 42)
}
func (*Random) IntN ¶
IntN returns, as an int, a non-negative pseudo-random number in [0,n). It panics if n <= 0.
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.IntN(42)
}
func (*Random) Make ¶
Example ¶
package main
import (
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(random.CryptoSeed{})
type ExampleStruct struct {
Foo string
Bar int
Baz *int
}
_ = rnd.Make(&ExampleStruct{}).(*ExampleStruct) // returns a populated struct
}
func (*Random) Name ¶
func (r *Random) Name() contactGenerator
Name
DEPRECATED: please use Random.Contact instead
func (*Random) Read ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
p := make([]byte, 42)
n, err := rnd.Read(p)
_, _ = n, err
}
func (*Random) Repeat ¶
Repeat will repeatedly call the "do" function. The number of repeats will be random between the min and the max range. The repeated time will be returned as a result.
Example ¶
package main
import (
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(random.CryptoSeed{})
n := rnd.Repeat(1, 3, func() {
// will be called repeatedly between 1 and 3 times.
})
_ = n // is the number of times, the function block was repeated.
}
func (*Random) SliceElement ¶
func (r *Random) SliceElement(slice interface{}) interface{}
SliceElement will return a random slice element. You need type assert the returned value to get back the original type.
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
// returns a random element from the given slice
_ = rnd.SliceElement([]string{`foo`, `bar`, `baz`}).(string)
}
func (*Random) String ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.String()
}
func (*Random) StringN ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.StringN(42)
}
func (*Random) StringNC ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
rnd.StringNC(42, random.Charset())
rnd.StringNC(42, random.CharsetASCII())
rnd.StringNC(42, random.CharsetAlpha())
rnd.StringNC(42, "ABC")
}
func (*Random) StringNWithCharset ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
rnd.StringNWithCharset(42, random.Charset())
rnd.StringNWithCharset(42, random.CharsetASCII())
rnd.StringNWithCharset(42, random.CharsetAlpha())
rnd.StringNWithCharset(42, "ABC")
}
func (*Random) Time ¶
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.Time()
}
func (*Random) TimeB ¶
TimeB returns, as an time.Time, a non-negative pseudo-random time in [from,to].
func (*Random) TimeBetween ¶
TimeBetween returns, as an time.Time, a non-negative pseudo-random time in [from,to].
Example ¶
package main
import (
"math/rand"
"time"
"go.llib.dev/testcase/random"
)
func main() {
rnd := random.New(rand.NewSource(time.Now().Unix()))
_ = rnd.TimeBetween(time.Now(), time.Now().Add(time.Hour))
}