package transcode import "testing" // designPublishedRoutes 是 design/25 §3.1「格式矩阵」里**已发布**的路数: // 本期只有一条 —— `amr → wav`。 // // 这条常量刻意写在测试里:谁加了实现却忘了在 DefaultCodecs 注册(或反过来), // 这条断言就会红,逼他回设计里对一次账。这就是 design/25 §6.3 要的「把值钉死在 // 设计上」,与只测边界逻辑互补。 const designPublishedRoutes = 1 // TestDefaultCodecsMatchesPublishedMatrix 断言注册点与设计矩阵一致。 func TestDefaultCodecsMatchesPublishedMatrix(t *testing.T) { codecs := DefaultCodecs() if len(codecs) != designPublishedRoutes { t.Fatalf("DefaultCodecs() registers %d routes, design/25 §3.1 publishes %d: "+ "加了实现要在此处同步注册(并回设计对账)", len(codecs), designPublishedRoutes) } route := codecs[0] if route.From() != FormatAMR || route.To() != FormatWAV { t.Fatalf("DefaultCodecs()[0] = %s -> %s, want amr -> wav", route.From(), route.To()) } } // TestEnginePublishesOnlyTheDesignRoute 断言引擎对外报告的路也是那一条: // Supports 只认 amr→wav,Formats 只报 amr/wav。 func TestEnginePublishesOnlyTheDesignRoute(t *testing.T) { eng := NewEngine(DefaultLimits(), WithCodecs(DefaultCodecs()...)) if err := eng.RegistrationError(); err != nil { t.Fatalf("registration: %v", err) } if !eng.Supports(FormatAMR, FormatWAV) { t.Fatalf("amr -> wav must be supported") } for _, pair := range [][2]Format{ {FormatWAV, FormatAMR}, {FormatAMR, FormatAMR}, {FormatWAV, FormatWAV}, {FormatAMRWB, FormatWAV}, {FormatAMR, FormatAMRWB}, } { if eng.Supports(pair[0], pair[1]) { t.Errorf("Supports(%q, %q) = true, want false(本期只发 amr -> wav)", pair[0], pair[1]) } } formats := eng.Formats() if len(formats) != 2 || formats[0] != FormatAMR || formats[1] != FormatWAV { t.Fatalf("Formats = %v, want [amr wav]", formats) } }