|
|
|
@ -13,15 +13,49 @@ describe("chase rng", () => { |
|
|
|
expect(sequenceA).toEqual(sequenceB); |
|
|
|
}); |
|
|
|
|
|
|
|
it("normalizeSeed returns a number for undefined input", () => { |
|
|
|
expect(typeof normalizeSeed(undefined)).toBe("number"); |
|
|
|
it("keeps createRng outputs in [0, 1)", () => { |
|
|
|
const rng = createRng(12345); |
|
|
|
const samples = Array.from({ length: 500 }, () => rng()); |
|
|
|
|
|
|
|
for (const value of samples) { |
|
|
|
expect(value).toBeGreaterThanOrEqual(0); |
|
|
|
expect(value).toBeLessThan(1); |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
it("normalizeSeed returns a number for empty string", () => { |
|
|
|
expect(typeof normalizeSeed("")).toBe("number"); |
|
|
|
it("matches a stable golden sequence for a fixed seed", () => { |
|
|
|
const rng = createRng(12345); |
|
|
|
const sequence = Array.from({ length: 5 }, () => rng()); |
|
|
|
|
|
|
|
expect(sequence).toEqual([ |
|
|
|
0.9797282677609473, |
|
|
|
0.3067522644996643, |
|
|
|
0.484205421525985, |
|
|
|
0.817934412509203, |
|
|
|
0.5094283693470061, |
|
|
|
]); |
|
|
|
}); |
|
|
|
|
|
|
|
it("produces different sequences for different seeds", () => { |
|
|
|
const rngA = createRng(12345); |
|
|
|
const rngB = createRng(12346); |
|
|
|
|
|
|
|
const sequenceA = Array.from({ length: 5 }, () => rngA()); |
|
|
|
const sequenceB = Array.from({ length: 5 }, () => rngB()); |
|
|
|
|
|
|
|
expect(sequenceA).not.toEqual(sequenceB); |
|
|
|
}); |
|
|
|
|
|
|
|
it("normalizeSeed returns a number for non-numeric string", () => { |
|
|
|
it("normalizes undefined, empty and non-numeric string to numbers", () => { |
|
|
|
expect(typeof normalizeSeed(undefined)).toBe("number"); |
|
|
|
expect(typeof normalizeSeed("")).toBe("number"); |
|
|
|
expect(typeof normalizeSeed("abc")).toBe("number"); |
|
|
|
}); |
|
|
|
|
|
|
|
it("normalizes edge case seeds into uint32 semantics", () => { |
|
|
|
expect(normalizeSeed(NaN)).toBe(0x9e3779b9); |
|
|
|
expect(normalizeSeed(-1)).toBe(0xffffffff); |
|
|
|
expect(normalizeSeed(1.9)).toBe(1); |
|
|
|
expect(normalizeSeed(" ")).toBe(0x9e3779b9); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|