import pathlib import shutil import pytest 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 = [ "test.flac", "test.mp3", "test_session.json" ] for f in testFiles: shutil.copy(pathlib.Path(f), tmp_path) return tmp_path @pytest.fixture def soloTool(prepared_tmp_path): st = SoloTool() st.loadSession(prepared_tmp_path / "test_session.json") return st @pytest.fixture def uut(soloTool): return SoloToolController(soloTool) def test_previousSong(uut, soloTool): called = False receivedValue = None def callback(value): nonlocal called, receivedValue called = True receivedValue = value soloTool.registerCurrentSongCallback(callback) soloTool.song == None assert not called uut.previousSong() soloTool.song == 0 assert called assert receivedValue == 0 called = False uut.previousSong() soloTool.song == 0 assert not called soloTool.song = 1 uut.previousSong() soloTool.song == 0 assert called assert receivedValue == 0 called = False def test_nextSong(uut, soloTool): called = False receivedValue = None def callback(value): nonlocal called, receivedValue called = True receivedValue = value soloTool.registerCurrentSongCallback(callback) soloTool.song == None assert not called uut.nextSong() soloTool.song == 0 assert called assert receivedValue == 0 called = False uut.nextSong() soloTool.song == 1 assert called assert receivedValue == 1 called = False uut.nextSong() soloTool.song == 1 assert not called