Documentation
¶
Index ¶
- Variables
- func NewRand(t *testing.T) *rand.Rand
- func Pick[T any](g *Gen, slice []T) T
- func RandBool(r *rand.Rand) bool
- func RandMapKey[K comparable, V any](r *rand.Rand, m map[K]V) K
- func RandString(r *rand.Rand, length int) string
- func RandWeightedOp(r *rand.Rand, ops OpWeights) string
- func Shuffle[T any](g *Gen, slice []T)
- type AnotherEvent
- type CommandA
- type CommandB
- type CommandC
- type ComponentA
- type ComponentB
- type ComponentC
- type ComponentMixed
- type Gen
- type NestedData
- type OpWeights
- type SimpleCommand
- type SimpleComponent
- type SimpleEvent
- type SimpleSystemEvent
- type SystemEventA
- type SystemEventB
- type SystemEventC
Constants ¶
This section is empty.
Variables ¶
var Seed uint64 //nolint:gochecknoglobals // intentionally global for test reproducibility
Functions ¶
func RandMapKey ¶
func RandMapKey[K comparable, V any](r *rand.Rand, m map[K]V) K
RandMapKey returns a random key from a map. Panics if the map is empty.
func RandString ¶ added in v0.10.0
RandString generates a random alphanumeric string of the given length.
func RandWeightedOp ¶
RandWeightedOp returns a random operation from a map, using each op's value as its weight.
Types ¶
type AnotherEvent ¶
type AnotherEvent struct {
Data string
}
func (AnotherEvent) Name ¶
func (AnotherEvent) Name() string
type ComponentA ¶
type ComponentA struct {
X, Y, Z float64
}
func (ComponentA) Name ¶
func (ComponentA) Name() string
type ComponentB ¶
func (ComponentB) Name ¶
func (ComponentB) Name() string
type ComponentC ¶
func (ComponentC) Name ¶
func (ComponentC) Name() string
type ComponentMixed ¶ added in v0.10.0
type ComponentMixed struct {
// Integer types
Int8Val int8
Int16Val int16
Int32Val int32
Int64Val int64
Uint8Val uint8
Uint16Val uint16
Uint32Val uint32
Uint64Val uint64 // Critical: values > 2^53-1 lose precision in JSON
// Floating point
Float32Val float32
Float64Val float64
// String and bool
StringVal string
BoolVal bool
// Slice and array
IntSlice []int
ByteSlice []byte
FloatArray [3]float64
// Nested struct
Nested NestedData
// Map
Metadata map[string]int
}
ComponentMixed is a comprehensive test component with all common field types. Used to verify MessagePack correctly handles the full range of Go types.
func (ComponentMixed) Name ¶ added in v0.10.0
func (ComponentMixed) Name() string
type Gen ¶
type Gen struct {
// contains filtered or unexported fields
}
Gen is an exhaustive generator that iterates through all possible combinations of values.
The implementation is tricky, refer to the post for details.
On each iteration of `while (!g.done())` loop, Gen generates a sequence of numbers. Internally, it remembers this sequence together with bounds the user requested:
value: 3 1 4 4 bound: 5 4 4 4
To advance to the next iteration, Gen finds the smallest sequence of values which is larger than the current one, but still satisfies all the bounds. "Smallest" means that Gen tries to increment the rightmost number.
In the above example, the last two "4"s already match the bound, so we can't increment them. However, we can increment the second number, "1", to get 3 2 4 4. This isn’t the smallest sequence though, 3 2 0 0 is be smaller. So, after incrementing the rightmost number possible, we zero the rest.
See: <https://matklad.github.io/2021/11/07/generate-all-the-things.html>
type NestedData ¶ added in v0.10.0
type SimpleCommand ¶
type SimpleCommand struct {
Value int
}
func (SimpleCommand) Name ¶
func (SimpleCommand) Name() string
type SimpleComponent ¶
type SimpleComponent struct {
Value int
}
func (SimpleComponent) Name ¶
func (SimpleComponent) Name() string
type SimpleEvent ¶
type SimpleEvent struct {
Value int
}
func (SimpleEvent) Name ¶
func (SimpleEvent) Name() string
type SimpleSystemEvent ¶
type SimpleSystemEvent struct {
Value int
}
func (SimpleSystemEvent) Name ¶
func (SimpleSystemEvent) Name() string
type SystemEventA ¶
type SystemEventA struct {
X, Y, Z float64
}
func (SystemEventA) Name ¶
func (SystemEventA) Name() string
type SystemEventB ¶
func (SystemEventB) Name ¶
func (SystemEventB) Name() string
type SystemEventC ¶
func (SystemEventC) Name ¶
func (SystemEventC) Name() string