|
- package decoder
-
- import (
- "context"
- "errors"
- "io"
- "testing"
-
- "github.com/jan/fm-rds-tx/internal/ingest"
- )
-
- type fakeDecoder struct{ name string }
-
- func (d *fakeDecoder) Name() string { return d.name }
-
- func (d *fakeDecoder) DecodeStream(_ context.Context, _ io.Reader, _ StreamMeta, _ func(ingest.PCMChunk) error) error {
- return nil
- }
-
- func TestRegistrySelectByContentType(t *testing.T) {
- r := NewRegistry()
- r.Register("mp3", func() Decoder { return &fakeDecoder{name: "mp3"} })
- r.Register("oggvorbis", func() Decoder { return &fakeDecoder{name: "ogg"} })
- r.Register("aac", func() Decoder { return &fakeDecoder{name: "aac"} })
-
- tests := []struct {
- ct string
- want string
- }{
- {"audio/mpeg", "mp3"},
- {"audio/mpeg; charset=utf-8", "mp3"},
- {"application/ogg", "ogg"},
- {"audio/ogg;codecs=vorbis", "ogg"},
- {"audio/aac", "aac"},
- {"audio/aacp", "aac"},
- }
- for _, tt := range tests {
- dec, err := r.SelectByContentType(tt.ct)
- if err != nil {
- t.Fatalf("content-type %s: %v", tt.ct, err)
- }
- if dec.Name() != tt.want {
- t.Fatalf("content-type %s: got %s want %s", tt.ct, dec.Name(), tt.want)
- }
- }
- }
-
- func TestRegistrySelectByContentTypeUnsupported(t *testing.T) {
- r := NewRegistry()
- _, err := r.SelectByContentType("application/octet-stream")
- if !errors.Is(err, ErrUnsupported) {
- t.Fatalf("expected ErrUnsupported, got %v", err)
- }
- }
|