package audio import ( "math" "testing" ) func TestResampledSource(t *testing.T) { src := &WAVSource{frames: []Frame{NewFrame(0.1, 0.1), NewFrame(0.2, 0.2)}, SampleRate: 48000} rs := NewResampledSource(src, 96000) a := rs.NextFrame() b := rs.NextFrame() if a == (Frame{}) || b == (Frame{}) { t.Fatal("expected non-zero frames") } } func TestResampledSourceInterpolation(t *testing.T) { // 2 samples at 48k, target at 96k -> ratio=0.5, so we should // get interpolated values between the two source frames. src := &WAVSource{ frames: []Frame{NewFrame(0, 0), NewFrame(1, 1)}, SampleRate: 48000, } rs := NewResampledSource(src, 96000) // First sample: position=0.0, exact frame[0] -> (0,0) f0 := rs.NextFrame() if math.Abs(float64(f0.L)) > 1e-9 { t.Fatalf("expected L=0 at pos 0, got %.6f", f0.L) } // Second sample: position=0.5, interpolated -> (0.5, 0.5) f1 := rs.NextFrame() if math.Abs(float64(f1.L)-0.5) > 1e-9 { t.Fatalf("expected L=0.5 at pos 0.5, got %.6f", f1.L) } } func TestResampledSourceNilSrc(t *testing.T) { rs := NewResampledSource(nil, 48000) f := rs.NextFrame() if f.L != 0 || f.R != 0 { t.Fatal("expected zero frame for nil source") } }