/
image_test.go
76 lines (65 loc) · 1.75 KB
/
image_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
package prism
import (
"bytes"
"crypto/sha1"
"fmt"
"io/ioutil"
"testing"
"github.com/stretchr/testify/assert"
)
var lennaJPG []byte
var lennaPNG []byte
var bombJPG []byte
var bombPNG []byte
func init() {
jpg, _ := ioutil.ReadFile("./testdata/lenna.jpg")
lennaJPG = jpg
png, _ := ioutil.ReadFile("./testdata/lenna.png")
lennaPNG = png
jpg, _ = ioutil.ReadFile("./testdata/bomb.jpg")
bombJPG = jpg
png, _ = ioutil.ReadFile("./testdata/bomb.png")
bombPNG = png
}
func testImg(name string) *Image {
b, err := ioutil.ReadFile("./testdata/" + name)
img, err := Decode(bytes.NewBuffer(b))
if err != nil {
panic(err)
}
return img
}
func TestDecodeJPEG(t *testing.T) {
img, _ := Decode(bytes.NewBuffer(lennaJPG))
assert.Equal(t, "968a15332343a2794fe7b55f65bd02635e173aad", fmt.Sprintf("%x", sha1.Sum(img.Bytes())))
}
func TestDecodePNG(t *testing.T) {
img, _ := Decode(bytes.NewBuffer(lennaPNG))
assert.Equal(t, "af1319afa76b41e2ac0f856ccfc267ac262be22c", fmt.Sprintf("%x", sha1.Sum(img.Bytes())))
}
func TestDecodeJPEGBomb(t *testing.T) {
img, err := Decode(bytes.NewBuffer(bombJPG))
assert.Nil(t, img)
assert.NotNil(t, err)
assert.Equal(t, "Image is too large (possible decompression bomb): 25500 x 25500", err.Error())
}
func TestDecodePNGBomb(t *testing.T) {
img, err := Decode(bytes.NewBuffer(bombPNG))
assert.Nil(t, img)
assert.NotNil(t, err)
assert.Equal(t, "Image is too large (possible decompression bomb): 25500 x 25500", err.Error())
}
func BenchmarkDecodeJPEG(b *testing.B) {
for n := 0; n < b.N; n++ {
buffer := bytes.NewBuffer(lennaJPG)
img, _ := Decode(buffer)
img.Release()
}
}
func BenchmarkDecodePNG(b *testing.B) {
for n := 0; n < b.N; n++ {
buffer := bytes.NewBuffer(lennaPNG)
img, _ := Decode(buffer)
img.Release()
}
}