87 lines
2.2 KiB
Go
87 lines
2.2 KiB
Go
package rand
|
|
|
|
import (
|
|
"github.com/stretchr/testify/assert"
|
|
"testing"
|
|
)
|
|
|
|
func TestRandomizer_RangeUint32_MinEqualsMax(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.RangeUint32(5, 5)
|
|
assert.Equal(t, uint32(5), result)
|
|
}
|
|
|
|
func TestRandomizer_RangeUint32_MinGreaterThanMax(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.RangeUint32(10, 5)
|
|
assert.Equal(t, uint32(5), result)
|
|
}
|
|
|
|
func TestRandomizer_RangeUint32_PositiveRange(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
for i := 0; i < 1000; i++ {
|
|
result := r.RangeUint32(1, 10)
|
|
assert.True(t, result >= 1)
|
|
assert.True(t, result <= 10)
|
|
}
|
|
}
|
|
|
|
func TestRandomizer_RangeUint64_MinEqualsMax(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.RangeUint64(5, 5)
|
|
assert.Equal(t, uint64(5), result)
|
|
}
|
|
|
|
func TestRandomizer_RangeUint64_MinGreaterThanMax(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.RangeUint64(10, 5)
|
|
assert.Equal(t, uint64(5), result)
|
|
}
|
|
|
|
func TestRandomizer_RangeUint64_PositiveRange(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
for i := 0; i < 1000; i++ {
|
|
result := r.RangeUint64(1, 10)
|
|
assert.True(t, result >= 1)
|
|
assert.True(t, result <= 10)
|
|
}
|
|
}
|
|
|
|
func TestRandomizer_WeightedChoice_EmptyArray(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.WeightedChoice([]int{})
|
|
assert.Equal(t, -1, result)
|
|
}
|
|
|
|
func TestRandomizer_WeightedChoice_AllZeroWeights(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.WeightedChoice([]int{0, 0, 0})
|
|
assert.Equal(t, 2, result)
|
|
}
|
|
|
|
func TestRandomizer_WeightedChoice_MixedWeights(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
weightArray := []int{1, 0, 3, 0, 2}
|
|
counts := make([]int, len(weightArray))
|
|
for i := 0; i < 1000; i++ {
|
|
choice := r.WeightedChoice(weightArray)
|
|
counts[choice]++
|
|
}
|
|
assert.Greater(t, counts[0], 0)
|
|
assert.Greater(t, counts[2], 0)
|
|
assert.Greater(t, counts[4], 0)
|
|
}
|
|
|
|
func TestRandomizer_RandomString_LengthZero(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
result := r.RandomString(0)
|
|
assert.Equal(t, "", result)
|
|
}
|
|
|
|
func TestRandomizer_RandomString_CorrectLength(t *testing.T) {
|
|
r := NewRandomizer(UnixNanoSeed)
|
|
length := 50
|
|
result := r.RandomString(length)
|
|
assert.Equal(t, length, len(result))
|
|
}
|