summaryrefslogtreecommitdiffstats
path: root/vendor/golang.org/x/image/tiff/writer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/golang.org/x/image/tiff/writer_test.go')
-rw-r--r--vendor/golang.org/x/image/tiff/writer_test.go95
1 files changed, 95 insertions, 0 deletions
diff --git a/vendor/golang.org/x/image/tiff/writer_test.go b/vendor/golang.org/x/image/tiff/writer_test.go
new file mode 100644
index 000000000..c8fb7bf37
--- /dev/null
+++ b/vendor/golang.org/x/image/tiff/writer_test.go
@@ -0,0 +1,95 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package tiff
+
+import (
+ "bytes"
+ "image"
+ "io/ioutil"
+ "os"
+ "testing"
+)
+
+var roundtripTests = []struct {
+ filename string
+ opts *Options
+}{
+ {"video-001.tiff", nil},
+ {"video-001-16bit.tiff", nil},
+ {"video-001-gray.tiff", nil},
+ {"video-001-gray-16bit.tiff", nil},
+ {"video-001-paletted.tiff", nil},
+ {"bw-packbits.tiff", nil},
+ {"video-001.tiff", &Options{Predictor: true}},
+ {"video-001.tiff", &Options{Compression: Deflate}},
+ {"video-001.tiff", &Options{Predictor: true, Compression: Deflate}},
+}
+
+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 _, rt := range roundtripTests {
+ img, err := openImage(rt.filename)
+ if err != nil {
+ t.Fatal(err)
+ }
+ out := new(bytes.Buffer)
+ err = Encode(out, img, rt.opts)
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ img2, err := Decode(&buffer{buf: out.Bytes()})
+ if err != nil {
+ t.Fatal(err)
+ }
+ compare(t, img, img2)
+ }
+}
+
+// TestRoundtrip2 tests that encoding and decoding an image whose
+// origin is not (0, 0) gives the same thing.
+func TestRoundtrip2(t *testing.T) {
+ m0 := image.NewRGBA(image.Rect(3, 4, 9, 8))
+ for i := range m0.Pix {
+ m0.Pix[i] = byte(i)
+ }
+ out := new(bytes.Buffer)
+ if err := Encode(out, m0, nil); err != nil {
+ t.Fatal(err)
+ }
+ m1, err := Decode(&buffer{buf: out.Bytes()})
+ if err != nil {
+ t.Fatal(err)
+ }
+ compare(t, m0, m1)
+}
+
+func benchmarkEncode(b *testing.B, name string, pixelSize int) {
+ img, err := openImage(name)
+ if err != nil {
+ b.Fatal(err)
+ }
+ s := img.Bounds().Size()
+ b.SetBytes(int64(s.X * s.Y * pixelSize))
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ Encode(ioutil.Discard, img, nil)
+ }
+}
+
+func BenchmarkEncode(b *testing.B) { benchmarkEncode(b, "video-001.tiff", 4) }
+func BenchmarkEncodePaletted(b *testing.B) { benchmarkEncode(b, "video-001-paletted.tiff", 1) }
+func BenchmarkEncodeGray(b *testing.B) { benchmarkEncode(b, "video-001-gray.tiff", 1) }
+func BenchmarkEncodeGray16(b *testing.B) { benchmarkEncode(b, "video-001-gray-16bit.tiff", 2) }
+func BenchmarkEncodeRGBA(b *testing.B) { benchmarkEncode(b, "video-001.tiff", 4) }
+func BenchmarkEncodeRGBA64(b *testing.B) { benchmarkEncode(b, "video-001-16bit.tiff", 8) }