package format import ( "io" "path/filepath" "strings" "testing" ) type fake struct{ name, ext string } func (f fake) Name() string { return f.name } func (f fake) Match(p string) bool { return strings.EqualFold(filepath.Ext(p), f.ext) } func (fake) Metadata(string) (Meta, error) { return Meta{}, nil } func (fake) Resize(string, int, io.Writer) error { return nil } func (fake) Kind() Kind { return KindImage } func TestRegistryFirstMatchWins(t *testing.T) { var r Registry r.Register(fake{"a", ".jpg"}) r.Register(fake{"b", ".jpg"}) r.Register(fake{"c", ".png"}) if got := r.Lookup("x/IMG.JPG"); got == nil || got.Name() != "a" { t.Fatalf("jpg: got %v, want a", got) } if got := r.Lookup("x.png"); got == nil || got.Name() != "c" { t.Fatalf("png: got %v, want c", got) } if got := r.Lookup("notes.txt"); got != nil { t.Fatalf("txt: got %v, want nil", got) } } func TestHasExt(t *testing.T) { exts := []string{".jpg", ".jpeg"} for p, want := range map[string]bool{ "a.jpg": true, "a.JPEG": true, "a.png": false, "jpg": false, "a.jpg.txt": false, } { if got := hasExt(p, exts); got != want { t.Errorf("hasExt(%q) = %v, want %v", p, got, want) } } }