mirror of https://github.com/gogits/gogs.git
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.
114 lines
2.7 KiB
114 lines
2.7 KiB
// Copyright 2015 by caixw, All rights reserved. |
|
// Use of this source code is governed by a MIT |
|
// license that can be found in the LICENSE file. |
|
|
|
package identicon |
|
|
|
import ( |
|
"image" |
|
"image/color" |
|
"image/png" |
|
"os" |
|
"strconv" |
|
"testing" |
|
|
|
"github.com/issue9/assert" |
|
) |
|
|
|
var ( |
|
back = color.RGBA{255, 0, 0, 100} |
|
fore = color.RGBA{0, 255, 255, 100} |
|
fores = []color.Color{color.Black, color.RGBA{200, 2, 5, 100}, color.RGBA{2, 200, 5, 100}} |
|
size = 128 |
|
) |
|
|
|
// 依次画出各个网络的图像。 |
|
func TestBlocks(t *testing.T) { |
|
p := []color.Color{back, fore} |
|
|
|
a := assert.New(t) |
|
|
|
for k, v := range blocks { |
|
img := image.NewPaletted(image.Rect(0, 0, size*4, size), p) // 横向4张图片大小 |
|
|
|
for i := 0; i < 4; i++ { |
|
v(img, float64(i*size), 0, float64(size), i) |
|
} |
|
|
|
fi, err := os.Create("./testdata/block-" + strconv.Itoa(k) + ".png") |
|
a.NotError(err).NotNil(fi) |
|
a.NotError(png.Encode(fi, img)) |
|
a.NotError(fi.Close()) // 关闭文件 |
|
} |
|
} |
|
|
|
// 产生一组测试图片 |
|
func TestDrawBlocks(t *testing.T) { |
|
a := assert.New(t) |
|
|
|
for i := 0; i < 20; i++ { |
|
p := image.NewPaletted(image.Rect(0, 0, size, size), []color.Color{back, fore}) |
|
c := (i + 1) % len(centerBlocks) |
|
b1 := (i + 2) % len(blocks) |
|
b2 := (i + 3) % len(blocks) |
|
drawBlocks(p, size, centerBlocks[c], blocks[b1], blocks[b2], 0) |
|
|
|
fi, err := os.Create("./testdata/draw-" + strconv.Itoa(i) + ".png") |
|
a.NotError(err).NotNil(fi) |
|
a.NotError(png.Encode(fi, p)) |
|
a.NotError(fi.Close()) // 关闭文件 |
|
} |
|
} |
|
|
|
func TestMake(t *testing.T) { |
|
a := assert.New(t) |
|
|
|
for i := 0; i < 20; i++ { |
|
img, err := Make(size, back, fore, []byte("make-"+strconv.Itoa(i))) |
|
a.NotError(err).NotNil(img) |
|
|
|
fi, err := os.Create("./testdata/make-" + strconv.Itoa(i) + ".png") |
|
a.NotError(err).NotNil(fi) |
|
a.NotError(png.Encode(fi, img)) |
|
a.NotError(fi.Close()) // 关闭文件 |
|
} |
|
} |
|
|
|
func TestIdenticon(t *testing.T) { |
|
a := assert.New(t) |
|
|
|
ii, err := New(size, back, fores...) |
|
a.NotError(err).NotNil(ii) |
|
|
|
for i := 0; i < 20; i++ { |
|
img := ii.Make([]byte("identicon-" + strconv.Itoa(i))) |
|
a.NotNil(img) |
|
|
|
fi, err := os.Create("./testdata/identicon-" + strconv.Itoa(i) + ".png") |
|
a.NotError(err).NotNil(fi) |
|
a.NotError(png.Encode(fi, img)) |
|
a.NotError(fi.Close()) // 关闭文件 |
|
} |
|
} |
|
|
|
// BenchmarkMake 5000 229378 ns/op |
|
func BenchmarkMake(b *testing.B) { |
|
a := assert.New(b) |
|
for i := 0; i < b.N; i++ { |
|
img, err := Make(size, back, fore, []byte("Make")) |
|
a.NotError(err).NotNil(img) |
|
} |
|
} |
|
|
|
// BenchmarkIdenticon_Make 10000 222127 ns/op |
|
func BenchmarkIdenticon_Make(b *testing.B) { |
|
a := assert.New(b) |
|
|
|
ii, err := New(size, back, fores...) |
|
a.NotError(err).NotNil(ii) |
|
|
|
for i := 0; i < b.N; i++ { |
|
img := ii.Make([]byte("Make")) |
|
a.NotNil(img) |
|
} |
|
}
|
|
|