Merge pull request #3767 from Feoramund/use-rng-context-in-test-runner

Setup `context.random_generator` in test runner
This commit is contained in:
Jeroen van Rijn
2024-06-19 09:51:13 +02:00
committed by GitHub
8 changed files with 60 additions and 38 deletions
-3
View File
@@ -20,9 +20,6 @@ test_avl :: proc(t: ^testing.T) {
iter := avl.iterator(&tree, avl.Direction.Forward)
testing.expect(t, avl.iterator_get(&iter) == nil, "empty/iterator: first node should be nil")
r := rand.create(t.seed)
context.random_generator = rand.default_random_generator(&r)
// Test insertion.
NR_INSERTS :: 32 + 1 // Ensure at least 1 collision.
inserted_map := make(map[int]^avl.Node(int))
@@ -14,9 +14,6 @@ test_rbtree_integer :: proc(t: ^testing.T, $Key: typeid, $Value: typeid) {
defer mem.tracking_allocator_destroy(&track)
context.allocator = mem.tracking_allocator(&track)
r := rand.create(t.seed)
context.random_generator = rand.default_random_generator(&r)
log.infof("Testing Red-Black Tree($Key=%v,$Value=%v) using random seed %v.", type_info_of(Key), type_info_of(Value), t.seed)
tree: rb.Tree(Key, Value)
rb.init(&tree)
+1 -2
View File
@@ -53,8 +53,7 @@ test_xxhash_zero_streamed_random_updates :: proc(t: ^testing.T) {
testing.expect(t, xxh3_128_err == nil, "Problem initializing XXH3_128 state")
// XXH3_128_update
random_seed := rand.create(t.seed)
context.random_generator = rand.default_random_generator(&random_seed)
rand.reset(t.seed)
for len(b) > 0 {
update_size := min(len(b), rand.int_max(8192))
if update_size > 4096 {
@@ -0,0 +1,35 @@
package test_core_math_rand
import "core:math/rand"
import "core:testing"
@test
test_default_rand_determinism :: proc(t: ^testing.T) {
rand.reset(13)
first_value := rand.int127()
rand.reset(13)
second_value := rand.int127()
testing.expect(t, first_value == second_value, "Context default random number generator is non-deterministic.")
}
@test
test_default_rand_determinism_user_set :: proc(t: ^testing.T) {
rng_state_1 := rand.create(13)
rng_state_2 := rand.create(13)
rng_1 := rand.default_random_generator(&rng_state_1)
rng_2 := rand.default_random_generator(&rng_state_2)
first_value, second_value: i128
{
context.random_generator = rng_1
first_value = rand.int127()
}
{
context.random_generator = rng_2
second_value = rand.int127()
}
testing.expect(t, first_value == second_value, "User-set default random number generator is non-deterministic.")
}
+1
View File
@@ -25,6 +25,7 @@ download_assets :: proc() {
@(require) import "math/big"
@(require) import "math/linalg/glsl"
@(require) import "math/noise"
@(require) import "math/rand"
@(require) import "mem"
@(require) import "net"
@(require) import "odin"
+2 -4
View File
@@ -11,8 +11,7 @@ test_sort_with_indices :: proc(t: ^testing.T) {
test_sizes :: []int{7, 13, 347, 1031, 10111, 100003}
for test_size in test_sizes {
r := rand.create(t.seed)
context.random_generator = rand.default_random_generator(&r)
rand.reset(t.seed)
vals := make([]u64, test_size)
r_idx := make([]int, test_size) // Reverse index
@@ -63,8 +62,7 @@ test_sort_by_indices :: proc(t: ^testing.T) {
test_sizes :: []int{7, 13, 347, 1031, 10111, 100003}
for test_size in test_sizes {
r := rand.create(t.seed)
context.random_generator = rand.default_random_generator(&r)
rand.reset(t.seed)
vals := make([]u64, test_size)
r_idx := make([]int, test_size) // Reverse index