package test_internal_map import "core:log" import "base:intrinsics" import "core:math/rand" import "core:testing" ENTRY_COUNTS := []int{11, 101, 1_001, 10_001, 100_001, 1_000_001} @test map_insert_random_key_value :: proc(t: ^testing.T) { seed_incr := u64(0) for entries in ENTRY_COUNTS { log.infof("Testing %v entries", entries) m: map[i64]i64 defer delete(m) unique_keys := 0 r := rand.create(t.seed + seed_incr) for _ in 0.. 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected value. Expected m[%v] = %v, got %v", k, v, m[k]) } } seed_incr += 1 } } @test map_update_random_key_value :: proc(t: ^testing.T) { seed_incr := u64(0) for entries in ENTRY_COUNTS { log.infof("Testing %v entries", entries) m: map[i64]i64 defer delete(m) unique_keys := 0 r := rand.create(t.seed + seed_incr) for _ in 0.. 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected value. Expected m[%v] = %v, got %v", k, v, m[k]) } } seed_incr += 1 } } @test map_delete_random_key_value :: proc(t: ^testing.T) { seed_incr := u64(0) for entries in ENTRY_COUNTS { log.infof("Testing %v entries", entries) m: map[i64]i64 defer delete(m) unique_keys := 0 r := rand.create(t.seed + seed_incr) for _ in 0.. 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected key present. Expected m[%v] to have been deleted, got %v", k, m[k]) } } else { if k not_in m { num_fails += 1 if num_fails > 5 { log.info("... and more") break } testing.expectf(t, false, "Expected key not present. Expected m[%v] = %v", k, v) } else if m[k] != v { num_fails += 1 if num_fails > 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected value. Expected m[%v] = %v, got %v", k, v, m[k]) } } } seed_incr += 1 } } @test set_insert_random_key_value :: proc(t: ^testing.T) { seed_incr := u64(0) for entries in ENTRY_COUNTS { log.infof("Testing %v entries", entries) m: map[i64]struct{} defer delete(m) unique_keys := 0 r := rand.create(t.seed + seed_incr) for _ in 0.. 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected value. Expected m[%v] to exist", k) } } seed_incr += 1 } } @test set_delete_random_key_value :: proc(t: ^testing.T) { seed_incr := u64(0) for entries in ENTRY_COUNTS { log.infof("Testing %v entries", entries) m: map[i64]struct{} defer delete(m) unique_keys := 0 r := rand.create(t.seed + seed_incr) for _ in 0.. 5 { log.info("... and more") break } testing.expectf(t, false, "Unexpected key present. Expected m[%v] to have been deleted", k) } } else { if k not_in m { num_fails += 1 if num_fails > 5 { log.info("... and more") break } testing.expectf(t, false, "Expected key not present. Expected m[%v] to exist", k) } } } seed_incr += 1 } }