diff options
| -rw-r--r-- | wrms.go | 4 | ||||
| -rw-r--r-- | wrms_test.go | 85 |
2 files changed, 88 insertions, 1 deletions
@@ -394,7 +394,7 @@ func (wrms *Wrms) AdjustSongWeight(connId uuid.UUID, songUri string, vote string continue } - llog.Info("Adjusting song %s (ptr=%p)", s.Uri, s) + llog.Info("Adjusting song %v (ptr=%p)", s, s) switch vote { case "up": if _, ok := s.Upvotes[connId]; ok { @@ -405,6 +405,7 @@ func (wrms *Wrms) AdjustSongWeight(connId uuid.UUID, songUri string, vote string if _, ok := s.Downvotes[connId]; ok { delete(s.Downvotes, connId) s.Weight += 2 + llog.Debug("Flip downvote") } else { s.Weight += 1 } @@ -419,6 +420,7 @@ func (wrms *Wrms) AdjustSongWeight(connId uuid.UUID, songUri string, vote string if _, ok := s.Upvotes[connId]; ok { delete(s.Upvotes, connId) + llog.Debug("Flip upvote") s.Weight -= 2 } else { s.Weight -= 1 diff --git a/wrms_test.go b/wrms_test.go new file mode 100644 index 0000000..edb174f --- /dev/null +++ b/wrms_test.go @@ -0,0 +1,85 @@ +package main + +import ( + "github.com/google/uuid" + "io" + "muhq.space/go/wrms/llog" + "testing" +) + +type mockPlayer struct{} + +func (p *mockPlayer) Play(*Song) {} +func (p *mockPlayer) PlayUri(string) {} +func (p *mockPlayer) PlayData(io.Reader) {} +func (p *mockPlayer) Search(pattern string) (res chan []Song) { return } +func (p *mockPlayer) Playing() bool { return false } +func (p *mockPlayer) Pause() {} +func (p *mockPlayer) Continue() {} +func (p *mockPlayer) Stop() {} + +var alice, _ = uuid.NewRandom() + +func TestWrmsAdd(t *testing.T) { + wrms := Wrms{Player: &mockPlayer{}} + s1 := NewDummySong("song1", "snfmt") + wrms.AddSong(s1) + + if len(wrms.queue) != 1 { + t.Log("len should be 1") + t.Fail() + } +} + +func TestWrmsAdjust(t *testing.T) { + wrms := Wrms{Player: &mockPlayer{}} + s1 := NewDummySong("song1", "snfmt") + wrms.AddSong(s1) + + wrms.AdjustSongWeight(alice, s1.Uri, "up") + if wrms.queue[0].Weight != 1 { + t.Log("song weight should be 1") + t.Fail() + } +} + +func TestWrmsUpDownNext(t *testing.T) { + wrms := Wrms{Player: &mockPlayer{}} + s1 := NewDummySong("song1", "snfmt") + s2 := NewDummySong("song2", "snfmt") + wrms.AddSong(s1) + wrms.AddSong(s2) + + wrms.AdjustSongWeight(alice, s1.Uri, "down") + wrms.AdjustSongWeight(alice, s2.Uri, "up") + wrms.Next() + if wrms.CurrentSong.Load().Uri != s2.Uri { + t.Log("Not retrning the upvoted song s2") + t.Fail() + } +} + +func TestWrmsUpUpDownNextNext(t *testing.T) { + wrms := Wrms{Player: &mockPlayer{}} + s1 := NewDummySong("song1", "snfmt") + s2 := NewDummySong("song2", "snfmt") + s3 := NewDummySong("song3", "snfmt") + wrms.AddSong(s1) + wrms.AddSong(s2) + wrms.AddSong(s3) + + llog.Info("UpUpDown test") + wrms.AdjustSongWeight(alice, s1.Uri, "up") + wrms.AdjustSongWeight(alice, s2.Uri, "down") + wrms.AdjustSongWeight(alice, s3.Uri, "up") + wrms.Next() + if wrms.CurrentSong.Load().Uri == s2.Uri { + t.Log("Playing the downvoted song s2") + t.Fail() + } + wrms.Next() + if wrms.CurrentSong.Load().Uri == s2.Uri { + t.Log("Playing the downvoted song s2") + t.Fail() + } +} |
