🎉 live server seems to be working now
This commit is contained in:
70
third_party/sendspin-go/pkg/audio/output/volume_test.go
vendored
Normal file
70
third_party/sendspin-go/pkg/audio/output/volume_test.go
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
// ABOUTME: Tests for shared volume/mute helpers in pkg/audio/output
|
||||
// ABOUTME: Covers multiplier table, half-scale, mute, and 24-bit clamping
|
||||
package output
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/Sendspin/sendspin-go/pkg/audio"
|
||||
)
|
||||
|
||||
func TestVolumeMultiplier(t *testing.T) {
|
||||
tests := []struct {
|
||||
volume int
|
||||
muted bool
|
||||
expected float64
|
||||
}{
|
||||
{100, false, 1.0},
|
||||
{50, false, 0.5},
|
||||
{0, false, 0.0},
|
||||
{80, true, 0.0}, // muted overrides volume
|
||||
}
|
||||
|
||||
for _, tt := range tests {
|
||||
result := getVolumeMultiplier(tt.volume, tt.muted)
|
||||
if result != tt.expected {
|
||||
t.Errorf("volume=%d muted=%v: expected %f, got %f",
|
||||
tt.volume, tt.muted, tt.expected, result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyVolume_HalfScale(t *testing.T) {
|
||||
samples := []int32{1000 << 8, -1000 << 8}
|
||||
|
||||
result := applyVolume(samples, 50, false)
|
||||
|
||||
if result[0] != int32(500<<8) {
|
||||
t.Errorf("sample 0: expected %d, got %d", 500<<8, result[0])
|
||||
}
|
||||
if result[1] != int32(-500<<8) {
|
||||
t.Errorf("sample 1: expected %d, got %d", -500<<8, result[1])
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyVolume_Muted(t *testing.T) {
|
||||
samples := []int32{audio.Max24Bit, audio.Min24Bit, 1 << 20}
|
||||
|
||||
result := applyVolume(samples, 100, true)
|
||||
|
||||
for i, got := range result {
|
||||
if got != 0 {
|
||||
t.Errorf("sample %d: expected 0 when muted, got %d", i, got)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyVolume_Clamps24Bit(t *testing.T) {
|
||||
// Inputs outside the 24-bit range must clamp, not overflow.
|
||||
overMax := int32(audio.Max24Bit + 1)
|
||||
underMin := int32(audio.Min24Bit - 1)
|
||||
|
||||
result := applyVolume([]int32{overMax, underMin}, 100, false)
|
||||
|
||||
if result[0] != audio.Max24Bit {
|
||||
t.Errorf("max clamp: expected %d, got %d", audio.Max24Bit, result[0])
|
||||
}
|
||||
if result[1] != audio.Min24Bit {
|
||||
t.Errorf("min clamp: expected %d, got %d", audio.Min24Bit, result[1])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user