1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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]
);
};
};
};
};
|