package random_test; import random; @test fn seq() void = { let r: random.random = random.init(1234567u64); assert(!(random.next(&r) != 6457827717110365317u64)); assert(!(random.next(&r) != 3203168211198807973u64)); assert(!(random.next(&r) != 9817491932198370423u64)); assert(!(random.next(&r) != 4593380528125082431u64)); assert(!(random.next(&r) != 16408922859458223821u64)); }; @test fn deterministic() void = { let a: random.random = random.init(42u64); let b: random.random = random.init(42u64); let i: i32 = 0; for (i < 32) { assert(!(random.next(&a) != random.next(&b))); i += 1; }; }; @test fn u32n_inrange() void = { let r: random.random = random.init(7u64); let i: i32 = 0; for (i < 200) { let v: u32 = random.u32n(&r, 17u32); // v stored as u64 with possible high bits — mask before compare. let vv: u64 = (v: u64) & 0xFFFFFFFFu64; assert(!(vv >= 17u64)); i += 1; }; }; @test fn u64n_pow2() void = { let r: random.random = random.init(99u64); let i: i32 = 0; for (i < 200) { let v: u64 = random.u64n(&r, 16u64); assert(!(v >= 16u64)); i += 1; }; }; @test fn u64n_nonpow2() void = { let r: random.random = random.init(123u64); let i: i32 = 0; for (i < 200) { let v: u64 = random.u64n(&r, 100u64); assert(!(v >= 100u64)); i += 1; }; };