30 lib test files: package <mod> -> <mod>_test, the sanctioned Go-over-Hare departure (CLAUDE.md rule-9 carve-out; white-box testing deferred, not forbidden). decimaltest retired per .ai/rob-16-decimaltest-ruling.md: Hare ships no decimal_test.ha (engine covered transitively); coverage migrated losslessly into stoftest rows (all-9s carry, nd>19 pure-decimal) + ftostest f64_roundtrip mirroring ref/hare strconv ftos_test.ha tcsf64; k=0 micro-gap documented at site. regex_test keeps its white-box internal probes under a documented rule-7 divergence (rehome = task #9). 922_decimal_run + its 989 byte-id row removed with the fixture.
64 lines
1.5 KiB
Plaintext
64 lines
1.5 KiB
Plaintext
package random_test;
|
|
|
|
import random;
|
|
|
|
@test fn seq() void = {
|
|
let r: random.random = random.init(1234567u64);
|
|
if (random.next(&r) != 6457827717110365317u64) { let _: i32 = 1/0; };
|
|
if (random.next(&r) != 3203168211198807973u64) { let _: i32 = 1/0; };
|
|
if (random.next(&r) != 9817491932198370423u64) { let _: i32 = 1/0; };
|
|
if (random.next(&r) != 4593380528125082431u64) { let _: i32 = 1/0; };
|
|
if (random.next(&r) != 16408922859458223821u64) { let _: i32 = 1/0; };
|
|
};
|
|
|
|
@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) {
|
|
if (random.next(&a) != random.next(&b)) { let _: i32 = 1/0; };
|
|
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;
|
|
if (vv >= 17u64) { let _: i32 = 1/0; };
|
|
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);
|
|
if (v >= 16u64) { let _: i32 = 1/0; };
|
|
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);
|
|
if (v >= 100u64) { let _: i32 = 1/0; };
|
|
i += 1;
|
|
};
|
|
};
|
|
|
|
export fn main() i32 = {
|
|
seq();
|
|
deterministic();
|
|
u32n_inrange();
|
|
u64n_pow2();
|
|
u64n_nonpow2();
|
|
return 0;
|
|
};
|