262 lines
5.7 KiB
Go
262 lines
5.7 KiB
Go
package imaging
|
|
|
|
import (
|
|
"image"
|
|
"testing"
|
|
)
|
|
|
|
func TestRotate90(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"Rotate90 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 3, 2),
|
|
Stride: 3 * 4,
|
|
Pix: []uint8{
|
|
0xcc, 0xdd, 0xee, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
0x00, 0x11, 0x22, 0x33, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := Rotate90(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRotate180(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"Rotate180 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 2, 3),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00,
|
|
0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
|
|
0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := Rotate180(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestRotate270(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"Rotate270 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 3, 2),
|
|
Stride: 3 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x33,
|
|
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xcc, 0xdd, 0xee, 0xff,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := Rotate270(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFlipV(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"FlipV 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 2, 3),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := FlipV(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFlipH(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"FlipH 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 2, 3),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0xcc, 0xdd, 0xee, 0xff, 0x00, 0x11, 0x22, 0x33,
|
|
0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00,
|
|
0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := FlipH(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestTranspose(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"Transpose 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 3, 2),
|
|
Stride: 3 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
|
|
0xcc, 0xdd, 0xee, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := Transpose(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestTransverse(t *testing.T) {
|
|
td := []struct {
|
|
desc string
|
|
src image.Image
|
|
want *image.NRGBA
|
|
}{
|
|
{
|
|
"Transverse 2x3",
|
|
&image.NRGBA{
|
|
Rect: image.Rect(-1, -1, 1, 2),
|
|
Stride: 2 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x11, 0x22, 0x33, 0xcc, 0xdd, 0xee, 0xff,
|
|
0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00,
|
|
0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff,
|
|
},
|
|
},
|
|
&image.NRGBA{
|
|
Rect: image.Rect(0, 0, 3, 2),
|
|
Stride: 3 * 4,
|
|
Pix: []uint8{
|
|
0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0xcc, 0xdd, 0xee, 0xff,
|
|
0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x11, 0x22, 0x33,
|
|
},
|
|
},
|
|
},
|
|
}
|
|
for _, d := range td {
|
|
got := Transverse(d.src)
|
|
want := d.want
|
|
if !compareNRGBA(got, want, 0) {
|
|
t.Errorf("test [%s] failed: %#v", d.desc, got)
|
|
}
|
|
}
|
|
}
|