mirror of
https://github.com/opencloud-eu/opencloud.git
synced 2026-01-26 15:02:52 -05:00
112 lines
2.8 KiB
Go
112 lines
2.8 KiB
Go
package resolution
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestInitWithEmptyArray(t *testing.T) {
|
|
rs, err := New([]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 := New(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 := New([]string{"invalid"})
|
|
if err == nil {
|
|
t.Error("Init with invalid parameter should fail.\n")
|
|
}
|
|
}
|
|
|
|
func TestInit(t *testing.T) {
|
|
rs, err := New([]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 := New(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 TestInitWithMultipleResolutionsShouldBeSorted(t *testing.T) {
|
|
rStrs := []string{"32x32", "64x64", "16x16", "128x128"}
|
|
rs, err := New(rStrs)
|
|
if err != nil {
|
|
t.Errorf("Init with valid parameter should not fail. Error: %s.\n", err.Error())
|
|
}
|
|
|
|
for i := 0; i < len(rs)-1; i++ {
|
|
current := rs[i]
|
|
currentSize := current.Width * current.Height
|
|
next := rs[i]
|
|
nextSize := next.Width * next.Height
|
|
|
|
if currentSize > nextSize {
|
|
t.Error("Resolutions are not sorted.")
|
|
}
|
|
|
|
}
|
|
}
|
|
func TestClosestMatchWithEmptyResolutions(t *testing.T) {
|
|
rs, _ := New(nil)
|
|
width := 24
|
|
height := 24
|
|
|
|
r := rs.ClosestMatch(width, height)
|
|
if r.Width != width || r.Height != height {
|
|
t.Errorf("ClosestMatch from empty resolutions should return the given resolution")
|
|
}
|
|
}
|
|
|
|
func TestClosestMatch(t *testing.T) {
|
|
rs, _ := New([]string{"16x16", "24x24", "32x32", "64x64", "128x128"})
|
|
table := [][]int{
|
|
// width, height, expectedWidth, expectedHeight
|
|
[]int{17, 17, 24, 24},
|
|
[]int{12, 17, 24, 24},
|
|
[]int{24, 24, 24, 24},
|
|
[]int{20, 20, 24, 24},
|
|
[]int{20, 80, 128, 128},
|
|
[]int{80, 20, 128, 128},
|
|
[]int{48, 48, 64, 64},
|
|
[]int{1024, 1024, 128, 128},
|
|
}
|
|
|
|
for _, row := range table {
|
|
width := row[0]
|
|
height := row[1]
|
|
expectedWidth := row[2]
|
|
expectedHeight := row[3]
|
|
|
|
match := rs.ClosestMatch(width, height)
|
|
|
|
if match.Width != expectedWidth || match.Height != expectedHeight {
|
|
t.Errorf("Expected resolution %dx%d got %s", expectedWidth, expectedHeight, match.String())
|
|
}
|
|
}
|
|
}
|