package game import ( "testing" "gitea.brasse-pc.eu/brasse/metro-puzzle-jp/internal/level" ) // TestAllSoundsDecode: alla ljud som spelet refererar finns och går att // avkoda (utan ljudkontext eller fönster). func TestAllSoundsDecode(t *testing.T) { seen := map[string]bool{} for _, name := range AllSounds() { if seen[name] { t.Errorf("%s listas två gånger", name) } seen[name] = true pcm, err := decodeSound(name) if err != nil { t.Errorf("%s: %v", name, err) continue } if len(pcm) < sampleRate/20*4 { // minst 50 ms stereo 16-bit t.Errorf("%s: för kort (%d byte)", name, len(pcm)) } } } func TestMelodyForIsStableAndKnown(t *testing.T) { known := map[string]bool{} for _, m := range StationMelodies { known[m] = true } a := &level.Level{ID: "005-ueno", Station: "ueno"} if m := MelodyFor(a); !known[m] || m != MelodyFor(a) { t.Fatalf("MelodyFor = %q", m) } if m := MelodyFor(&level.Level{ID: "x", Melody: "c"}); m != "melody-c" { t.Fatalf("melody-fältet ska vinna: %q", m) } var nilAudio *Audio nilAudio.Play(SoundWin, 1) // nil-säkert nilAudio.Loop(SoundMusicMap, 1) nilAudio.SetVolumes(1, 1, 1) nilAudio.StopLoop() }