From 2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 27 Jul 2022 20:15:05 +0200 Subject: add logging and tests fo playlist --- playlist.go | 10 ++++++- playlist_test.go | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 playlist_test.go 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() + } +} -- cgit v1.2.3