diff --git a/tests/backends/local/playback_test.py b/tests/backends/local/playback_test.py index 63d9b958..eb34826e 100644 --- a/tests/backends/local/playback_test.py +++ b/tests/backends/local/playback_test.py @@ -957,10 +957,7 @@ class LocalPlaybackProviderTest(unittest.TestCase): self.assertEqual(self.tracklist.consume, False) @populate_tracklist - @mock.patch('random.shuffle') - def test_random_until_end_of_playlist(self, shuffle_mock): - shuffle_mock.side_effect = lambda tracks: tracks.reverse() - + def test_random_until_end_of_playlist(self): self.tracklist.random = True self.playback.play() for _ in self.tracks[1:]: @@ -968,9 +965,19 @@ class LocalPlaybackProviderTest(unittest.TestCase): tl_track = self.playback.current_tl_track self.assertEqual(self.tracklist.next_track(tl_track), None) + @populate_tracklist + def test_random_with_eot_until_end_of_playlist(self): + self.tracklist.random = True + self.playback.play() + for _ in self.tracks[1:]: + self.playback.on_end_of_track() + tl_track = self.playback.current_tl_track + self.assertEqual(self.tracklist.eot_track(tl_track), None) + @populate_tracklist def test_random_until_end_of_playlist_and_play_from_start(self): - self.tracklist.repeat = True + self.tracklist.random = True + self.playback.play() for _ in self.tracks: self.playback.next() tl_track = self.playback.current_tl_track @@ -979,12 +986,24 @@ class LocalPlaybackProviderTest(unittest.TestCase): self.playback.play() self.assertEqual(self.playback.state, PlaybackState.PLAYING) + @populate_tracklist + def test_random_with_eot_until_end_of_playlist_and_play_from_start(self): + self.tracklist.random = True + self.playback.play() + for _ in self.tracks: + self.playback.on_end_of_track() + tl_track = self.playback.current_tl_track + self.assertNotEqual(self.tracklist.eot_track(tl_track), None) + self.assertEqual(self.playback.state, PlaybackState.STOPPED) + self.playback.play() + self.assertEqual(self.playback.state, PlaybackState.PLAYING) + @populate_tracklist def test_random_until_end_of_playlist_with_repeat(self): self.tracklist.repeat = True self.tracklist.random = True self.playback.play() - for _ in self.tracks: + for _ in self.tracks[1:]: self.playback.next() tl_track = self.playback.current_tl_track self.assertNotEqual(self.tracklist.next_track(tl_track), None) @@ -999,6 +1018,23 @@ class LocalPlaybackProviderTest(unittest.TestCase): played.append(self.playback.current_track) self.playback.next() + @populate_tracklist + @mock.patch('random.shuffle') + def test_play_track_then_enable_random(self, shuffle_mock): + # Covers underlying issue IssueGH17RegressionTest tests for. + shuffle_mock.side_effect = lambda tracks: tracks.reverse() + + expected = self.tl_tracks[1::-1] + actual = [] + + self.playback.play() + self.tracklist.random = True + for _ in self.tracks[1:]: + self.playback.next() + actual.append(self.playback.current_tl_track) + + self.assertEqual(actual, expected) + @populate_tracklist def test_playing_track_that_isnt_in_playlist(self): test = lambda: self.playback.play((17, Track()))