diff options
author | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:11:21 +0200 |
---|---|---|
committer | Lassi Pulkkinen <lassi@pulk.fi> | 2024-10-31 03:51:35 +0200 |
commit | ae44478b30d890fe0fb04022f44d474dcdcc3f9d (patch) | |
tree | 5f462459ae4b47d22114eed717d1382d08cf4dfe /comparray/+test.ha |
Diffstat (limited to 'comparray/+test.ha')
-rw-r--r-- | comparray/+test.ha | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/comparray/+test.ha b/comparray/+test.ha new file mode 100644 index 0000000..df257d3 --- /dev/null +++ b/comparray/+test.ha @@ -0,0 +1,52 @@ +use bufio; +use fmt; +use math::random; +use os; + +@test fn struct_size() void = { + assert(size(Array) == 3 * size(*opaque)); +}; + +const TEST_SIZES: [_]u8 = [ + CONSTANT, 2, 3, 4, 5, 6, 7, 8, 16, 17, 32, 33, 100, 200, 255, + DIRECT, +]; +const TEST_ARRAYLEN: size = 4096; + +@test fn consistency() void = { + let rng = random::init(42); + + for (let i = 0z; i < len(TEST_SIZES); i += 1) { + for (let j = i + 1; j < len(TEST_SIZES); j += 1) { + fmt::printf("{},{} ", TEST_SIZES[i], TEST_SIZES[j])!; + + let array = new(TEST_SIZES[i], TEST_ARRAYLEN); + defer clear(&array, 0); + + let palette = get_palette(&array); + + for (let k = 0z; k < TEST_SIZES[i]; k += 1) { + palette[k] = random::next(&rng): u16; + }; + + let unpacked: []u16 = alloc([], TEST_ARRAYLEN); + defer free(unpacked); + + for (let k = 0z; k < TEST_ARRAYLEN; k += 1) { + const ref = + random::u32n(&rng, TEST_SIZES[i]): u8; + static append(unpacked, palette[ref]); + set(&array, k, ref); + }; + + grow_palette(&array, TEST_ARRAYLEN, TEST_SIZES[j]); + + for (let k = 0z; k < TEST_ARRAYLEN; k += 1) { + assert( + lookup(&array, get(&array, k)) + == unpacked[k] + ); + }; + }; + }; +}; |