aboutsummaryrefslogtreecommitdiffstats
path: root/solo_tool_integrationtest.py
diff options
context:
space:
mode:
Diffstat (limited to 'solo_tool_integrationtest.py')
-rw-r--r--solo_tool_integrationtest.py131
1 files changed, 122 insertions, 9 deletions
diff --git a/solo_tool_integrationtest.py b/solo_tool_integrationtest.py
index b3a0978..bbc98a8 100644
--- a/solo_tool_integrationtest.py
+++ b/solo_tool_integrationtest.py
@@ -1,5 +1,6 @@
from solo_tool import SoloTool
-from time import sleep
+import pathlib
+import shutil
class MockPlayer():
STOPPED = 0
@@ -11,7 +12,7 @@ class MockPlayer():
self.rate = 1.0
self.position = 0.0
self.volume = 1.0
- self.currentSong = ""
+ self.currentSong = None
def play(self):
self.state = MockPlayer.PLAYING
@@ -67,16 +68,21 @@ def test_playerControls():
uut.setPlaybackVolume(0.5)
assert mockPlayer.volume == 0.5
-def test_addAndSetSong():
- song = "test.flac"
+def test_addAndSetSongs():
+ songs = [
+ "test.flac",
+ "test.mp3"
+ ]
mockPlayer = MockPlayer()
uut = SoloTool(mockPlayer)
-
- uut.addSong(song)
- assert mockPlayer.currentSong == ""
- uut.setSong(0)
- assert mockPlayer.currentSong == song
+ for s in songs:
+ uut.addSong(s)
+ assert mockPlayer.currentSong == None
+
+ for i, s in enumerate(songs):
+ uut.setSong(i)
+ assert mockPlayer.currentSong == songs[i]
def test_addAndSetAbLimit():
song = "test.flac"
@@ -100,8 +106,115 @@ def test_addAndSetAbLimit():
uut.setAbLimit(0)
uut.tick()
+ assert mockPlayer.position == 0.5
+
+ uut.setAbLimitEnable(True)
+
+ uut.tick()
assert mockPlayer.position == 0.2
uut.tick()
assert mockPlayer.position == 0.2
+def test_multipleSongsAndAbLimits():
+ songs = [
+ "test.flac",
+ "test.mp3"
+ ]
+ abLimits = [
+ [0.2, 0.4],
+ [0.5, 0.7]
+ ]
+ mockPlayer = MockPlayer()
+ uut = SoloTool(mockPlayer)
+
+ for s in songs:
+ uut.addSong(s)
+
+ for i, l in enumerate(abLimits):
+ uut.setSong(i)
+ uut.addAbLimit(l[0], l[1])
+
+ uut.setAbLimitEnable(True)
+
+ for i, l in enumerate(abLimits):
+ uut.setSong(i)
+ uut.setAbLimit(0)
+
+ mockPlayer.position = l[0]
+ uut.tick()
+ assert mockPlayer.position == l[0]
+
+ mockPlayer.position = l[1] + 0.1
+ uut.tick()
+ assert mockPlayer.position == l[0]
+
+def test_addAbLimitWithoutSong():
+ song = "test.flac"
+ abLimit = [0.2, 0.4]
+ overflow = abLimit[1] + 0.1
+ mockPlayer = MockPlayer()
+ uut = SoloTool(mockPlayer)
+ mockPlayer.position = overflow
+ uut.setAbLimitEnable(True)
+
+ uut.addAbLimit(abLimit[0], abLimit[1])
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.setAbLimit(0)
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.addSong(song)
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.setAbLimit(0)
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.setSong(0)
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.setAbLimit(0)
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.addAbLimit(abLimit[0], abLimit[1])
+ uut.tick()
+ assert mockPlayer.position == overflow
+
+ uut.setAbLimit(0)
+ uut.tick()
+ assert mockPlayer.position == abLimit[0]
+
+def copyTestFiles(tmp_path):
+ testFiles = [
+ "test.flac",
+ "test.mp3",
+ "test_session.json"
+ ]
+ for f in testFiles:
+ shutil.copy(pathlib.Path(f), tmp_path)
+
+def test_loadAndSaveSession(tmp_path):
+ copyTestFiles(tmp_path)
+ mockPlayer = MockPlayer()
+ uut = SoloTool(mockPlayer)
+
+ loadedSessionFile = tmp_path / "test_session.json"
+ savedSessionFile = tmp_path / "test_session_save.json"
+
+ uut.loadSession(loadedSessionFile)
+ uut.saveSession(savedSessionFile)
+
+ import json
+ with open(loadedSessionFile, "r") as f:
+ loadedSession = json.loads(f.read())
+
+ with open(savedSessionFile, "r") as f:
+ savedSession = json.loads(f.read())
+
+ assert loadedSession == savedSession