internal/format/format_test.go

main
gallery/internal/format/format_test.go history · blame · raw

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}