예제 #1
0
def test_server_sends_time_to_client():
    """
    Check that the server sends data to the clients.
    """
    player = MediaPlayer()
    player.get_current_playlist_position = MagicMock(return_value=1)
    assert_called_in_infinite_loop('media_player.MediaPlayer.get_current_time',
                                   player.sync_to_server)

    with pytest.raises(AssertionError):
        player.get_current_playlist_position = MagicMock(return_value=None)
        assert_called_in_infinite_loop(
            'media_player.MediaPlayer.get_current_time', player.sync_to_server)
예제 #2
0
def test_client_playlist_position_set_without_drift():
    """
    Check that a client's playlist position is set even if
    the client hasn't drifted from the server.
    """
    player = MediaPlayer()
    player.client.receive = MagicMock(return_value=[2, 95])
    player.get_current_time = MagicMock(return_value=100)
    player.get_current_playlist_position = MagicMock(return_value=1)
    player.vlc['player'].get_length = MagicMock(return_value=3000)
    assert_called_in_infinite_loop('vlc.MediaListPlayer.play_item_at_index',
                                   player.sync_to_server)

    with pytest.raises(AssertionError):
        # Assert playlist sync isn't called
        player.get_current_playlist_position = MagicMock(return_value=2)
        assert_called_in_infinite_loop(
            'vlc.MediaListPlayer.play_item_at_index', player.sync_to_server)
예제 #3
0
def test_client_drifts_from_server_sets_playlist_position():
    """
    Check that if the time drifts on a server playing a playlist,
    the client calls play_item_at_index on its player.
    """
    player = MediaPlayer()
    player.client.receive = MagicMock(return_value=[2, 50])
    player.get_current_time = MagicMock(return_value=100)
    player.get_current_playlist_position = MagicMock(return_value=1)
    player.vlc['player'].get_length = MagicMock(return_value=3000)
    assert_called_in_infinite_loop('vlc.MediaListPlayer.play_item_at_index',
                                   player.sync_to_server)
예제 #4
0
def test_client_drifts_from_server():
    """
    Check that if the time drifts, the client calls set_time on its player.
    """
    player = MediaPlayer()
    player.client.receive = MagicMock(return_value=[1, 50])
    player.get_current_time = MagicMock(return_value=100)
    player.get_current_playlist_position = MagicMock(return_value=1)
    player.vlc['player'].get_length = MagicMock(return_value=3000)
    assert_called_in_infinite_loop('vlc.MediaPlayer.set_time',
                                   player.sync_to_server)
    with pytest.raises(AssertionError):
        # Assert playlist sync isn't called
        assert_called_in_infinite_loop(
            'vlc.MediaListPlayer.play_item_at_index', player.sync_to_server)

    # Assert sync isn't called within 2 seconds of the end of the current video
    with pytest.raises(AssertionError):
        player.client.receive = MagicMock(return_value=[1, 2500])
        player.get_current_time = MagicMock(return_value=2000)
        assert_called_in_infinite_loop('vlc.MediaPlayer.set_time',
                                       player.sync_to_server)