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] ); }; }; }; };