-
Notifications
You must be signed in to change notification settings - Fork 121
/
effects_test.go
117 lines (112 loc) · 2.26 KB
/
effects_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
package gift
import (
"image"
"testing"
)
func TestPixelate(t *testing.T) {
testData := []struct {
desc string
size int
srcb, dstb image.Rectangle
srcPix, dstPix []uint8
}{
{
"pixelate (0)",
0,
image.Rect(-1, -1, 4, 2),
image.Rect(0, 0, 5, 3),
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
},
{
"pixelate (1)",
1,
image.Rect(-1, -1, 4, 2),
image.Rect(0, 0, 5, 3),
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
},
{
"pixelate (2)",
2,
image.Rect(-1, -1, 4, 2),
image.Rect(0, 0, 5, 3),
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
[]uint8{
0x54, 0x54, 0x64, 0x64, 0x30,
0x54, 0x54, 0x64, 0x64, 0x30,
0x40, 0x40, 0x40, 0x40, 0x00,
},
},
{
"pixelate (3)",
3,
image.Rect(-1, -1, 4, 2),
image.Rect(0, 0, 5, 3),
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
[]uint8{
0x45, 0x45, 0x45, 0x4d, 0x4d,
0x45, 0x45, 0x45, 0x4d, 0x4d,
0x45, 0x45, 0x45, 0x4d, 0x4d,
},
},
{
"pixelate (10)",
10,
image.Rect(-1, -1, 4, 2),
image.Rect(0, 0, 5, 3),
[]uint8{
0x00, 0x40, 0x00, 0x40, 0x00,
0x60, 0xB0, 0xA0, 0xB0, 0x60,
0x00, 0x80, 0x00, 0x80, 0x00,
},
[]uint8{
0x49, 0x49, 0x49, 0x49, 0x49,
0x49, 0x49, 0x49, 0x49, 0x49,
0x49, 0x49, 0x49, 0x49, 0x49,
},
},
{
"pixelate 0x0",
3,
image.Rect(-1, -1, -1, -1),
image.Rect(0, 0, 0, 0),
[]uint8{},
[]uint8{},
},
}
for _, d := range testData {
src := image.NewGray(d.srcb)
src.Pix = d.srcPix
f := Pixelate(d.size)
dst := image.NewGray(f.Bounds(src.Bounds()))
f.Draw(dst, src, nil)
if !checkBoundsAndPix(dst.Bounds(), d.dstb, dst.Pix, d.dstPix) {
t.Errorf("test [%s] failed: %#v, %#v", d.desc, dst.Bounds(), dst.Pix)
}
}
}