db: Fix random next_track() on playlists with only one track

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-12-08 15:08:33 -05:00
parent bb0a9face7
commit 8f26cf9fee
2 changed files with 5 additions and 1 deletions

View File

@ -70,7 +70,7 @@ class Playlist(GObject.GObject):
def next_track(self):
n = self.get_n_tracks()
if self.random and n > 0:
if self.random and n > 1:
self.current += random.randint(1, int((3*n)/4))
else:
self.current += 1

View File

@ -205,10 +205,14 @@ class TestPlaylist(unittest.TestCase):
self.assertEqual(plist.get_property("current"), -1)
plist.add_track(db.make_fake_track(1, 1, "Track 1", "/a/b/c/1.ogg"))
self.assertEqual(plist.next_track(), plist.get_track(0))
self.assertEqual(plist.get_property("current"), 0)
plist.add_track(db.make_fake_track(2, 2, "Track 2", "/a/b/c/2.ogg"))
plist.add_track(db.make_fake_track(3, 3, "Track 3", "/a/b/c/3.ogg"))
random.seed(20210318)
plist.current = -1
self.assertEqual(plist.next_track(), plist.get_track(1))
self.assertEqual(plist.next_track(), plist.get_track(2))
self.assertEqual(plist.next_track(), plist.get_track(0))