v2 / vlib / builtin / map_delete_reclaim_test.v
46 lines · 44 sloc · 1014 bytes · 967e49d89f73da6ffd3ee13fc903664cf0107a3a
Raw
1struct DenseArrayLayoutForTest {
2 key_bytes int
3 value_bytes int
4mut:
5 cap int
6 len int
7 deletes u32
8 all_deleted &u8 = unsafe { nil }
9 keys &u8 = unsafe { nil }
10 values &u8 = unsafe { nil }
11}
12
13struct MapLayoutForTest {
14 key_bytes int
15 value_bytes int
16mut:
17 even_index u32
18 cached_hashbits u8
19 shift u8
20 key_values DenseArrayLayoutForTest
21 metas &u32 = unsafe { nil }
22 extra_metas u32
23 has_string_keys bool
24 hash_fn voidptr
25 key_eq_fn voidptr
26 clone_fn voidptr
27 free_fn voidptr
28pub mut:
29 len int
30}
31
32fn test_map_delete_reclaims_dense_array_tail() {
33 mut m := map[string]string{}
34 raw := unsafe { &MapLayoutForTest(&m) }
35 initial_cap := raw.key_values.cap
36 for i in 0 .. 100 {
37 key := i.str()
38 m[key] = key
39 m.delete(key)
40 assert m.len == 0
41 assert raw.key_values.len == 0
42 assert raw.key_values.deletes == 0
43 assert raw.key_values.cap == initial_cap
44 assert raw.key_values.all_deleted == unsafe { nil }
45 }
46}
47