def test_playerMode_moveByShouldNotDelegateToMenu():
    menu = mocks.Menu()
    c = Controller(player, menu, listener)
    c._timer = mocks.notRunningTimer()
    c._moveBy(1)
    assert menu.moveByCnt == 0
def test_menuMode_moveByShouldDelegateToMenu():
    timer = mocks.runningTimer()
    c = Controller(player, mocks.Menu(), listener)
    c._timer = timer
    c._exitMenuMode()
    assert timer.cancelCnt == 1
def test_menuMode_back_shouldDelegateToMenu():
    menu = mocks.Menu(isRoot=False)
    c = Controller(player, menu, listener)
    c._timer = mocks.runningTimer()
    c._back()
    assert menu.backCnt == 1
def test_menuMode_backOnRootFolder_shouldLeaveMenuMode():
    menu = mocks.Menu(isRoot=True)
    c = Controller(player, menu, listener)
    c._timer = mocks.runningTimer()
    c._back()
    assert menu.backCnt == 0
def test_playerMode_backShouldNotDelegateToMenu():
    menu = mocks.Menu()
    c = Controller(player, menu, listener)
    c._timer = mocks.notRunningTimer()
    c._back()
    assert menu.backCnt == 0
def test_menuMode_selectShouldDelegateToMenu():
    menu = mocks.Menu()
    c = Controller(player, menu, listener)
    c._timer = mocks.runningTimer()
    c._select()
    assert menu.selectCnt == 1
def test_modeShouldReturnMenuModeDependingOnTimerMode():
    timer = mocks.runningTimer()
    c = Controller(player, menu, listener)
    c._timer = timer
    assert c.mode() is Mode.Menu