|
|
|
package thumb
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"image"
|
|
|
|
"image/jpeg"
|
|
|
|
"os"
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/cache"
|
|
|
|
"github.com/cloudreve/Cloudreve/v3/pkg/util"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func CreateTestImage() *os.File {
|
|
|
|
file, err := os.Create("TestNewThumbFromFile.jpeg")
|
|
|
|
alpha := image.NewAlpha(image.Rect(0, 0, 500, 200))
|
|
|
|
jpeg.Encode(file, alpha, nil)
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println(err)
|
|
|
|
}
|
|
|
|
_, _ = file.Seek(0, 0)
|
|
|
|
return file
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestNewThumbFromFile(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
file := CreateTestImage()
|
|
|
|
defer file.Close()
|
|
|
|
|
|
|
|
// 无扩展名时
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123")
|
|
|
|
asserts.Error(err)
|
|
|
|
asserts.Nil(thumb)
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpg")
|
|
|
|
asserts.NoError(err)
|
|
|
|
asserts.NotNil(thumb)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpeg")
|
|
|
|
asserts.Error(err)
|
|
|
|
asserts.Nil(thumb)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.png")
|
|
|
|
asserts.Error(err)
|
|
|
|
asserts.Nil(thumb)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.gif")
|
|
|
|
asserts.Error(err)
|
|
|
|
asserts.Nil(thumb)
|
|
|
|
}
|
|
|
|
{
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.3211")
|
|
|
|
asserts.Error(err)
|
|
|
|
asserts.Nil(thumb)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestThumb_GetSize(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
file := CreateTestImage()
|
|
|
|
defer file.Close()
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpg")
|
|
|
|
asserts.NoError(err)
|
|
|
|
|
|
|
|
w, h := thumb.GetSize()
|
|
|
|
asserts.Equal(500, w)
|
|
|
|
asserts.Equal(200, h)
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestThumb_GetThumb(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
file := CreateTestImage()
|
|
|
|
defer file.Close()
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpg")
|
|
|
|
asserts.NoError(err)
|
|
|
|
|
|
|
|
asserts.NotPanics(func() {
|
|
|
|
thumb.GetThumb(10, 10)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestThumb_Thumbnail(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
{
|
|
|
|
img := image.NewRGBA(image.Rect(0, 0, 500, 200))
|
|
|
|
thumb := Thumbnail(100, 100, img)
|
|
|
|
asserts.Equal(thumb.Bounds(), image.Rect(0, 0, 100, 40))
|
|
|
|
}
|
|
|
|
{
|
|
|
|
img := image.NewRGBA(image.Rect(0, 0, 200, 200))
|
|
|
|
thumb := Thumbnail(100, 100, img)
|
|
|
|
asserts.Equal(thumb.Bounds(), image.Rect(0, 0, 100, 100))
|
|
|
|
}
|
|
|
|
{
|
|
|
|
img := image.NewRGBA(image.Rect(0, 0, 500, 500))
|
|
|
|
thumb := Thumbnail(100, 100, img)
|
|
|
|
asserts.Equal(thumb.Bounds(), image.Rect(0, 0, 100, 100))
|
|
|
|
}
|
|
|
|
{
|
|
|
|
img := image.NewRGBA(image.Rect(0, 0, 200, 500))
|
|
|
|
thumb := Thumbnail(100, 100, img)
|
|
|
|
asserts.Equal(thumb.Bounds(), image.Rect(0, 0, 40, 100))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestThumb_Save(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
file := CreateTestImage()
|
|
|
|
defer file.Close()
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpg")
|
|
|
|
asserts.NoError(err)
|
|
|
|
|
|
|
|
err = thumb.Save("/:noteexist/")
|
|
|
|
asserts.Error(err)
|
|
|
|
|
|
|
|
err = thumb.Save("TestThumb_Save.png")
|
|
|
|
asserts.NoError(err)
|
|
|
|
asserts.True(util.Exists("TestThumb_Save.png"))
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestThumb_CreateAvatar(t *testing.T) {
|
|
|
|
asserts := assert.New(t)
|
|
|
|
file := CreateTestImage()
|
|
|
|
defer file.Close()
|
|
|
|
|
|
|
|
thumb, err := NewThumbFromFile(file, "123.jpg")
|
|
|
|
asserts.NoError(err)
|
|
|
|
|
|
|
|
cache.Set("setting_avatar_path", "tests", 0)
|
|
|
|
cache.Set("setting_avatar_size_s", "50", 0)
|
|
|
|
cache.Set("setting_avatar_size_m", "130", 0)
|
|
|
|
cache.Set("setting_avatar_size_l", "200", 0)
|
|
|
|
|
|
|
|
asserts.NoError(thumb.CreateAvatar(1))
|
|
|
|
asserts.True(util.Exists(util.RelativePath("tests/avatar_1_1.png")))
|
|
|
|
asserts.True(util.Exists(util.RelativePath("tests/avatar_1_2.png")))
|
|
|
|
asserts.True(util.Exists(util.RelativePath("tests/avatar_1_0.png")))
|
|
|
|
}
|