aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2022-07-27 20:15:05 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2022-07-27 20:15:05 +0200
commit2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e (patch)
treed8193bf533dff493b1ae3f6b5615957603b47c69
parent84ff772ee1642c4f139605fc1a2716ce49f4b015 (diff)
downloadWRMS-2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e.tar.gz
WRMS-2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e.zip
add logging and tests fo playlist
-rw-r--r--playlist.go10
-rw-r--r--playlist_test.go89
2 files changed, 98 insertions, 1 deletions
diff --git a/playlist.go b/playlist.go
index 8f17055..1c177e0 100644
--- a/playlist.go
+++ b/playlist.go
@@ -2,6 +2,8 @@ package main
import (
"container/heap"
+ "fmt"
+ "muhq.space/wrms/llog"
)
type Playlist []*Song
@@ -36,16 +38,22 @@ func (pl *Playlist) Pop() any {
}
func (pl *Playlist) PopSong() *Song {
+ llog.DDebug(fmt.Sprintf("popping song from the playlist (%p) -> %v", pl, pl))
if len(*pl) == 0 {
return nil
}
- return heap.Pop(pl).(*Song)
+
+ s := heap.Pop(pl).(*Song)
+ llog.DDebug(fmt.Sprintf("popped song %p from the playlist (%p) -> %v", s, pl, pl))
+ return s
}
func (pl *Playlist) Add(s *Song) {
heap.Push(pl, s)
+ llog.DDebug(fmt.Sprintf("added song %p to the playlist (%p) -> %v", s, pl, pl))
}
func (pl *Playlist) Adjust(s *Song) {
heap.Fix(pl, s.index)
+ llog.DDebug(fmt.Sprintf("adjusting song %p in the playlist (%p) -> %v", s, pl, pl))
}
diff --git a/playlist_test.go b/playlist_test.go
new file mode 100644
index 0000000..2fcb6b6
--- /dev/null
+++ b/playlist_test.go
@@ -0,0 +1,89 @@
+package main
+
+import "testing"
+
+func TestAdd(t *testing.T) {
+ var pl Playlist
+ s := NewDummySong("Foo", "Bar")
+ pl.Add(&s)
+ if len(pl) != 1 {
+ t.Log("len should be 1")
+ t.Fail()
+ }
+}
+
+func TestAddPop(t *testing.T) {
+ var pl Playlist
+ s := NewDummySong("Foo", "Bar")
+ pl.Add(&s)
+ if len(pl) != 1 {
+ t.Log("len should be 1")
+ t.Fail()
+ }
+
+ ps := pl.PopSong()
+ if len(pl) != 0 {
+ t.Log("len should be 0")
+ t.Fail()
+ }
+
+ if ps != &s {
+ t.Log("the popped ptr should match the one added")
+ t.Fail()
+ }
+}
+
+func TestAddPopTwice(t *testing.T) {
+ var pl Playlist
+ s1 := NewDummySong("Foo", "Bar")
+ s2 := NewDummySong("Nasen", "Baer")
+ pl.Add(&s1)
+ pl.Add(&s2)
+ if len(pl) != 2 {
+ t.Log("len should be 2")
+ t.Fail()
+ }
+
+ ps1 := pl.PopSong()
+ ps2 := pl.PopSong()
+ if len(pl) != 0 {
+ t.Log("len should be 0")
+ t.Fail()
+ }
+
+ if ps1 != &s1 {
+ t.Log("the popped ptr should match the one added")
+ t.Fail()
+ }
+
+ if ps2 != &s2 {
+ t.Log("the popped ptr should match the one added")
+ t.Fail()
+ }
+}
+
+func TestAdd2AdjustPop(t *testing.T) {
+ var pl Playlist
+ s1 := NewDummySong("Foo", "Bar")
+ s2 := NewDummySong("Nasen", "Baer")
+ pl.Add(&s1)
+ pl.Add(&s2)
+ if len(pl) != 2 {
+ t.Log("len should be 2")
+ t.Fail()
+ }
+
+ s2.Weight += 1
+ pl.Adjust(&s2)
+
+ ps := pl.PopSong()
+ if len(pl) != 1 {
+ t.Log("len should be 1")
+ t.Fail()
+ }
+
+ if ps != &s2 {
+ t.Log("the popped ptr should match the one adjusted")
+ t.Fail()
+ }
+}