import pytest from fixtures import soloTool as uut, mockPlayer, testSongs def test_perSongVolumeFlow(uut, mockPlayer, testSongs): # Before a song is added, the volume starts at 100% assert uut.song is None assert mockPlayer.currentSong == None assert uut.volume == 1.0 assert mockPlayer.volume == 1.0 # When songs are added, their volume starts at 100% uut.addSong(testSongs[0]) assert uut.song == 0 assert uut.volume == 1.0 assert mockPlayer.volume == 1.0 # It's possible to change the volume uut.volume = 0.5 assert uut.volume == 0.5 assert mockPlayer.volume == 0.5 # New song song is added, volume stays because the new song is not selected uut.addSong(testSongs[1]) assert uut.song == 0 assert uut.volume == 0.5 assert mockPlayer.volume == 0.5 # Select new song, volume is 100% uut.song = 1 assert uut.volume == 1.0 assert mockPlayer.volume == 1.0 uut.volume = 0.75 # Previous song retains its volume uut.song = 0 assert uut.volume == 0.5 assert mockPlayer.volume == 0.5 # New song also uut.song = 1 assert uut.volume == 0.75 assert mockPlayer.volume == 0.75 def test_perSongVolumeEdgeCases(uut, mockPlayer, testSongs): # If the player volume is not 100% when the first song is added, it is set to 100% uut.volume = 0.5 assert mockPlayer.volume == 0.5 uut.addSong(testSongs[0]) assert uut.volume == 1.0 assert mockPlayer.volume == 1.0