random

package
v0.142.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 16, 2023 License: Apache-2.0 Imports: 20 Imported by: 0

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Charset added in v0.83.0

func Charset() string

func CharsetASCII added in v0.83.0

func CharsetASCII() string

func CharsetAlpha added in v0.83.0

func CharsetAlpha() string

func CharsetDigit added in v0.105.0

func CharsetDigit() string

func KV added in v0.130.0

func KV[K comparable, V any](mkK func() K, mkV func() V) func() (K, V)

func Map added in v0.130.0

func Map[K comparable, V any](length int, mk func() (K, V)) map[K]V

func Slice added in v0.130.0

func Slice[T any](length int, mk func() T) []T

Types

type Contact added in v0.133.0

type Contact struct {
	FirstName string
	LastName  string
	Email     string
}

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 added in v0.73.0

type Factory struct {
	// contains filtered or unexported fields
}

func (*Factory) Make added in v0.73.0

func (f *Factory) Make(rnd *Random, T any) (_T any)

func (*Factory) RegisterType added in v0.73.0

func (f *Factory) RegisterType(T any, ff typeFunc)

type Random

type Random struct {
	Source  rand.Source
	Factory Factory
	// contains filtered or unexported fields
}

A Random is a source of random numbers. It is safe to be used in from multiple goroutines.

Example (CryptoSeed)
package main

import (
	"github.com/adamluzsi/testcase/random"
)

func main() {
	random.New(random.CryptoSeed{})
}
Output:

Example (MathRand)
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	seed := time.Now().UnixNano()
	source := rand.NewSource(seed)
	random.New(source)
}
Output:

func New

func New(s rand.Source) *Random
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	_ = random.New(rand.NewSource(time.Now().Unix()))
}
Output:

func (*Random) Bool

func (r *Random) Bool() bool
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Bool() // returns a random bool
}
Output:

func (*Random) Contact added in v0.133.0

func (r *Random) Contact(opts ...internal.ContactOption) Contact

func (*Random) ElementFromSlice

func (r *Random) ElementFromSlice(slice interface{}) interface{}

ElementFromSlice

DEPRECATED: please use SliceElement instead

func (*Random) Email added in v0.112.0

func (r *Random) Email() string

Email

DEPRECATED: please use Contact.Email from Random.Contact instead

func (*Random) Error added in v0.90.0

func (r *Random) Error() error
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	err := rnd.Error()
	_ = err
}
Output:

func (*Random) Float32

func (r *Random) Float32() float32

Float32 returns, as a float32, a pseudo-random number in [0.0,1.0).

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Float32()
}
Output:

func (*Random) Float64

func (r *Random) Float64() float64

Float64 returns, as a float64, a pseudo-random number in [0.0,1.0).

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Float64()
}
Output:

func (*Random) Int

func (r *Random) Int() int

Int returns a non-negative pseudo-random int.

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Int()
}
Output:

func (*Random) IntB added in v0.71.0

func (r *Random) IntB(min, max int) int

IntB returns, as an int, a non-negative pseudo-random number based on the received int range's [min,max].

func (*Random) IntBetween

func (r *Random) IntBetween(min, max int) int

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"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.IntBetween(24, 42)
}
Output:

func (*Random) IntN

func (r *Random) IntN(n int) int

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"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.IntN(42)
}
Output:

func (*Random) Make added in v0.73.0

func (r *Random) Make(T any) any
Example
package main

import (
	"github.com/adamluzsi/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
}
Output:

func (*Random) Name added in v0.112.0

func (r *Random) Name() contactGenerator

Name

DEPRECATED: please use Random.Contact instead

func (*Random) Read added in v0.90.0

func (r *Random) Read(p []byte) (n int, err error)
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	p := make([]byte, 42)
	n, err := rnd.Read(p)

	_, _ = n, err
}
Output:

func (*Random) Repeat added in v0.125.0

func (r *Random) Repeat(min, max int, do func()) int

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 (
	"github.com/adamluzsi/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.
}
Output:

func (*Random) SliceElement added in v0.119.0

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"

	"github.com/adamluzsi/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)
}
Output:

func (*Random) String

func (r *Random) String() string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.String()
}
Output:

func (*Random) StringN

func (r *Random) StringN(length int) string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.StringN(42)
}
Output:

func (*Random) StringNC added in v0.82.0

func (r *Random) StringNC(length int, charset string) string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/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")
}
Output:

func (*Random) StringNWithCharset

func (r *Random) StringNWithCharset(length int, charset string) string
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/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")
}
Output:

func (*Random) Time

func (r *Random) Time() time.Time
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.Time()
}
Output:

func (*Random) TimeB added in v0.71.0

func (r *Random) TimeB(from, to time.Time) time.Time

TimeB returns, as an time.Time, a non-negative pseudo-random time in [from,to].

func (*Random) TimeBetween

func (r *Random) TimeBetween(from, to time.Time) time.Time

TimeBetween returns, as an time.Time, a non-negative pseudo-random time in [from,to].

Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))

	_ = rnd.TimeBetween(time.Now(), time.Now().Add(time.Hour))
}
Output:

func (*Random) TimeN added in v0.54.0

func (r *Random) TimeN(from time.Time, years, months, days int) time.Time
Example
package main

import (
	"math/rand"
	"time"

	"github.com/adamluzsi/testcase/random"
)

func main() {
	rnd := random.New(rand.NewSource(time.Now().Unix()))
	var (
		years  = 0
		months = 4
		days   = 2
	)
	_ = rnd.TimeN(time.Now(), years, months, days)
}
Output:

func (*Random) UUID added in v0.112.0

func (r *Random) UUID() string

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL