def test_get_current_time_interpolates(): """ Check that get_current_time interpolates the time from vlc. """ player = MediaPlayer() mock_player = MagicMock() mock_player.get_time = MagicMock(return_value=250) player.vlc['player'] = mock_player assert player.get_current_time() == 250 assert player.get_current_time() == 260 assert player.get_current_time() == 270
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=50) player.get_current_time = MagicMock(return_value=100) assert_called_in_infinite_loop( 'vlc.MediaPlayer.set_time', player.sync_to_server )
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)
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)
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)