mirror of
https://github.com/mwisnowski/mtg_python_deckbuilder.git
synced 2025-12-17 08:00:13 +01:00
feat(themes): whitelist governance, synergy cap, docs + tests; feat(random): laid roadwork for random implementation, testing in headless confirmed
This commit is contained in:
parent
03e839fb87
commit
16261bbf09
34 changed files with 12594 additions and 23 deletions
37
code/tests/test_random_util.py
Normal file
37
code/tests/test_random_util.py
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
from __future__ import annotations
|
||||
|
||||
from random_util import derive_seed_from_string, set_seed, get_random, generate_seed
|
||||
|
||||
|
||||
def test_derive_seed_from_string_stable():
|
||||
# Known value derived from SHA-256('test-seed') first 8 bytes masked to 63 bits
|
||||
assert derive_seed_from_string('test-seed') == 6214070892065607348
|
||||
# Int passthrough-like behavior (normalized to positive 63-bit)
|
||||
assert derive_seed_from_string(42) == 42
|
||||
assert derive_seed_from_string(-42) == 42
|
||||
|
||||
|
||||
def test_set_seed_deterministic_stream():
|
||||
r1 = set_seed('alpha')
|
||||
r2 = set_seed('alpha')
|
||||
seq1 = [r1.random() for _ in range(5)]
|
||||
seq2 = [r2.random() for _ in range(5)]
|
||||
assert seq1 == seq2
|
||||
|
||||
|
||||
def test_get_random_unseeded_independent():
|
||||
a = get_random()
|
||||
b = get_random()
|
||||
# Advance a few steps
|
||||
_ = [a.random() for _ in range(3)]
|
||||
_ = [b.random() for _ in range(3)]
|
||||
# They should not be the same object and streams should diverge vs seeded
|
||||
assert a is not b
|
||||
|
||||
|
||||
def test_generate_seed_range():
|
||||
s = generate_seed()
|
||||
assert isinstance(s, int)
|
||||
assert s >= 0
|
||||
# Ensure it's within 63-bit range
|
||||
assert s < (1 << 63)
|
||||
Loading…
Add table
Add a link
Reference in a new issue