aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-02-22 10:29:50 +0100
committerEddy Pedroni <epedroni@pm.me>2025-02-22 10:29:50 +0100
commitc990b0231c425743622368399aaf3b3b7231c481 (patch)
tree9716bcc6d03bb5f7e24ec9fd3ebaca758ac4f1fb
parent86660e2498e17e51be77e41be4b53cf0c734f90b (diff)
Refactor to use properties for song list and current song
-rw-r--r--solo-tool-project/src/solo_tool/solo_tool.py19
-rw-r--r--solo-tool-project/src/solo_tool/solo_tool_controller.py12
-rw-r--r--solo-tool-project/test/midi_launchpad_mini_integrationtest.py10
-rw-r--r--solo-tool-project/test/solo_tool_controller_integrationtest.py18
-rw-r--r--solo-tool-project/test/solo_tool_integrationtest.py44
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),