from solo_tool import SoloTool from time import sleep class MockPlayer(): STOPPED = 0 PLAYING = 1 PAUSED = 2 def __init__(self): self.state = MockPlayer.STOPPED self.rate = 1.0 self.position = 0.0 self.volume = 1.0 self.currentSong = "" def play(self): self.state = MockPlayer.PLAYING def stop(self): self.state = MockPlayer.STOPPED def pause(self): self.state = MockPlayer.PAUSED def setPlaybackRate(self, rate): self.rate = rate def getPlaybackRate(self): return self.rate def setPlaybackPosition(self, position): self.position = position def getPlaybackPosition(self): return self.position def setPlaybackVolume(self, volume): self.volume = volume def getPlaybackVolume(self): return self.volume def setCurrentSong(self, path): self.currentSong = path def test_playerControls(): mockPlayer = MockPlayer() uut = SoloTool(mockPlayer) assert mockPlayer.state == MockPlayer.STOPPED uut.play() assert mockPlayer.state == MockPlayer.PLAYING uut.pause() assert mockPlayer.state == MockPlayer.PAUSED uut.stop() assert mockPlayer.state == MockPlayer.STOPPED assert mockPlayer.rate == 1.0 uut.setPlaybackRate(0.5) assert mockPlayer.rate == 0.5 assert mockPlayer.position == 0.0 uut.setPlaybackPosition(0.5) assert mockPlayer.position == 0.5 assert mockPlayer.volume == 1.0 uut.setPlaybackVolume(0.5) assert mockPlayer.volume == 0.5 def test_addAndSetSong(): song = "test.flac" mockPlayer = MockPlayer() uut = SoloTool(mockPlayer) uut.addSong(song) assert mockPlayer.currentSong == "" uut.setSong(0) assert mockPlayer.currentSong == song def test_addAndSetAbLimit(): song = "test.flac" abLimit = [0.2, 0.4] mockPlayer = MockPlayer() uut = SoloTool(mockPlayer) uut.addSong(song) uut.setSong(0) uut.addAbLimit(abLimit[0], abLimit[1]) mockPlayer.position = 0.0 uut.tick() assert mockPlayer.position == 0.0 mockPlayer.position = 0.5 uut.tick() assert mockPlayer.position == 0.5 uut.setAbLimit(0) uut.tick() assert mockPlayer.position == 0.2 uut.tick() assert mockPlayer.position == 0.2