Files
metro-puzzle-jp/internal/rng/rng_test.go
claude c1f9546af6 M0: skelett, byggkedja och dokumentation för JP Subway Pussel
- Go 1.27 + Ebitengine v2.10, intern upplösning 320x180 med heltalsskalning
- internal/res (resursuppslag), internal/rng (seedad slump), internal/level
  (banformat, validering, BFS-lösbarhet) med tester; internal/archtest
  kontrollerar att bara presentationslagret beror på Ebitengine
- tools/build: debug -> build/debug/, release -> build/release/<os>-<arch>/
  med resources/ bredvid binären; Windows korsbyggs utan C-verktyg
- VS Code tasks (build/test/release) och launch (dlv)
- Första banan 001-flygplatsen, sv/en-texter, skyltordbok, placeholder-sprite
- doc/: spelbeskrivning (renskriven), mål och tester, roadmap med teknikval
  (M0–M12), plan.md; README med bygg- och beroendeinformation

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-23 18:52:10 +02:00

39 lines
921 B
Go

package rng
import "testing"
func TestDeterministic(t *testing.T) {
a := FromInt(42).New()
b := FromInt(42).New()
for i := 0; i < 1000; i++ {
if x, y := a.Uint64(), b.Uint64(); x != y {
t.Fatalf("sekvensen skiljer sig vid %d: %d != %d", i, x, y)
}
}
}
func TestDifferentSeedsDiffer(t *testing.T) {
if FromInt(1).New().Uint64() == FromInt(2).New().Uint64() {
t.Fatal("olika seeds gav samma första värde")
}
}
func TestDeriveIsStableAndContextual(t *testing.T) {
s := FromInt(7)
if s.Derive("ticket") != s.Derive("ticket") {
t.Fatal("Derive är inte deterministisk")
}
if s.Derive("ticket") == s.Derive("toilet") {
t.Fatal("olika kontexter gav samma del-seed")
}
if s.Derive("ticket") == FromInt(8).Derive("ticket") {
t.Fatal("olika rot-seeds gav samma del-seed")
}
}
func TestNewSeedIsRandom(t *testing.T) {
if NewSeed() == NewSeed() {
t.Fatal("två NewSeed() gav samma värde")
}
}