internal/format/format_test.go
44 lines · 1255 bytes
1package format
2
3import (
4 "io"
5 "path/filepath"
6 "strings"
7 "testing"
8)
9
10type fake struct{ name, ext string }
11
12func (f fake) Name() string { return f.name }
13func (f fake) Match(p string) bool { return strings.EqualFold(filepath.Ext(p), f.ext) }
14func (fake) Metadata(string) (Meta, error) { return Meta{}, nil }
15func (fake) Resize(string, int, io.Writer) error { return nil }
16func (fake) Kind() Kind { return KindImage }
17
18func TestRegistryFirstMatchWins(t *testing.T) {
19 var r Registry
20 r.Register(fake{"a", ".jpg"})
21 r.Register(fake{"b", ".jpg"})
22 r.Register(fake{"c", ".png"})
23
24 if got := r.Lookup("x/IMG.JPG"); got == nil || got.Name() != "a" {
25 t.Fatalf("jpg: got %v, want a", got)
26 }
27 if got := r.Lookup("x.png"); got == nil || got.Name() != "c" {
28 t.Fatalf("png: got %v, want c", got)
29 }
30 if got := r.Lookup("notes.txt"); got != nil {
31 t.Fatalf("txt: got %v, want nil", got)
32 }
33}
34
35func TestHasExt(t *testing.T) {
36 exts := []string{".jpg", ".jpeg"}
37 for p, want := range map[string]bool{
38 "a.jpg": true, "a.JPEG": true, "a.png": false, "jpg": false, "a.jpg.txt": false,
39 } {
40 if got := hasExt(p, exts); got != want {
41 t.Errorf("hasExt(%q) = %v, want %v", p, got, want)
42 }
43 }
44}