from playlist import Playlist def test_addAndSelectOneSong(): songAddedByUser = "/path/to/song" songSetByCallback = None def testCallback(song): nonlocal songSetByCallback songSetByCallback = song uut = Playlist(testCallback) uut.addSong(songAddedByUser) uut.setCurrentSong(0) assert songAddedByUser == songSetByCallback assert uut.getCurrentSong() == songAddedByUser assert uut.getSongs() == [songAddedByUser] def test_addTwoSongsAndSelectBoth(): songAddedByUser = ["/path/to/song", "/path/to/second/song"] songSetByCallback = None def testCallback(song): nonlocal songSetByCallback songSetByCallback = song uut = Playlist(testCallback) uut.addSong(songAddedByUser[0]) uut.addSong(songAddedByUser[1]) assert uut.getSongs() == songAddedByUser uut.setCurrentSong(0) assert songAddedByUser[0] == songSetByCallback assert uut.getCurrentSong() == songAddedByUser[0] uut.setCurrentSong(1) assert songAddedByUser[1] == songSetByCallback assert uut.getCurrentSong() == songAddedByUser[1] def test_firstAddedSongIsNotSelected(): songAddedByUser = "/path/to/song" songSetByCallback = None def testCallback(song): nonlocal songSetByCallback songSetByCallback = song uut = Playlist(testCallback) uut.addSong(songAddedByUser) assert songSetByCallback == None assert uut.getCurrentSong() == None assert uut.getSongs() == [songAddedByUser] def test_invalidSongSelection(): songAddedByUser = "/path/to/song" songSetByCallback = None def testCallback(song): nonlocal songSetByCallback songSetByCallback = song uut = Playlist(testCallback) assert songSetByCallback == None assert uut.getCurrentSong() == None uut.setCurrentSong(10) assert songSetByCallback == None assert uut.getCurrentSong() == None uut.addSong(songAddedByUser) uut.setCurrentSong(10) assert songSetByCallback == None assert uut.getCurrentSong() == None assert uut.getSongs() == [songAddedByUser]