You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
2.4 KiB
153 lines
2.4 KiB
// 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" |
|
"testing" |
|
|
|
_ "image/png" |
|
) |
|
|
|
var scaleOneColorTests = []transformOneColorTest{ |
|
{ |
|
"down-half", |
|
1, 1, |
|
2, 2, |
|
nil, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x00, 0x80, |
|
}, |
|
[]uint8{ |
|
0x40, |
|
}, |
|
}, |
|
{ |
|
"up-double", |
|
4, 4, |
|
2, 2, |
|
nil, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x00, 0x80, |
|
}, |
|
[]uint8{ |
|
0x80, 0x60, 0x20, 0x00, |
|
0x60, 0x50, 0x30, 0x20, |
|
0x20, 0x30, 0x50, 0x60, |
|
0x00, 0x20, 0x60, 0x80, |
|
}, |
|
}, |
|
{ |
|
"up-doublewidth", |
|
4, 2, |
|
2, 2, |
|
nil, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x00, 0x80, |
|
}, |
|
[]uint8{ |
|
0x80, 0x60, 0x20, 0x00, |
|
0x00, 0x20, 0x60, 0x80, |
|
}, |
|
}, |
|
{ |
|
"up-doubleheight", |
|
2, 4, |
|
2, 2, |
|
nil, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x00, 0x80, |
|
}, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x60, 0x20, |
|
0x20, 0x60, |
|
0x00, 0x80, |
|
}, |
|
}, |
|
{ |
|
"up-partial", |
|
3, 3, |
|
2, 2, |
|
nil, |
|
[]uint8{ |
|
0x80, 0x00, |
|
0x00, 0x80, |
|
}, |
|
[]uint8{ |
|
0x80, 0x40, 0x00, |
|
0x40, 0x40, 0x40, |
|
0x00, 0x40, 0x80, |
|
}, |
|
}, |
|
} |
|
|
|
func TestScaleOneColor(t *testing.T) { |
|
for _, oc := range scaleOneColorTests { |
|
dst := oc.newDst() |
|
src := oc.newSrc() |
|
if err := Scale(dst, src); err != nil { |
|
t.Errorf("scale %s: %v", oc.desc, err) |
|
continue |
|
} |
|
|
|
if !checkTransformTest(t, &oc, dst) { |
|
continue |
|
} |
|
} |
|
} |
|
|
|
func TestScaleEmpty(t *testing.T) { |
|
empty := image.NewRGBA(image.Rect(0, 0, 0, 0)) |
|
if err := Scale(empty, empty); err != nil { |
|
t.Fatal(err) |
|
} |
|
} |
|
|
|
func TestScaleGopher(t *testing.T) { |
|
dst := image.NewRGBA(image.Rect(0, 0, 100, 150)) |
|
|
|
src, err := graphicstest.LoadImage("../testdata/gopher.png") |
|
if err != nil { |
|
t.Error(err) |
|
return |
|
} |
|
|
|
// Down-sample. |
|
if err := Scale(dst, src); err != nil { |
|
t.Fatal(err) |
|
} |
|
cmp, err := graphicstest.LoadImage("../testdata/gopher-100x150.png") |
|
if err != nil { |
|
t.Error(err) |
|
return |
|
} |
|
err = graphicstest.ImageWithinTolerance(dst, cmp, 0) |
|
if err != nil { |
|
t.Error(err) |
|
return |
|
} |
|
|
|
// Up-sample. |
|
dst = image.NewRGBA(image.Rect(0, 0, 500, 750)) |
|
if err := Scale(dst, src); err != nil { |
|
t.Fatal(err) |
|
} |
|
cmp, err = graphicstest.LoadImage("../testdata/gopher-500x750.png") |
|
if err != nil { |
|
t.Error(err) |
|
return |
|
} |
|
err = graphicstest.ImageWithinTolerance(dst, cmp, 0) |
|
if err != nil { |
|
t.Error(err) |
|
return |
|
} |
|
}
|
|
|