From 62490ac2be04aa3b819222f11389e0549f5909e9 Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Tue, 25 Feb 2025 13:38:17 +0100 Subject: Add song list notification, edge case tests --- .../solo_tool/solo_tool_songs_integrationtest.py | 112 --------------------- 1 file changed, 112 deletions(-) delete mode 100644 solo-tool-project/src/solo_tool/solo_tool_songs_integrationtest.py (limited to 'solo-tool-project/src/solo_tool/solo_tool_songs_integrationtest.py') diff --git a/solo-tool-project/src/solo_tool/solo_tool_songs_integrationtest.py b/solo-tool-project/src/solo_tool/solo_tool_songs_integrationtest.py deleted file mode 100644 index 0023d81..0000000 --- a/solo-tool-project/src/solo_tool/solo_tool_songs_integrationtest.py +++ /dev/null @@ -1,112 +0,0 @@ -import pathlib -import shutil -import pytest - -from solo_tool.solo_tool import SoloTool -from player_mock import Player as MockPlayer - -@pytest.fixture -def mockPlayer(): - return MockPlayer() - -@pytest.fixture -def uut(mockPlayer): - return SoloTool(player=mockPlayer) - -@pytest.fixture -def testSongs(): - return [ - "test.flac", - "test.mp3" - ] - -def test_songSelectionFlow(uut, mockPlayer, testSongs): - # Initially, song list is empty and no song is selected - assert uut.song is None - assert mockPlayer.currentSong == None - assert uut.songs == [] - - # When the first song is added, it is selected automatically - uut.addSong(testSongs[0]) - assert uut.song == 0 - assert mockPlayer.currentSong == testSongs[0] - assert uut.songs == testSongs[0:1] - - # Subsequently added songs are not selected automatically - # Song list order is addition order - for i, song in enumerate(testSongs[1:]): - uut.addSong(testSongs[1]) - assert uut.song == 0 - assert mockPlayer.currentSong == testSongs[0] - assert uut.songs == testSongs[0:i + 2] - - # Songs are selected by index - for i, s in enumerate(uut.songs): - uut.song = i - assert uut.song == i - assert mockPlayer.currentSong == uut.songs[i] - -def test_songSelectionSanitization(uut, mockPlayer, testSongs): - for song in testSongs: - uut.addSong(song) - - # Modifying the song list directly has no effect - uut.songs.append("something") - assert uut.songs == testSongs - assert mockPlayer.currentSong == testSongs[0] - - # The current song cannot be de-selected - uut.song = None - assert uut.song == 0 - assert mockPlayer.currentSong == testSongs[0] - - # Non-existent songs cannot be selected - uut.song = -1 - assert uut.song == 0 - assert mockPlayer.currentSong == testSongs[0] - - uut.song = len(testSongs) - assert uut.song == 0 - assert mockPlayer.currentSong == testSongs[0] - -def test_addInexistentSong(uut, mockPlayer): - # Songs must exist in the filesystem - song = "not/a/real/file" - - with pytest.raises(FileNotFoundError): - uut.addSong(song) - - assert uut.songs == [] - assert uut.song is None - -def test_songSelectionNotification(uut, testSongs): - called = False - receivedValue = None - def callback(value): - nonlocal called, receivedValue - called = True - receivedValue = value - - uut.registerSongSelectionCallback(callback) - assert not called - - # Adding the first song triggers because the song is automatically selected - uut.addSong(songs[0]) - assert called - assert receivedValue == 0 - called = False - - # Adding more songs does not trigger since the selection doesn't change - for song in testSongs: - uut.addSong(song) - assert not called - - # Selecting another song triggers - uut.song = 1 - assert called - assert receivedValue == 1 - called = False - - # Selecting the currently selected song does not trigger - uut.song = 1 - assert not called -- cgit v1.2.3