Files
yoloyolo/synth/config_test.go
T
gurix b2b5ab679b test(05-02): update tests for new NewBank signature and dynamic gain
- All NewBank calls updated to two-argument form passing ClassFreqConfigs
- TestMixerNoClip iterates ClassFreqConfigs keys instead of classify.AllClasses()
- TestNewBankDynamicGain verifies gainPerLayer=1/N for 3-class custom config
- TestNewBankCustomConfigNoClip verifies no-clip guarantee with 2-class config
- TestNumLayersMatchesAllClasses now asserts len(ClassFreqConfigs) == len(AllClasses())
2026-03-26 17:38:37 +01:00

67 lines
1.9 KiB
Go

package synth_test
import (
"testing"
"github.com/netsynth/netsynth/classify"
"github.com/netsynth/netsynth/synth"
)
func TestAllClassesHaveConfig(t *testing.T) {
for _, class := range classify.AllClasses() {
if _, ok := synth.ClassFreqConfigs[class]; !ok {
t.Errorf("class %q has no entry in ClassFreqConfigs", class)
}
}
}
func TestFrequenciesInRange(t *testing.T) {
for class, cfg := range synth.ClassFreqConfigs {
// D-05: unknown buckets use 850-1100 Hz dissonant range; known classes use 60-800 Hz
if cfg.BaseHz < 60 || cfg.BaseHz > 1100 {
t.Errorf("class %q BaseHz=%.1f is out of range [60, 1100]", class, cfg.BaseHz)
}
}
}
func TestFrequenciesUnique(t *testing.T) {
seen := make(map[float64]classify.TrafficClass)
for class, cfg := range synth.ClassFreqConfigs {
if prev, exists := seen[cfg.BaseHz]; exists {
t.Errorf("classes %q and %q share the same BaseHz=%.1f", prev, class, cfg.BaseHz)
}
seen[cfg.BaseHz] = class
}
}
func TestHarmonicsNonEmpty(t *testing.T) {
for class, cfg := range synth.ClassFreqConfigs {
if len(cfg.Harmonics) < 2 {
t.Errorf("class %q has fewer than 2 harmonics (got %d)", class, len(cfg.Harmonics))
}
}
}
func TestPanPositionsInRange(t *testing.T) {
for class, cfg := range synth.ClassFreqConfigs {
if cfg.Pan < -1.0 || cfg.Pan > 1.0 {
t.Errorf("class %q Pan=%.2f is out of range [-1.0, 1.0]", class, cfg.Pan)
}
}
}
func TestClassFreqConfigsComplete(t *testing.T) {
for _, class := range classify.AllClasses() {
if _, ok := synth.ClassFreqConfigs[class]; !ok {
t.Errorf("ClassFreqConfigs missing entry for class %q", class)
}
}
}
func TestNumLayersMatchesAllClasses(t *testing.T) {
if len(synth.ClassFreqConfigs) != len(classify.AllClasses()) {
t.Errorf("ClassFreqConfigs has %d entries but AllClasses() has %d entries",
len(synth.ClassFreqConfigs), len(classify.AllClasses()))
}
}