From 4800e8e463b68b3ab9067509ea052388609f7354 Mon Sep 17 00:00:00 2001 From: Markus Graf Date: Fri, 27 Mar 2026 08:54:34 +0100 Subject: [PATCH] test(08-01): future-proof frequency bounds and rename test - Replace hardcoded [60, 1100] Hz bounds with Nyquist-based validation (0, 22050) - Rename TestNumLayersMatchesAllClasses to TestClassFreqConfigsMatchAllClasses - Remove duplicate TestClassFreqConfigsComplete (subset of TestAllClassesHaveConfig) - All tests green --- synth/config_test.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/synth/config_test.go b/synth/config_test.go index e969a7e..f041e7f 100644 --- a/synth/config_test.go +++ b/synth/config_test.go @@ -16,10 +16,13 @@ func TestAllClassesHaveConfig(t *testing.T) { } func TestFrequenciesInRange(t *testing.T) { + const nyquist = float64(synth.SampleRate) / 2.0 // 22050 Hz 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) + if cfg.BaseHz <= 0 { + t.Errorf("class %q BaseHz=%.1f must be positive", class, cfg.BaseHz) + } + if cfg.BaseHz >= nyquist { + t.Errorf("class %q BaseHz=%.1f exceeds Nyquist (%.1f Hz)", class, cfg.BaseHz, nyquist) } } } @@ -50,15 +53,7 @@ func TestPanPositionsInRange(t *testing.T) { } } -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) { +func TestClassFreqConfigsMatchAllClasses(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()))