diff options
author | Eddy Pedroni <epedroni@pm.me> | 2025-02-22 10:29:50 +0100 |
---|---|---|
committer | Eddy Pedroni <epedroni@pm.me> | 2025-02-22 10:29:50 +0100 |
commit | c990b0231c425743622368399aaf3b3b7231c481 (patch) | |
tree | 9716bcc6d03bb5f7e24ec9fd3ebaca758ac4f1fb | |
parent | 86660e2498e17e51be77e41be4b53cf0c734f90b (diff) |
Refactor to use properties for song list and current song
5 files changed, 53 insertions, 50 deletions
diff --git a/solo-tool-project/src/solo_tool/solo_tool.py b/solo-tool-project/src/solo_tool/solo_tool.py index 38e3d11..47e31ca 100644 --- a/solo-tool-project/src/solo_tool/solo_tool.py +++ b/solo-tool-project/src/solo_tool/solo_tool.py @@ -25,23 +25,26 @@ class SoloTool: position = self._player.getPlaybackPosition() self._abController.positionChanged(position) - def addSong(self, path): + @property + def songList(self) -> list[str]: + return self._playlist.getSongs() + + def addSong(self, path: str) -> None: if os.path.isfile(path): self._sessionManager.addSong(path) - def setSong(self, index): + @property + def song(self) -> int: + return self._playlist.getCurrentSongIndex() + + @song.setter + def song(self, index: int) -> None: previous = self._playlist.getCurrentSongIndex() self._playlist.setCurrentSong(index) new = self._playlist.getCurrentSongIndex() if previous != new: self._notifier.notify(Notifier.CURRENT_SONG_EVENT, new) - def getCurrentSong(self): - return self._playlist.getCurrentSongIndex() - - def getSongs(self): - return self._playlist.getSongs() - def storeAbLimits(self, aLimit, bLimit): self._abController.storeLimits(aLimit, bLimit) diff --git a/solo-tool-project/src/solo_tool/solo_tool_controller.py b/solo-tool-project/src/solo_tool/solo_tool_controller.py index d283725..0529570 100644 --- a/solo-tool-project/src/solo_tool/solo_tool_controller.py +++ b/solo-tool-project/src/solo_tool/solo_tool_controller.py @@ -7,16 +7,16 @@ class SoloToolController: self._soloTool = soloTool def nextSong(self): - current = self._soloTool.getCurrentSong() + current = self._soloTool.song if current is None: - self._soloTool.setSong(0) + self._soloTool.song = 0 else: - self._soloTool.setSong(current + 1) + self._soloTool.song = current + 1 def previousSong(self): - current = self._soloTool.getCurrentSong() + current = self._soloTool.song if current is None: - self._soloTool.setSong(0) + self._soloTool.song = 0 else: - self._soloTool.setSong(current - 1) + self._soloTool.song = current - 1 diff --git a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py index b0105a9..c0d2b47 100644 --- a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py +++ b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py @@ -180,7 +180,7 @@ def test_previousAndNextAbButtons(uut, midiWrapperMock, soloTool, playerMock): ] soloTool.addSong(song) - soloTool.setSong(0) + soloTool.song = 0 soloTool.setAbLimitEnable(True) for ab in abLimits: @@ -397,19 +397,19 @@ def test_playingFeedbackWhenChangingSong(uut, midiWrapperMock, soloTool, playerM soloTool.addSong(s) uut.connect() - soloTool.setSong(0) + soloTool.song = 0 soloTool.play() assert playerMock.state == PlayerMock.PLAYING assert midiWrapperMock.getLatestMessage() == (playPauseButton, LED_GREEN, 0) - soloTool.setSong(1) + soloTool.song = 1 assert playerMock.state == PlayerMock.STOPPED assert midiWrapperMock.getLatestMessage() == (playPauseButton, LED_YELLOW, 0) def test_setAbButtons(uut, midiWrapperMock, soloTool, playerMock): song = "test.flac" soloTool.addSong(song) - soloTool.setSong(0) + soloTool.song = 0 soloTool.setAbLimitEnable(True) abLimits = (0.6, 0.8) soloTool.storeAbLimits(abLimits[0], abLimits[1]) @@ -445,7 +445,7 @@ def test_setAbButtons(uut, midiWrapperMock, soloTool, playerMock): def test_seekButtons(uut, midiWrapperMock, soloTool, playerMock): song = "test.flac" soloTool.addSong(song) - soloTool.setSong(0) + soloTool.song = 0 uut.connect() diff --git a/solo-tool-project/test/solo_tool_controller_integrationtest.py b/solo-tool-project/test/solo_tool_controller_integrationtest.py index c161c70..9311483 100644 --- a/solo-tool-project/test/solo_tool_controller_integrationtest.py +++ b/solo-tool-project/test/solo_tool_controller_integrationtest.py @@ -36,22 +36,22 @@ def test_previousSong(uut, soloTool): soloTool.registerCurrentSongCallback(callback) - soloTool.getCurrentSong() == None + soloTool.song == None assert not called uut.previousSong() - soloTool.getCurrentSong() == 0 + soloTool.song == 0 assert called assert receivedValue == 0 called = False uut.previousSong() - soloTool.getCurrentSong() == 0 + soloTool.song == 0 assert not called - soloTool.setSong(1) + soloTool.song = 1 uut.previousSong() - soloTool.getCurrentSong() == 0 + soloTool.song == 0 assert called assert receivedValue == 0 called = False @@ -66,21 +66,21 @@ def test_nextSong(uut, soloTool): soloTool.registerCurrentSongCallback(callback) - soloTool.getCurrentSong() == None + soloTool.song == None assert not called uut.nextSong() - soloTool.getCurrentSong() == 0 + soloTool.song == 0 assert called assert receivedValue == 0 called = False uut.nextSong() - soloTool.getCurrentSong() == 1 + soloTool.song == 1 assert called assert receivedValue == 1 called = False uut.nextSong() - soloTool.getCurrentSong() == 1 + soloTool.song == 1 assert not called diff --git a/solo-tool-project/test/solo_tool_integrationtest.py b/solo-tool-project/test/solo_tool_integrationtest.py index ee33468..3a15e36 100644 --- a/solo-tool-project/test/solo_tool_integrationtest.py +++ b/solo-tool-project/test/solo_tool_integrationtest.py @@ -70,9 +70,9 @@ def test_addAndSetSongs(uut, mockPlayer): assert mockPlayer.currentSong == None for i, s in enumerate(songs): - uut.setSong(i) + uut.song = i assert mockPlayer.currentSong == songs[i] - assert uut.getCurrentSong() == i + assert uut.song == i def test_addAndSetAbLimits(uut, mockPlayer): song = "test.flac" @@ -82,7 +82,7 @@ def test_addAndSetAbLimits(uut, mockPlayer): ] uut.addSong(song) - uut.setSong(0) + uut.song = 0 for ab in abLimits: uut.storeAbLimits(ab[0], ab[1]) @@ -139,13 +139,13 @@ def test_multipleSongsAndAbLimits(uut, mockPlayer): uut.addSong(s) for i, l in enumerate(abLimits): - uut.setSong(i) + uut.song = i uut.storeAbLimits(l[0], l[1]) uut.setAbLimitEnable(True) for i, l in enumerate(abLimits): - uut.setSong(i) + uut.song = i uut.loadAbLimits(0) mockPlayer.position = l[0] @@ -184,7 +184,7 @@ def test_storeAbLimitsWithoutSong(uut, mockPlayer): assert mockPlayer.position == default mockPlayer.position = overflow - uut.setSong(0) + uut.song = 0 uut.tick() assert mockPlayer.position == default mockPlayer.position = overflow @@ -211,7 +211,7 @@ def test_nextAndPreviousAbLimit(uut, mockPlayer): ] uut.addSong(song) - uut.setSong(0) + uut.song = 0 uut.setAbLimitEnable(True) for ab in abLimits: @@ -249,18 +249,18 @@ def test_abLimitsWhenChangingSongs(uut, mockPlayer): for s in songs: uut.addSong(s) - uut.setSong(0) + uut.song = 0 for ab in abLimits: uut.storeAbLimits(ab[0], ab[1]) - uut.setSong(1) + uut.song = 1 uut.storeAbLimits(abLimits[0][0], abLimits[0][1]) - uut.setSong(0) + uut.song = 0 uut.loadAbLimits(len(abLimits) - 1) checkLimit(uut, mockPlayer, abLimits[-1][0], abLimits[-1][1]) - uut.setSong(1) + uut.song = 1 checkLimit(uut, mockPlayer, abLimits[-1][0], abLimits[-1][1]) uut.previousStoredAbLimits() @@ -289,7 +289,7 @@ def test_addInexistentFile(uut, mockPlayer): song = "not/a/real/file" uut.addSong(song) - uut.setSong(0) + uut.song = 0 assert mockPlayer.currentSong == None @@ -298,10 +298,10 @@ def test_getters(uut, mockPlayer): abLimit = [0.2, 0.4] uut.addSong(song) - uut.setSong(0) + uut.song = 0 uut.storeAbLimits(abLimit[0], abLimit[1]) - assert uut.getSongs() == [song] + assert uut.songList == [song] limits = uut.getStoredAbLimits() assert len(limits) == 1 @@ -328,7 +328,7 @@ def test_setTemporaryLimits(uut, mockPlayer): uut.setAbLimitEnable(True) mockPlayer.position = overflow uut.addSong(song) - uut.setSong(0) + uut.song = 0 uut.storeAbLimits(abLimits[0][0], abLimits[0][1]) uut.loadAbLimits(0) @@ -352,7 +352,7 @@ def test_jumpToA(uut, mockPlayer): def test_playingStateNotification(uut, mockPlayer): song = "test.flac" uut.addSong(song) - uut.setSong(0) + uut.song = 0 called = False receivedValue = None @@ -395,7 +395,7 @@ def test_playingStateNotification(uut, mockPlayer): def test_playbackVolumeNotification(uut, mockPlayer): song = "test.flac" uut.addSong(song) - uut.setSong(0) + uut.song = 0 called = False receivedValue = None @@ -419,7 +419,7 @@ def test_playbackVolumeNotification(uut, mockPlayer): def test_playbackRateNotification(uut, mockPlayer): song = "test.flac" uut.addSong(song) - uut.setSong(0) + uut.song = 0 called = False receivedValue = None @@ -458,7 +458,7 @@ def test_currentSongNotification(uut): uut.addSong(songs[0]) assert not called - uut.setSong(0) + uut.song = 0 assert called assert receivedValue == 0 called = False @@ -466,10 +466,10 @@ def test_currentSongNotification(uut): uut.addSong(songs[1]) assert not called - uut.setSong(0) + uut.song = 0 assert not called - uut.setSong(1) + uut.song = 1 assert called assert receivedValue == 1 called = False @@ -487,7 +487,7 @@ def test_currentAbNotification(uut): song = "test.flac" uut.addSong(song) - uut.setSong(0) + uut.song = 0 abLimits = [ (0.2, 0.3), |