mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-03 03:28:03 -05:00
122 lines
3.6 KiB
Go
122 lines
3.6 KiB
Go
package thumbnail
|
|
|
|
import (
|
|
"image"
|
|
"testing"
|
|
)
|
|
|
|
func TestInitWithEmptyArray(t *testing.T) {
|
|
rs, err := ParseResolutions([]string{})
|
|
if err != nil {
|
|
t.Errorf("Init with an empty array should not fail. Error: %s.\n", err.Error())
|
|
}
|
|
if len(rs) != 0 {
|
|
t.Error("Init with an empty array should return an empty Resolutions instance.\n")
|
|
}
|
|
}
|
|
|
|
func TestInitWithNil(t *testing.T) {
|
|
rs, err := ParseResolutions(nil)
|
|
if err != nil {
|
|
t.Errorf("Init with nil parameter should not fail. Error: %s.\n", err.Error())
|
|
}
|
|
if len(rs) != 0 {
|
|
t.Error("Init with nil parameter should return an empty Resolutions instance.\n")
|
|
}
|
|
}
|
|
|
|
func TestInitWithInvalidValuesInArray(t *testing.T) {
|
|
_, err := ParseResolutions([]string{"invalid"})
|
|
if err == nil {
|
|
t.Error("Init with invalid parameter should fail.\n")
|
|
}
|
|
}
|
|
|
|
func TestInit(t *testing.T) {
|
|
rs, err := ParseResolutions([]string{"16x16"})
|
|
if err != nil {
|
|
t.Errorf("Init with valid parameter should not fail. Error: %s.\n", err.Error())
|
|
}
|
|
if len(rs) != 1 {
|
|
t.Errorf("resolutions has size %d, expected size %d.\n", len(rs), 1)
|
|
}
|
|
}
|
|
|
|
func TestInitWithMultipleResolutions(t *testing.T) {
|
|
rStrs := []string{"16x16", "32x32", "64x64", "128x128"}
|
|
rs, err := ParseResolutions(rStrs)
|
|
if err != nil {
|
|
t.Errorf("Init with valid parameter should not fail. Error: %s.\n", err.Error())
|
|
}
|
|
if len(rs) != len(rStrs) {
|
|
t.Errorf("resolutions has size %d, expected size %d.\n", len(rs), len(rStrs))
|
|
}
|
|
}
|
|
|
|
func TestClosestMatchWithEmptyResolutions(t *testing.T) {
|
|
rs, _ := ParseResolutions(nil)
|
|
want := image.Rect(0, 0, 24, 24)
|
|
imgSize := image.Rect(0, 0, 24, 24)
|
|
|
|
r := rs.ClosestMatch(want, imgSize)
|
|
if r.Dx() != want.Dx() || r.Dy() != want.Dy() {
|
|
t.Errorf("ClosestMatch from empty resolutions should return the given resolution")
|
|
}
|
|
}
|
|
|
|
func TestClosestMatch(t *testing.T) {
|
|
rs, _ := ParseResolutions([]string{"16x16", "24x24", "32x32", "64x64", "128x128"})
|
|
|
|
testData := [][]image.Rectangle{
|
|
{image.Rect(0, 0, 17, 17), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 24, 24)},
|
|
{image.Rect(0, 0, 12, 17), image.Rect(0, 0, 1080, 1920), image.Rect(0, 0, 24, 24)},
|
|
{image.Rect(0, 0, 24, 24), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 24, 24)},
|
|
{image.Rect(0, 0, 20, 20), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 24, 24)},
|
|
{image.Rect(0, 0, 20, 80), image.Rect(0, 0, 1080, 1920), image.Rect(0, 0, 128, 128)},
|
|
{image.Rect(0, 0, 80, 20), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 128, 128)},
|
|
{image.Rect(0, 0, 48, 48), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 64, 64)},
|
|
{image.Rect(0, 0, 1024, 1024), image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 128, 128)},
|
|
{image.Rect(0, 0, 1920, 1080), image.Rect(0, 0, 256, 36), image.Rect(0, 0, 256, 36)},
|
|
}
|
|
|
|
for _, row := range testData {
|
|
given := row[0]
|
|
imgSize := row[1]
|
|
expected := row[2]
|
|
|
|
match := rs.ClosestMatch(given, imgSize)
|
|
|
|
if match != expected {
|
|
t.Errorf("Expected resolution %dx%d got %dx%d", expected.Dx(), expected.Dy(), match.Dx(), match.Dy())
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParseWithEmptyString(t *testing.T) {
|
|
if _, err := ParseResolution(""); err == nil {
|
|
t.Error("Parse with empty string should return an error.")
|
|
}
|
|
}
|
|
|
|
func TestParseWithInvalidWidth(t *testing.T) {
|
|
_, err := ParseResolution("invalidx42")
|
|
if err == nil {
|
|
t.Error("Parse with invalid width should return an error.")
|
|
}
|
|
}
|
|
|
|
func TestParseWithInvalidHeight(t *testing.T) {
|
|
_, err := ParseResolution("42xinvalid")
|
|
if err == nil {
|
|
t.Error("Parse with invalid height should return an error.")
|
|
}
|
|
}
|
|
|
|
func TestParseResolution(t *testing.T) {
|
|
rStr := "42x23"
|
|
r, _ := ParseResolution(rStr)
|
|
if r.Dx() != 42 || r.Dy() != 23 {
|
|
t.Errorf("Expected resolution %s got %s", rStr, r.String())
|
|
}
|
|
}
|