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>
This commit is contained in:
38
internal/rng/rng_test.go
Normal file
38
internal/rng/rng_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
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")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user