diff --git a/tiff/writer_test.go b/tiff/writer_test.go index 1fc2331..4f5ab70 100644 --- a/tiff/writer_test.go +++ b/tiff/writer_test.go @@ -6,6 +6,8 @@ package tiff import ( "bytes" + "image" + "io/ioutil" "os" "testing" ) @@ -15,18 +17,21 @@ var roundtripTests = []string{ "bw-packbits.tiff", } +func openImage(filename string) (image.Image, error) { + f, err := os.Open(testdataDir + filename) + if err != nil { + return nil, err + } + defer f.Close() + return Decode(f) +} + func TestRoundtrip(t *testing.T) { for _, filename := range roundtripTests { - f, err := os.Open(testdataDir + filename) + img, err := openImage(filename) if err != nil { t.Fatal(err) } - defer f.Close() - img, err := Decode(f) - if err != nil { - t.Fatal(err) - } - out := new(bytes.Buffer) err = Encode(out, img) if err != nil { @@ -40,3 +45,17 @@ func TestRoundtrip(t *testing.T) { compare(t, img, img2) } } + +// BenchmarkEncode benchmarks the encoding of an image. +func BenchmarkEncode(b *testing.B) { + img, err := openImage("video-001.tiff") + if err != nil { + b.Fatal(err) + } + s := img.Bounds().Size() + b.SetBytes(int64(s.X * s.Y * 4)) + b.ResetTimer() + for i := 0; i < b.N; i++ { + Encode(ioutil.Discard, img) + } +}