Files
2025-09-17 22:30:49 +02:00

57 lines
1.1 KiB
Go

package sharedutil
import (
"slices"
"testing"
"github.com/dweymouth/supersonic/backend/mediaprovider"
)
func Test_ReorderItems(t *testing.T) {
tracks := []*mediaprovider.Track{
{ID: "a"}, // 0
{ID: "b"}, // 1
{ID: "c"}, // 2
{ID: "d"}, // 3
{ID: "e"}, // 4
{ID: "f"}, // 5
}
// test MoveToTop:
idxToMove := []int{0, 2, 3, 5}
want := []*mediaprovider.Track{
{ID: "a"},
{ID: "c"},
{ID: "d"},
{ID: "f"},
{ID: "b"},
{ID: "e"},
}
newTracks := ReorderItems(tracks, idxToMove, 0)
if !tracklistsEqual(t, newTracks, want) {
t.Error("ReorderTracks: MoveToTop order incorrect")
}
// test MoveToBottom:
idxToMove = []int{0, 2, 5}
want = []*mediaprovider.Track{
{ID: "b"},
{ID: "d"},
{ID: "e"},
{ID: "a"},
{ID: "c"},
{ID: "f"},
}
newTracks = ReorderItems(tracks, idxToMove, len(tracks))
if !tracklistsEqual(t, newTracks, want) {
t.Error("ReorderTracks: MoveToBottom order incorrect")
}
}
func tracklistsEqual(t *testing.T, a, b []*mediaprovider.Track) bool {
t.Helper()
return slices.EqualFunc(a, b, func(a, b *mediaprovider.Track) bool {
return a.ID == b.ID
})
}