From 8a3ab1c3d948a4a9004828bed2be74c673e5a836 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Wed, 17 Sep 2025 04:07:52 +0800 Subject: [PATCH] Add test for swiss --- ds/map/swiss/test.ha | 33 +++++++++++++++++++++++++++++++++ diff --git a/ds/map/swiss/test.ha b/ds/map/swiss/test.ha new file mode 100644 index 0000000000000000000000000000000000000000..262d1fcc01ef7ef1abea567693144b33fa6db886 --- /dev/null +++ b/ds/map/swiss/test.ha @@ -0,0 +1,33 @@ +use ds::map; +use errors; + +fn testhash(_params: nullable *opaque, key: []u8) size = { + let val: u64 = 0; + let limit = if (len(key) < 8z) len(key) else 8z; + for (let i = 0z; i < limit; i += 1) { + val |= (key[i]: u64) << (8u64 * (i: u64)); + }; + return (val: size); +}; + +@test fn invalid() void = { + match (new(0, &testhash, null)) { + case errors::invalid => void; + case *map => abort("swiss: accepted n_groups=0"); + case nomem => abort("swiss: nomem for n_groups=0"); + }; +}; + +@test fn test() void = { + const groups: [3]size = [1z, 17z, 128z]; + + for (let gi = 0z; gi < len(groups); gi += 1) { + let m = match (new(groups[gi], &testhash, null)) { + case let p: *map => yield p; + case errors::invalid => abort("swiss: invalid parameters"); + case nomem => abort("swiss: nomem"); + }; + defer finish(m); + map::stress_test(m, 20000); + }; +}; -- 2.48.1