diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2022-07-27 20:15:05 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2022-07-27 20:15:05 +0200 |
| commit | 2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e (patch) | |
| tree | d8193bf533dff493b1ae3f6b5615957603b47c69 | |
| parent | 84ff772ee1642c4f139605fc1a2716ce49f4b015 (diff) | |
| download | WRMS-2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e.tar.gz WRMS-2fd1af916a333ca2ecaaa01bae2e43b922a4ca2e.zip | |
add logging and tests fo playlist
| -rw-r--r-- | playlist.go | 10 | ||||
| -rw-r--r-- | playlist_test.go | 89 |
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() + } +} |
