aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/test
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-02-23 09:06:33 +0100
committerEddy Pedroni <epedroni@pm.me>2025-02-23 09:06:33 +0100
commit7c0c69431a1ba4939e739a5429c03c067bf6e1dd (patch)
tree19f5fd0830d3e18928bfac3ef16be17eddc76b1f /solo-tool-project/test
parentbef8eee0f63cc5ccb963be9467381e4e605e7f53 (diff)
Pass launchpad mini tests
Diffstat (limited to 'solo-tool-project/test')
-rw-r--r--solo-tool-project/test/midi_launchpad_mini_integrationtest.py60
-rw-r--r--solo-tool-project/test/solo_tool_controller_integrationtest.py4
-rw-r--r--solo-tool-project/test/solo_tool_integrationtest.py79
3 files changed, 81 insertions, 62 deletions
diff --git a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py
index ec41ab2..9588f9f 100644
--- a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py
+++ b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py
@@ -1,8 +1,6 @@
import pytest
from mido import Message
-pytestmark = pytest.mark.skip(reason="not yet implemented")
-
from solo_tool.midi_controller_launchpad_mini import MidiController
from solo_tool.solo_tool import SoloTool
from player_mock import Player as PlayerMock
@@ -125,7 +123,7 @@ def test_jumpToKeyPositionButton(uut, midiWrapperMock, soloTool, playerMock):
soloTool.song = 0
uut.connect()
- soloTool.keyPosition = 0.5
+ soloTool.keyPoint = 0.5
assert playerMock.position == 0.0
midiWrapperMock.simulateInput(jumpToKeyPositionButton)
@@ -147,6 +145,9 @@ def test_previousAndNextSongButtons(uut, midiWrapperMock, soloTool, playerMock):
midiWrapperMock.simulateInput(nextSongButton)
assert playerMock.currentSong == songs[1]
+ midiWrapperMock.simulateInput(nextSongButton)
+ assert playerMock.currentSong == songs[1]
+
midiWrapperMock.simulateInput(previousSongButton)
assert playerMock.currentSong == songs[0]
@@ -155,27 +156,27 @@ def test_previousAndNextSongButtons(uut, midiWrapperMock, soloTool, playerMock):
def test_previousAndNextKeyPositionButtons(uut, midiWrapperMock, soloTool, playerMock):
song = "test.flac"
- keyPositions = [0.2, 0.1]
+ keyPoints = [0.2, 0.1]
soloTool.addSong(song)
soloTool.song = 0
- soloTool.keyPositions = keyPositions
+ soloTool.keyPoints = keyPoints
uut.connect()
- assert soloTool.keyPosition == 0.0
+ assert soloTool.keyPoint == 0.0
midiWrapperMock.simulateInput(nextKeyPositionButton)
- soloTool.keyPosition == 0.1
+ soloTool.keyPoint == 0.1
midiWrapperMock.simulateInput(nextKeyPositionButton)
- soloTool.keyPosition == 0.2
+ soloTool.keyPoint == 0.2
midiWrapperMock.simulateInput(previousKeyPositionButton)
- soloTool.keyPosition == 0.1
+ soloTool.keyPoint == 0.1
midiWrapperMock.simulateInput(previousKeyPositionButton)
- soloTool.keyPosition == 0.1
+ soloTool.keyPoint == 0.1
def test_playbackRateButtons(uut, midiWrapperMock, soloTool, playerMock):
playbackRateOptions = {
@@ -233,9 +234,10 @@ def test_playbackRateLeds(uut, midiWrapperMock, soloTool, playerMock):
assert playerMock.rate == 1.0
for t, (rate, leds) in enumerate(playbackRateOptions):
+ print(t)
midiWrapperMock.sentMessages.clear()
- soloTool.setPlaybackRate(rate)
+ soloTool.rate = rate
assert playerMock.rate == rate
for i, colour in enumerate(leds):
@@ -299,7 +301,7 @@ def test_playbackVolumeLeds(uut, midiWrapperMock, soloTool, playerMock):
for t, (volume, leds) in enumerate(playbackVolumeOptions):
midiWrapperMock.sentMessages.clear()
- soloTool.setPlaybackVolume(volume)
+ soloTool.volume = volume
assert playerMock.volume == volume
for i, colour in enumerate(leds):
@@ -319,22 +321,20 @@ def test_connectDisconnect(uut, midiWrapperMock):
[(i, LED_GREEN, 0) for i in range(0, 6)] + # volume row
[(i, LED_YELLOW, 0) for i in range(16, 22)] + # playback rate row
[
- (stopButton, LED_RED, 0),
- (playPauseButton, LED_YELLOW, 0),
- (abToggleButton, LED_RED, 0),
- (jumpToAButton, LED_YELLOW, 0),
- (previousLimitButton, LED_RED, 0),
- (nextLimitButton, LED_GREEN, 0),
- (setAButton, LED_YELLOW, 0),
- (setBButton, LED_YELLOW, 0),
- (previousSongButton, LED_RED, 0),
- (rwd1PcButton, LED_RED, 0),
- (rwd5PcButton, LED_RED, 0),
- (rwd25PcButton, LED_RED, 0),
- (nextSongButton, LED_GREEN, 0),
- (fwd1PcButton, LED_GREEN, 0),
- (fwd5PcButton, LED_GREEN, 0),
- (fwd25PcButton, LED_GREEN, 0),
+ (stopButton, LED_RED, 0),
+ (playPauseButton, LED_YELLOW, 0),
+ (jumpToKeyPositionButton, LED_YELLOW, 0),
+ (previousKeyPositionButton, LED_RED, 0),
+ (nextKeyPositionButton, LED_GREEN, 0),
+ (setKeyPositionButton, LED_YELLOW, 0),
+ (previousSongButton, LED_RED, 0),
+ (rwd1PcButton, LED_RED, 0),
+ (rwd5PcButton, LED_RED, 0),
+ (rwd25PcButton, LED_RED, 0),
+ (nextSongButton, LED_GREEN, 0),
+ (fwd1PcButton, LED_GREEN, 0),
+ (fwd5PcButton, LED_GREEN, 0),
+ (fwd25PcButton, LED_GREEN, 0),
])
teardownMessages = [(int(i / 8) * 16 + (i % 8), LED_OFF, 0) for i in range(0, 64)] # clear all
@@ -378,11 +378,11 @@ def test_setKeyPositionButton(uut, midiWrapperMock, soloTool, playerMock):
playerMock.position = 0.3
midiWrapperMock.simulateInput(setKeyPositionButton)
- assert soloTool.keyPosition == 0.3
+ assert soloTool.keyPoint == 0.3
playerMock.position = 0.5
midiWrapperMock.simulateInput(setKeyPositionButton)
- assert soloTool.keyPosition == 0.5
+ assert soloTool.keyPoint == 0.5
playerMock.position = 0.7
midiWrapperMock.simulateInput(jumpToKeyPositionButton)
diff --git a/solo-tool-project/test/solo_tool_controller_integrationtest.py b/solo-tool-project/test/solo_tool_controller_integrationtest.py
index e39e5f9..8eb09f9 100644
--- a/solo-tool-project/test/solo_tool_controller_integrationtest.py
+++ b/solo-tool-project/test/solo_tool_controller_integrationtest.py
@@ -2,11 +2,11 @@ import pathlib
import shutil
import pytest
-pytestmark = pytest.mark.skip(reason="not yet implemented")
-
from solo_tool.solo_tool_controller import SoloToolController
from solo_tool.solo_tool import SoloTool
+pytestmark = pytest.mark.skip(reason="not yet implemented")
+
@pytest.fixture
def prepared_tmp_path(tmp_path):
testFiles = [
diff --git a/solo-tool-project/test/solo_tool_integrationtest.py b/solo-tool-project/test/solo_tool_integrationtest.py
index 94d5cef..2a818ed 100644
--- a/solo-tool-project/test/solo_tool_integrationtest.py
+++ b/solo-tool-project/test/solo_tool_integrationtest.py
@@ -54,35 +54,58 @@ def test_playerControls(uut, mockPlayer):
assert uut.volume == 0.5
def test_sanitizePlaybackRate(uut):
- # Valid rates are > 0.0
- with pytest.raises(ValueError):
- uut.rate = -0.1
+ # Initial value
+ assert uut.rate == 1.0
- with pytest.raises(ValueError):
- uut.rate = 0.0
+ # Valid rates are >= 0.0, invalid is ignored
+ uut.rate = -0.1
+ assert uut.rate == 1.0
+
+ uut.rate = 0.0
+ assert uut.rate == 0.0
+
+ uut.rate = 0.0001
+ assert uut.rate == 0.0001
- uut.rate = 1.0
uut.rate = 150.0
+ assert uut.rate == 150.0
def test_sanitizePlaybackPosition(uut):
- # Valid positions are in [0, 1)
- with pytest.raises(ValueError):
- uut.position = -0.1
+ # Initial value
+ assert uut.position == 0.0
+
+ # Valid positions are in [0, 1], invalid is limited
+ uut.position = 0.2
+ assert uut.position == 0.2
+
+ uut.position = -0.1
+ assert uut.position == 0.0
+
+ uut.position = 1.0
+ assert uut.position == 1.0
- uut.position = 0.0
- uut.position = 0.999
+ uut.position = 0.4
+ assert uut.position == 0.4
- with pytest.raises(ValueError):
- uut.position = 1.0
+ uut.position = 1.5
+ assert uut.position == 1.0
def test_sanitizePlaybackVolume(uut):
- # Valid volumes are >= 0.0
- with pytest.raises(ValueError):
- uut.volume = -0.1
+ # Initial value
+ assert uut.volume == 1.0
+
+ # Valid volumes are >= 0.0, invalid is ignored
+ uut.volume = -0.1
+ assert uut.volume == 1.0
uut.volume = 0.0
+ assert uut.volume == 0.0
+
uut.volume = 1.0
+ assert uut.volume == 1.0
+
uut.volume = 150.0
+ assert uut.volume == 150.0
def test_addAndSelectSongs(uut, mockPlayer):
songs = [
@@ -112,17 +135,14 @@ def test_addAndSelectSongs(uut, mockPlayer):
assert uut.song == i
# The current song cannot be de-selected
- with pytest.raises(ValueError):
- uut.song = None
+ uut.song = None
assert uut.song == len(uut.songs) - 1
# Non-existent songs cannot be selected
- with pytest.raises(ValueError):
- uut.song = -1
+ uut.song = -1
assert uut.song == len(uut.songs) - 1
- with pytest.raises(ValueError):
- uut.song = 2
+ uut.song = 2
assert uut.song == len(uut.songs) - 1
def test_addAndJumpToKeyPoints(uut, mockPlayer):
@@ -174,22 +194,21 @@ def test_sanitizeKeyPoint(uut):
# Key point and key point list cannot be none
uut.keyPoint = 0.5
- with pytest.raises(ValueError):
- uut.keyPoint = None
+ uut.keyPoint = None
assert uut.keyPoint == 0.5
- with pytest.raises(ValueError):
- uut.keyPoints = None
+ uut.keyPoints = None
assert uut.keyPoints == [0.1, 0.2, 0.4]
# Valid key points are in [0, 1)
- with pytest.raises(ValueError):
- uut.keyPoint = -0.1
+ uut.keyPoint = -0.1
+ assert uut.keyPoint == 0.5
- with pytest.raises(ValueError):
- uut.keyPoint = 1.0
+ uut.keyPoint = 1.0
+ assert uut.keyPoint == 0.5
uut.keyPoint = 0.999
+ assert uut.keyPoint == 0.999
def test_keyPointsPerSong(uut, mockPlayer):
songs = [