From 3c065ceded2a58d5aadbcf64417f2cfc92268a08 Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Wed, 26 Feb 2025 18:09:06 +0100 Subject: Refactor fixtures, introduce song pool argument --- .../test/midi_launchpad_mini_integrationtest.py | 142 +++++++++------------ 1 file changed, 62 insertions(+), 80 deletions(-) (limited to 'solo-tool-project/test/midi_launchpad_mini_integrationtest.py') diff --git a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py index c731539..be8ed88 100644 --- a/solo-tool-project/test/midi_launchpad_mini_integrationtest.py +++ b/solo-tool-project/test/midi_launchpad_mini_integrationtest.py @@ -2,8 +2,7 @@ import pytest from mido import Message from solo_tool.midi_controller_launchpad_mini import MidiController -from solo_tool.solo_tool import SoloTool -from player_mock import Player as PlayerMock +from fixtures import songPool, soloTool, mockPlayer, testSongs LED_RED = 3 LED_YELLOW = 126 @@ -51,14 +50,6 @@ class MidiWrapperMock: def getLatestMessage(self): return self.sentMessages[-1] -@pytest.fixture -def playerMock(): - return PlayerMock() - -@pytest.fixture -def soloTool(playerMock): - return SoloTool(playerMock) - @pytest.fixture def midiWrapperMock(): return MidiWrapperMock() @@ -67,73 +58,70 @@ def midiWrapperMock(): def uut(soloTool, midiWrapperMock): return MidiController(soloTool, midiWrapperMock) -def test_startAndPauseButtons(uut, midiWrapperMock, playerMock): +def test_startAndPauseButtons(uut, midiWrapperMock, mockPlayer): uut.connect() - assert not playerMock.playing + assert not mockPlayer.playing midiWrapperMock.simulateInput(playPauseButton) - assert playerMock.playing + assert mockPlayer.playing assert midiWrapperMock.getLatestMessage() == (playPauseButton, MidiController.LED_GREEN, 0) midiWrapperMock.simulateInput(playPauseButton) - assert not playerMock.playing + assert not mockPlayer.playing assert midiWrapperMock.getLatestMessage() == (playPauseButton, MidiController.LED_YELLOW, 0) -def test_startPauseButtonLed(uut, midiWrapperMock, playerMock, soloTool): +def test_startPauseButtonLed(uut, midiWrapperMock, mockPlayer, soloTool): uut.connect() - assert not playerMock.playing + assert not mockPlayer.playing - playerMock.playing = True - playerMock.simulatePlayingStateChanged() + mockPlayer.playing = True + mockPlayer.simulatePlayingStateChanged() assert midiWrapperMock.getLatestMessage() == (playPauseButton, MidiController.LED_GREEN, 0) - playerMock.playing = False - playerMock.simulatePlayingStateChanged() + mockPlayer.playing = False + mockPlayer.simulatePlayingStateChanged() assert midiWrapperMock.getLatestMessage() == (playPauseButton, MidiController.LED_YELLOW, 0) -def test_jumpToKeyPositionButton(uut, midiWrapperMock, soloTool, playerMock): - soloTool.addSong("test.flac") +def test_jumpToKeyPositionButton(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): + soloTool.addSong(testSongs[0]) uut.connect() soloTool.keyPoint = 0.5 - assert playerMock.position == 0.0 + assert mockPlayer.position == 0.0 midiWrapperMock.simulateInput(jumpToKeyPositionButton) - assert playerMock.position == 0.5 + assert mockPlayer.position == 0.5 # TODO implement -def test_jumpToStartButton(uut, midiWrapperMock, soloTool, playerMock): +def test_jumpToStartButton(uut, midiWrapperMock, soloTool, mockPlayer): pass -def test_previousAndNextSongButtons(uut, midiWrapperMock, soloTool, playerMock): - songs = [ - "test.flac", - "test.mp3" - ] - for s in songs: +def test_previousAndNextSongButtons(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): + for s in testSongs: soloTool.addSong(s) uut.connect() - assert playerMock.currentSong == songs[0] + assert mockPlayer.currentSong == testSongs[0] midiWrapperMock.simulateInput(nextSongButton) - assert playerMock.currentSong == songs[1] + assert mockPlayer.currentSong == testSongs[1] - midiWrapperMock.simulateInput(nextSongButton) - assert playerMock.currentSong == songs[1] + for _ in testSongs: + midiWrapperMock.simulateInput(nextSongButton) + assert mockPlayer.currentSong == testSongs[-1] midiWrapperMock.simulateInput(previousSongButton) - assert playerMock.currentSong == songs[0] + assert mockPlayer.currentSong == testSongs[-2] - midiWrapperMock.simulateInput(previousSongButton) - assert playerMock.currentSong == songs[0] + for _ in testSongs: + midiWrapperMock.simulateInput(previousSongButton) + assert mockPlayer.currentSong == testSongs[0] -def test_previousAndNextKeyPositionButtons(uut, midiWrapperMock, soloTool, playerMock): - song = "test.flac" +def test_previousAndNextKeyPositionButtons(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): keyPoints = [0.2, 0.1] - soloTool.addSong(song) + soloTool.addSong(testSongs[0]) soloTool.keyPoints = keyPoints uut.connect() @@ -152,7 +140,7 @@ def test_previousAndNextKeyPositionButtons(uut, midiWrapperMock, soloTool, playe midiWrapperMock.simulateInput(previousKeyPositionButton) assert soloTool.keyPoint == 0.1 -def test_playbackRateButtons(uut, midiWrapperMock, soloTool, playerMock): +def test_playbackRateButtons(uut, midiWrapperMock, soloTool, mockPlayer): playbackRateOptions = { 16 : (0.5, [LED_YELLOW] * 1 + [LED_OFF] * 7), 17 : (0.6, [LED_YELLOW] * 2 + [LED_OFF] * 6), @@ -164,18 +152,18 @@ def test_playbackRateButtons(uut, midiWrapperMock, soloTool, playerMock): 23 : (1.2, [LED_YELLOW] * 8) } uut.connect() - assert playerMock.rate == 1.0 + assert mockPlayer.rate == 1.0 for t, button in enumerate(playbackRateOptions): midiWrapperMock.sentMessages.clear() midiWrapperMock.simulateInput(button) - assert playerMock.rate == playbackRateOptions[button][0] + assert mockPlayer.rate == playbackRateOptions[button][0] for i, colour in enumerate(playbackRateOptions[button][1]): assert midiWrapperMock.sentMessages[i] == (16 + i, colour, 0) -def test_playbackRateLeds(uut, midiWrapperMock, soloTool, playerMock): +def test_playbackRateLeds(uut, midiWrapperMock, soloTool, mockPlayer): playbackRateOptions = [ (0.00, [LED_OFF] * 8), (0.49, [LED_OFF] * 8), @@ -205,19 +193,19 @@ def test_playbackRateLeds(uut, midiWrapperMock, soloTool, playerMock): (1.5, [LED_YELLOW] * 8) ] uut.connect() - assert playerMock.rate == 1.0 + assert mockPlayer.rate == 1.0 for t, (rate, leds) in enumerate(playbackRateOptions): print(t) midiWrapperMock.sentMessages.clear() soloTool.rate = rate - assert playerMock.rate == rate + assert mockPlayer.rate == rate for i, colour in enumerate(leds): assert midiWrapperMock.sentMessages[i] == (16 + i, colour, 0) -def test_playbackVolumeButtons(uut, midiWrapperMock, soloTool, playerMock): +def test_playbackVolumeButtons(uut, midiWrapperMock, soloTool, mockPlayer): playbackVolumeOptions = { 0 : (0.5, [LED_GREEN] * 1 + [LED_OFF] * 7), 1 : (0.6, [LED_GREEN] * 2 + [LED_OFF] * 6), @@ -229,18 +217,18 @@ def test_playbackVolumeButtons(uut, midiWrapperMock, soloTool, playerMock): 7 : (1.2, [LED_GREEN] * 8) } uut.connect() - assert playerMock.volume == 1.0 + assert mockPlayer.volume == 1.0 for t, button in enumerate(playbackVolumeOptions): midiWrapperMock.sentMessages.clear() midiWrapperMock.simulateInput(button) - assert playerMock.volume == playbackVolumeOptions[button][0] + assert mockPlayer.volume == playbackVolumeOptions[button][0] for i, colour in enumerate(playbackVolumeOptions[button][1]): assert midiWrapperMock.sentMessages[i] == (i, colour, 0) -def test_playbackVolumeLeds(uut, midiWrapperMock, soloTool, playerMock): +def test_playbackVolumeLeds(uut, midiWrapperMock, soloTool, mockPlayer): playbackVolumeOptions = [ (0.00, [LED_OFF] * 8), (0.49, [LED_OFF] * 8), @@ -270,13 +258,13 @@ def test_playbackVolumeLeds(uut, midiWrapperMock, soloTool, playerMock): (1.5, [LED_GREEN] * 8) ] uut.connect() - assert playerMock.volume == 1.0 + assert mockPlayer.volume == 1.0 for t, (volume, leds) in enumerate(playbackVolumeOptions): midiWrapperMock.sentMessages.clear() soloTool.volume = volume - assert playerMock.volume == volume + assert mockPlayer.volume == volume for i, colour in enumerate(leds): assert midiWrapperMock.sentMessages[i] == (i, colour, 0) @@ -325,73 +313,67 @@ def test_connectDisconnect(uut, midiWrapperMock): assert set(midiWrapperMock.sentMessages) == set(teardownMessages) -def test_playingFeedbackWhenChangingSong(uut, midiWrapperMock, soloTool, playerMock): - songs = [ - "test.flac", - "test.mp3" - ] - for s in songs: +def test_playingFeedbackWhenChangingSong(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): + for s in testSongs: soloTool.addSong(s) uut.connect() soloTool.play() - assert playerMock.playing + assert mockPlayer.playing assert midiWrapperMock.getLatestMessage() == (playPauseButton, LED_GREEN, 0) soloTool.song = 1 - assert not playerMock.playing + assert not mockPlayer.playing assert midiWrapperMock.getLatestMessage() == (playPauseButton, LED_YELLOW, 0) -def test_setKeyPositionButton(uut, midiWrapperMock, soloTool, playerMock): - song = "test.flac" - soloTool.addSong(song) +def test_setKeyPositionButton(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): + soloTool.addSong(testSongs[0]) uut.connect() - playerMock.position = 0.3 + mockPlayer.position = 0.3 midiWrapperMock.simulateInput(setKeyPositionButton) assert soloTool.keyPoint == 0.3 - playerMock.position = 0.5 + mockPlayer.position = 0.5 midiWrapperMock.simulateInput(setKeyPositionButton) assert soloTool.keyPoint == 0.5 - playerMock.position = 0.7 + mockPlayer.position = 0.7 midiWrapperMock.simulateInput(jumpToKeyPositionButton) - assert playerMock.position == 0.5 + assert mockPlayer.position == 0.5 -def test_seekButtons(uut, midiWrapperMock, soloTool, playerMock): - song = "test.flac" - soloTool.addSong(song) +def test_seekButtons(uut, midiWrapperMock, soloTool, mockPlayer, testSongs): + soloTool.addSong(testSongs[0]) uut.connect() - assert playerMock.position == 0.0 + assert mockPlayer.position == 0.0 midiWrapperMock.simulateInput(fwd25PcButton) - assert playerMock.position == 0.25 + assert mockPlayer.position == 0.25 midiWrapperMock.simulateInput(fwd5PcButton) - assert playerMock.position == 0.30 + assert mockPlayer.position == 0.30 midiWrapperMock.simulateInput(fwd1PcButton) - assert playerMock.position == 0.31 + assert mockPlayer.position == 0.31 midiWrapperMock.simulateInput(fwd25PcButton) midiWrapperMock.simulateInput(fwd25PcButton) midiWrapperMock.simulateInput(fwd25PcButton) - assert playerMock.position == 1.0 + assert mockPlayer.position == 1.0 midiWrapperMock.simulateInput(rwd25PcButton) - assert playerMock.position == 0.75 + assert mockPlayer.position == 0.75 midiWrapperMock.simulateInput(rwd5PcButton) - assert playerMock.position == 0.70 + assert mockPlayer.position == 0.70 midiWrapperMock.simulateInput(rwd1PcButton) - assert playerMock.position == 0.69 + assert mockPlayer.position == 0.69 midiWrapperMock.simulateInput(rwd25PcButton) midiWrapperMock.simulateInput(rwd25PcButton) midiWrapperMock.simulateInput(rwd25PcButton) - assert playerMock.position == 0.0 + assert mockPlayer.position == 0.0 -- cgit v1.2.3