From 3949e2220feca6c718a27ecc0fd5cb1cde56f7b7 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Tue, 15 Nov 2022 01:27:29 +0100 Subject: [PATCH] Test new map when used as a set. map[K]struct{} works fine. --- tests/internal/test_map.odin | 117 +++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) diff --git a/tests/internal/test_map.odin b/tests/internal/test_map.odin index 597f3ea1c..781fbad74 100644 --- a/tests/internal/test_map.odin +++ b/tests/internal/test_map.odin @@ -201,6 +201,120 @@ map_delete_random_key_value :: proc(t: ^testing.T) { } } +@test +set_insert_random_key_value :: proc(t: ^testing.T) { + seed_incr := u64(0) + for entries in ENTRY_COUNTS { + fmt.printf("[set_insert_random_key_value] Testing %v entries.\n", entries) + m: map[i64]struct{} + defer delete(m) + + unique_keys := 0 + r := rand.create(seed + seed_incr) + for _ in 0.. 5 { + fmt.println("... and more") + break + } + expect(t, false, fmt.tprintf("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 { + fmt.printf("[set_delete_random_key_value] Testing %v entries.\n", entries) + m: map[i64]struct{} + defer delete(m) + + unique_keys := 0 + r := rand.create(seed + seed_incr) + for _ in 0.. 5 { + fmt.println("... and more") + break + } + expect(t, false, fmt.tprintf("Unexpected key present. Expected m[%v] to have been deleted", k)) + } + } else { + if k not_in m { + num_fails += 1 + if num_fails > 5 { + fmt.println("... and more") + break + } + expect(t, false, fmt.tprintf("Expected key not present. Expected m[%v] to exist", k)) + } + } + } + seed_incr += 1 + } +} + // -------- -------- -------- -------- -------- -------- -------- -------- -------- -------- main :: proc() { @@ -219,6 +333,9 @@ main :: proc() { mem_track_test(&t, map_update_random_key_value) mem_track_test(&t, map_delete_random_key_value) + mem_track_test(&t, set_insert_random_key_value) + mem_track_test(&t, set_delete_random_key_value) + fmt.printf("%v/%v tests successful.\n", TEST_count - TEST_fail, TEST_count) if TEST_fail > 0 { os.exit(1)