mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
rand: simplify rand.PRNG, move to optional types for error handling (#13570)
This commit is contained in:
@ -12,7 +12,7 @@ fn get_n_random_ints(seed_data []u32, n int) []int {
|
||||
mut values := []int{cap: n}
|
||||
rand.seed(seed_data)
|
||||
for _ in 0 .. n {
|
||||
values << rand.intn(n)
|
||||
values << rand.intn(n) or { panic("Couldn't obtain int") }
|
||||
}
|
||||
return values
|
||||
}
|
||||
@ -29,7 +29,7 @@ fn test_rand_reproducibility() {
|
||||
fn test_rand_u32n() {
|
||||
max := u32(16384)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.u32n(max)
|
||||
value := rand.u32n(max) or { panic("Couldn't obtain u32") }
|
||||
assert value >= 0
|
||||
assert value < max
|
||||
}
|
||||
@ -38,7 +38,7 @@ fn test_rand_u32n() {
|
||||
fn test_rand_u64n() {
|
||||
max := u64(379091181005)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.u64n(max)
|
||||
value := rand.u64n(max) or { panic("Couldn't obtain u64") }
|
||||
assert value >= 0
|
||||
assert value < max
|
||||
}
|
||||
@ -48,7 +48,7 @@ fn test_rand_u32_in_range() {
|
||||
max := u32(484468466)
|
||||
min := u32(316846)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.u32_in_range(min, max)
|
||||
value := rand.u32_in_range(min, max) or { panic("Couldn't obtain u32 in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -58,7 +58,7 @@ fn test_rand_u64_in_range() {
|
||||
max := u64(216468454685163)
|
||||
min := u64(6848646868)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.u64_in_range(min, max)
|
||||
value := rand.u64_in_range(min, max) or { panic("Couldn't obtain u64 in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -67,7 +67,7 @@ fn test_rand_u64_in_range() {
|
||||
fn test_rand_intn() {
|
||||
max := 2525642
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.intn(max)
|
||||
value := rand.intn(max) or { panic("Couldn't obtain int") }
|
||||
assert value >= 0
|
||||
assert value < max
|
||||
}
|
||||
@ -76,7 +76,7 @@ fn test_rand_intn() {
|
||||
fn test_rand_i64n() {
|
||||
max := i64(3246727724653636)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.i64n(max)
|
||||
value := rand.i64n(max) or { panic("Couldn't obtain i64") }
|
||||
assert value >= 0
|
||||
assert value < max
|
||||
}
|
||||
@ -86,7 +86,7 @@ fn test_rand_int_in_range() {
|
||||
min := -4252
|
||||
max := 23054962
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.int_in_range(min, max)
|
||||
value := rand.int_in_range(min, max) or { panic("Couldn't obtain int in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -96,7 +96,7 @@ fn test_rand_i64_in_range() {
|
||||
min := i64(-24095)
|
||||
max := i64(324058)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.i64_in_range(min, max)
|
||||
value := rand.i64_in_range(min, max) or { panic("Couldn't obtain i64 in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -144,7 +144,7 @@ fn test_rand_f64() {
|
||||
fn test_rand_f32n() {
|
||||
max := f32(357.0)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.f32n(max)
|
||||
value := rand.f32n(max) or { panic("Couldn't obtain f32") }
|
||||
assert value >= 0.0
|
||||
assert value < max
|
||||
}
|
||||
@ -153,7 +153,7 @@ fn test_rand_f32n() {
|
||||
fn test_rand_f64n() {
|
||||
max := f64(1.52e6)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.f64n(max)
|
||||
value := rand.f64n(max) or { panic("Couldn't obtain f64") }
|
||||
assert value >= 0.0
|
||||
assert value < max
|
||||
}
|
||||
@ -163,7 +163,7 @@ fn test_rand_f32_in_range() {
|
||||
min := f32(-24.0)
|
||||
max := f32(125.0)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.f32_in_range(min, max)
|
||||
value := rand.f32_in_range(min, max) or { panic("Couldn't obtain f32 in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -173,7 +173,7 @@ fn test_rand_f64_in_range() {
|
||||
min := f64(-548.7)
|
||||
max := f64(5015.2)
|
||||
for _ in 0 .. rnd_count {
|
||||
value := rand.f64_in_range(min, max)
|
||||
value := rand.f64_in_range(min, max) or { panic("Couldn't obtain f64 in range") }
|
||||
assert value >= min
|
||||
assert value < max
|
||||
}
|
||||
@ -204,7 +204,7 @@ fn test_rand_string_from_set() {
|
||||
]
|
||||
for charset in sets {
|
||||
for _ in 0 .. string_count {
|
||||
len := rand.intn(rnd_count)
|
||||
len := rand.intn(rnd_count) or { panic("Couldn't obtain int") }
|
||||
str := rand.string_from_set(charset, len)
|
||||
assert str.len == len
|
||||
for character in str {
|
||||
@ -275,17 +275,17 @@ fn test_rand_ascii() {
|
||||
fn ensure_same_output(mut rng rand.PRNG) {
|
||||
for _ in 0 .. 100 {
|
||||
assert rand.int() == rng.int()
|
||||
assert rand.intn(45) == rng.intn(45)
|
||||
assert rand.intn(45) or { 0 } == rng.intn(45) or { 0 }
|
||||
assert rand.u64() == rng.u64()
|
||||
assert rand.f64() == rng.f64()
|
||||
assert rand.u32n(25) == rng.u32n(25)
|
||||
assert rand.u32n(25) or { 0 } == rng.u32n(25) or { 0 }
|
||||
}
|
||||
}
|
||||
|
||||
fn test_new_global_rng() {
|
||||
old := rand.get_current_rng()
|
||||
|
||||
// MuslRNG
|
||||
// MuslRNG
|
||||
mut rng1a := musl.MuslRNG{}
|
||||
mut rng1b := musl.MuslRNG{}
|
||||
seed1 := [u32(1234)]
|
||||
|
Reference in New Issue
Block a user