diff options
Diffstat (limited to 'Godeps/_workspace/src/code.google.com/p/graphics-go/graphics/rotate_test.go')
-rw-r--r-- | Godeps/_workspace/src/code.google.com/p/graphics-go/graphics/rotate_test.go | 169 |
1 files changed, 169 insertions, 0 deletions
diff --git a/Godeps/_workspace/src/code.google.com/p/graphics-go/graphics/rotate_test.go b/Godeps/_workspace/src/code.google.com/p/graphics-go/graphics/rotate_test.go new file mode 100644 index 000000000..bfc532a0a --- /dev/null +++ b/Godeps/_workspace/src/code.google.com/p/graphics-go/graphics/rotate_test.go @@ -0,0 +1,169 @@ +// Copyright 2011 The Graphics-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 graphics + +import ( + "code.google.com/p/graphics-go/graphics/graphicstest" + "image" + "math" + "testing" + + _ "image/png" +) + +var rotateOneColorTests = []transformOneColorTest{ + { + "onepixel-onequarter", 1, 1, 1, 1, + &RotateOptions{math.Pi / 2}, + []uint8{0xff}, + []uint8{0xff}, + }, + { + "onepixel-partial", 1, 1, 1, 1, + &RotateOptions{math.Pi * 2.0 / 3.0}, + []uint8{0xff}, + []uint8{0xff}, + }, + { + "onepixel-complete", 1, 1, 1, 1, + &RotateOptions{2 * math.Pi}, + []uint8{0xff}, + []uint8{0xff}, + }, + { + "even-onequarter", 2, 2, 2, 2, + &RotateOptions{math.Pi / 2.0}, + []uint8{ + 0xff, 0x00, + 0x00, 0xff, + }, + []uint8{ + 0x00, 0xff, + 0xff, 0x00, + }, + }, + { + "even-complete", 2, 2, 2, 2, + &RotateOptions{2.0 * math.Pi}, + []uint8{ + 0xff, 0x00, + 0x00, 0xff, + }, + []uint8{ + 0xff, 0x00, + 0x00, 0xff, + }, + }, + { + "line-partial", 3, 3, 3, 3, + &RotateOptions{math.Pi * 1.0 / 3.0}, + []uint8{ + 0x00, 0x00, 0x00, + 0xff, 0xff, 0xff, + 0x00, 0x00, 0x00, + }, + []uint8{ + 0xa2, 0x80, 0x00, + 0x22, 0xff, 0x22, + 0x00, 0x80, 0xa2, + }, + }, + { + "line-offset-partial", 3, 3, 3, 3, + &RotateOptions{math.Pi * 3 / 2}, + []uint8{ + 0x00, 0x00, 0x00, + 0x00, 0xff, 0xff, + 0x00, 0x00, 0x00, + }, + []uint8{ + 0x00, 0xff, 0x00, + 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, + }, + }, + { + "dot-partial", 4, 4, 4, 4, + &RotateOptions{math.Pi}, + []uint8{ + 0x00, 0x00, 0x00, 0x00, + 0x00, 0xff, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + []uint8{ + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, + }, + }, +} + +func TestRotateOneColor(t *testing.T) { + for _, oc := range rotateOneColorTests { + src := oc.newSrc() + dst := oc.newDst() + + if err := Rotate(dst, src, oc.opt.(*RotateOptions)); err != nil { + t.Errorf("rotate %s: %v", oc.desc, err) + continue + } + if !checkTransformTest(t, &oc, dst) { + continue + } + } +} + +func TestRotateEmpty(t *testing.T) { + empty := image.NewRGBA(image.Rect(0, 0, 0, 0)) + if err := Rotate(empty, empty, nil); err != nil { + t.Fatal(err) + } +} + +func TestRotateGopherSide(t *testing.T) { + src, err := graphicstest.LoadImage("../testdata/gopher.png") + if err != nil { + t.Fatal(err) + } + + srcb := src.Bounds() + dst := image.NewRGBA(image.Rect(0, 0, srcb.Dy(), srcb.Dx())) + if err := Rotate(dst, src, &RotateOptions{math.Pi / 2.0}); err != nil { + t.Fatal(err) + } + + cmp, err := graphicstest.LoadImage("../testdata/gopher-rotate-side.png") + if err != nil { + t.Fatal(err) + } + err = graphicstest.ImageWithinTolerance(dst, cmp, 0x101) + if err != nil { + t.Fatal(err) + } +} + +func TestRotateGopherPartial(t *testing.T) { + src, err := graphicstest.LoadImage("../testdata/gopher.png") + if err != nil { + t.Fatal(err) + } + + srcb := src.Bounds() + dst := image.NewRGBA(image.Rect(0, 0, srcb.Dx(), srcb.Dy())) + if err := Rotate(dst, src, &RotateOptions{math.Pi / 3.0}); err != nil { + t.Fatal(err) + } + + cmp, err := graphicstest.LoadImage("../testdata/gopher-rotate-partial.png") + if err != nil { + t.Fatal(err) + } + err = graphicstest.ImageWithinTolerance(dst, cmp, 0x101) + if err != nil { + t.Fatal(err) + } +} |