diff options
Diffstat (limited to 'abcontroller_unittest.py')
-rw-r--r-- | abcontroller_unittest.py | 95 |
1 files changed, 82 insertions, 13 deletions
diff --git a/abcontroller_unittest.py b/abcontroller_unittest.py index 0ee1554..839c88a 100644 --- a/abcontroller_unittest.py +++ b/abcontroller_unittest.py @@ -1,16 +1,17 @@ from abcontroller import ABController from collections import namedtuple +TCase = namedtuple("TCase", ["currentPosition", "requestedPosition"]) AB = namedtuple("AB", ["a", "b"]) +abLimits = AB(0.2, 0.4) -def checkLimits(uut, aLimit, bLimit): - Test = namedtuple("Test", ["currentPosition", "requestedPosition"]) +def checkLimits(uut, aLimit, bLimit, fail=False): tests = [ - Test(aLimit - 0.1, None), - Test(aLimit, None), - Test(bLimit - 0.1, None), - Test(bLimit, None), - Test(bLimit + 0.1, aLimit) + TCase(aLimit - 0.1, None), + TCase(aLimit, None), + TCase(bLimit - 0.1, None), + TCase(bLimit, None), + TCase(bLimit + 0.1, aLimit if not fail else None) ] requestedPosition = None @@ -29,7 +30,6 @@ def checkLimits(uut, aLimit, bLimit): def test_oneSetOfLimits(): song = "/path/to/song" - abLimits = AB(0.2, 0.4) uut = ABController() uut.setCurrentSong(song) @@ -56,11 +56,80 @@ def test_multipleSetsOfLimits(): checkLimits(uut, l.a, l.b) def test_multipleSongs(): - # different limits in each song - pass + songs = [ + "/path/to/song", + "/path/to/another/song" + ] + abLimits = [ + AB(0.2, 0.4), + AB(0.3, 0.5) + ] + uut = ABController() + for i, s in enumerate(songs): + uut.addLimits(abLimits[i].a, abLimits[i].b, s) + + for i, s in enumerate(songs): + uut.setCurrentSong(s) + uut.setCurrentLimits(0) + + checkLimits(uut, abLimits[i].a, abLimits[i].b) def test_disableAbRepeat(): - pass + song = "/path/to/song" + + uut = ABController() + uut.setCurrentSong(song) + uut.addLimits(abLimits.a, abLimits.b) + uut.setCurrentLimits(0) + + uut.setEnable(False) + checkLimits(uut, abLimits.a, abLimits.b, fail=True) + + uut.setEnable(True) + checkLimits(uut, abLimits.a, abLimits.b) + +def test_addLimitsToSpecificSong(): + song = "/path/to/song" + + uut = ABController() + uut.addLimits(abLimits.a, abLimits.b, song) + uut.setCurrentSong(song) + uut.setCurrentLimits(0) + + checkLimits(uut, abLimits.a, abLimits.b) + +def test_addLimitsWithoutCurrentSong(): + uut = ABController() + uut.addLimits(abLimits.a, abLimits.b) + uut.setCurrentLimits(0) + + checkLimits(uut, abLimits.a, abLimits.b, fail=True) + +def test_addLimitsToSongWithoutCurrentSong(): + song = "/path/to/song" + uut = ABController() + uut.addLimits(abLimits.a, abLimits.b, song) + uut.setCurrentLimits(0) -def test_addLimitsToSong(): - pass + checkLimits(uut, abLimits.a, abLimits.b, fail=True) + + uut.setCurrentSong(song) + + checkLimits(uut, abLimits.a, abLimits.b, fail=True) + + uut.setCurrentLimits(0) + + checkLimits(uut, abLimits.a, abLimits.b) + +def test_addLimitsToCurrentSongButDoNotSetCurrentLimits(): + song = "/path/to/song" + uut = ABController() + uut.setCurrentSong(song) + uut.addLimits(abLimits.a, abLimits.b) + + checkLimits(uut, abLimits.a, abLimits.b, fail=True) + + uut.setCurrentLimits(0) + + checkLimits(uut, abLimits.a, abLimits.b) + |