summaryrefslogtreecommitdiff
path: root/comparray/+test.ha
diff options
context:
space:
mode:
authorLassi Pulkkinen <lassi@pulk.fi>2024-10-31 03:11:21 +0200
committerLassi Pulkkinen <lassi@pulk.fi>2024-10-31 03:51:35 +0200
commitae44478b30d890fe0fb04022f44d474dcdcc3f9d (patch)
tree5f462459ae4b47d22114eed717d1382d08cf4dfe /comparray/+test.ha
Initial commit (import old repo)HEADmain
Diffstat (limited to 'comparray/+test.ha')
-rw-r--r--comparray/+test.ha52
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]
+ );
+ };
+ };
+ };
+};