Pārlūkot izejas kodu

feat: add output-rate override and stronger offline wav tests

tags/v0.4.0-pre
Jan Svabenik pirms 1 mēnesi
vecāks
revīzija
667b7365ce
3 mainītis faili ar 29 papildinājumiem un 0 dzēšanām
  1. +4
    -0
      cmd/offline/main.go
  2. +14
    -0
      internal/audio/wav_test.go
  3. +11
    -0
      internal/offline/generator_test.go

+ 4
- 0
cmd/offline/main.go Parādīt failu

@@ -14,12 +14,16 @@ func main() {
configPath := flag.String("config", "", "path to JSON config")
out := flag.String("output", "", "output IQ file path")
duration := flag.Duration("duration", 2*time.Second, "generation duration")
outputRate := flag.Int("output-rate", 0, "override composite output sample rate")
flag.Parse()

cfg, err := cfgpkg.Load(*configPath)
if err != nil {
log.Fatalf("load config: %v", err)
}
if *outputRate > 0 {
cfg.FM.CompositeRateHz = *outputRate
}

gen := offpkg.NewGenerator(cfg)
if err := gen.WriteFile(*out, *duration); err != nil {


+ 14
- 0
internal/audio/wav_test.go Parādīt failu

@@ -10,6 +10,9 @@ func TestPCM16ToSample(t *testing.T) {
if pcm16ToSample(32767) <= 0 {
t.Fatal("expected positive sample")
}
if pcm16ToSample(-32768) < -1.0 {
t.Fatal("expected clamped lower bound")
}
}

func TestLoadWAVSource(t *testing.T) {
@@ -36,3 +39,14 @@ func TestLoadWAVSource(t *testing.T) {
}
_ = src.NextFrame()
}

func TestRejectInvalidWAV(t *testing.T) {
dir := t.TempDir()
path := filepath.Join(dir, "bad.wav")
if err := os.WriteFile(path, []byte("nope"), 0o644); err != nil {
t.Fatalf("write wav: %v", err)
}
if _, err := LoadWAVSource(path); err == nil {
t.Fatal("expected wav load error")
}
}

+ 11
- 0
internal/offline/generator_test.go Parādīt failu

@@ -3,6 +3,7 @@ package offline
import (
"os"
"path/filepath"
"strings"
"testing"
"time"

@@ -36,3 +37,13 @@ func TestWriteFile(t *testing.T) {
t.Fatal("expected non-empty file")
}
}

func TestSummaryUsesToneFallback(t *testing.T) {
cfg := cfgpkg.Default()
cfg.Audio.InputPath = ""
g := NewGenerator(cfg)
summary := g.Summary(10 * time.Millisecond)
if !strings.Contains(summary, "source=tones") {
t.Fatalf("unexpected summary: %s", summary)
}
}

Notiek ielāde…
Atcelt
Saglabāt