gomu/queue_test.go

174 lines
2.6 KiB
Go
Raw Normal View History

2020-07-04 16:17:04 +08:00
package main
import (
"testing"
2020-07-06 21:04:18 +08:00
"github.com/rivo/tview"
2020-07-04 16:17:04 +08:00
)
var sample = map[string]string{
"a": "1",
"b": "2",
"c": "3",
"d": "4",
"e": "5",
}
func TestQueueNext(t *testing.T) {
q := NewQueue()
for _, v := range sample {
q.AddItem(v, "", 0, nil)
}
q.SetCurrentItem(0)
q.next()
got := q.GetCurrentItem()
if got != 1 {
t.Errorf("Expected %d got %d", 1, got)
}
}
2020-07-10 16:52:37 +08:00
func TestDequeue(t *testing.T) {
gomu := preparePlaylist()
gomu.Queue = NewQueue()
audioFiles := gomu.Playlist.GetAudioFiles()
for _, v := range audioFiles {
gomu.Queue.Enqueue(v)
}
initLen := len(gomu.Queue.Items)
gomu.Queue.Dequeue()
finalLen := len(gomu.Queue.Items)
if initLen-1 != finalLen {
2020-07-10 22:06:13 +08:00
t.Errorf("Expected %d got %d", initLen-1, finalLen)
2020-07-10 16:52:37 +08:00
}
}
2020-07-04 16:17:04 +08:00
func TestQueuePrev(t *testing.T) {
q := NewQueue()
for _, v := range sample {
q.AddItem(v, "", 0, nil)
}
q.SetCurrentItem(3)
q.prev()
got := q.GetCurrentItem()
if got != 2 {
t.Errorf("Expected %d got %d", 1, got)
}
}
func TestQueueDeleteItem(t *testing.T) {
q := NewQueue()
for _, v := range sample {
q.AddItem(v, "", 0, nil)
}
initLen := q.GetItemCount()
2020-07-10 16:52:37 +08:00
q.DeleteItem(-1)
2020-07-04 16:17:04 +08:00
finalLen := q.GetItemCount()
if initLen != finalLen {
t.Errorf("Item removed when -1 index was given")
}
}
2020-07-06 21:04:18 +08:00
func TestEnqueue(t *testing.T) {
gomu = preparePlaylist()
var audioFiles []*AudioFile
gomu.Playlist.GetRoot().Walk(func(node, parent *tview.TreeNode) bool {
audioFile := node.GetReference().(*AudioFile)
2020-07-13 14:35:12 +08:00
if audioFile.IsAudioFile {
2020-07-06 21:04:18 +08:00
audioFiles = append(audioFiles, audioFile)
return false
}
return true
})
for _, v := range audioFiles {
gomu.Queue.Enqueue(v)
}
queue := gomu.Queue.GetItems()
for i, audioFile := range audioFiles {
2020-07-06 21:04:18 +08:00
if queue[i] != audioFile.Path {
t.Errorf("Invalid path; expected %s got %s", audioFile.Path, queue[i])
}
}
queueLen := gomu.Queue.GetItemCount()
2020-07-13 14:35:12 +08:00
if queueLen != len(audioFiles) {
t.Errorf("Invalid count in queue; expected %d, got %d", len(audioFiles), queueLen)
2020-07-06 21:04:18 +08:00
}
}
2020-07-04 16:17:04 +08:00
func TestQueueGetItems(t *testing.T) {
q := NewQueue()
for k, v := range sample {
q.AddItem(k, v, 0, nil)
}
got := q.GetItems()
if len(got) != len(sample) {
t.Errorf("GetItems does not return correct items length")
}
sampleValues := []string{}
for _, v := range sample {
sampleValues = append(sampleValues, v)
}
for _, v := range got {
if !SliceHas(v, sampleValues) {
t.Error("GetItems does not return correct items")
}
}
}
// utility function to check elem in a slice
func SliceHas(item string, s []string) bool {
for _, v := range s {
if v == item {
return true
}
}
return false
}