Example #1
0
    def test_play_media_wait_state_not_playing(self, mocked_get_vlc,
                                               mocked_threading):
        """
        Test the play() method when media_wait_state() returns False
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        vlc_player = VlcPlayer(None)
        vlc_player.set_state(MediaState.Paused, mocked_display)

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = False
            result = vlc_player.play(mocked_display)

        # THEN: A thread should be started, but the method should return False
        mocked_thread.start.assert_called_with()
        self.assertFalse(result)
Example #2
0
    def setup_visible_mouse_test(self, MockedSettings, MockedQtGui, mocked_get_vlc, mocked_is_macosx, mocked_is_win):
        """
        Test the setup method when Settings().value("hide mouse") is False
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = False
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = False
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtGui.QFrame.NoFrame = 1
        MockedQtGui.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: The VLC instance should be created with the correct options
        mocked_vlc.Instance.assert_called_with('--no-video-title-show --no-audio --no-video-title-show')
Example #3
0
    def play_test(self, mocked_get_vlc, mocked_threading):
        """
        Test the play() method
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_controller.media_info.media_type = MediaType.Video
        mocked_controller.media_info.volume = 100
        mocked_media = MagicMock()
        mocked_media.get_duration.return_value = 50000
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_media_player.get_media.return_value = mocked_media
        vlc_player = VlcPlayer(None)
        vlc_player.state = MediaState.Paused

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = True
            result = vlc_player.play(mocked_display)

        # THEN: A bunch of things should happen to play the media
        mocked_thread.start.assert_called_with()
        self.assertEqual(50, mocked_controller.media_info.length)
        mocked_volume.assert_called_with(mocked_display, 100)
        mocked_controller.seek_slider.setMaximum.assert_called_with(50000)
        self.assertEqual(MediaState.Playing, vlc_player.state)
        mocked_display.vlc_widget.raise_.assert_called_with()
        self.assertTrue(result, 'The value returned from play() should be True')
Example #4
0
    def update_ui_dvd_test(self, mocked_get_vlc):
        """
        Test updating the UI for a CD or DVD
        """
        # GIVEN: A whole bunch of mocks
        mocked_vlc = MagicMock()
        mocked_vlc.State.Ended = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 100
        mocked_controller.media_info.end_time = 300
        mocked_controller.seek_slider.isSliderDown.return_value = False
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_media.get_state.return_value = 1
        mocked_display.vlc_media_player.get_time.return_value = 400000
        mocked_display.controller.media_info.media_type = MediaType.DVD
        vlc_player = VlcPlayer(None)

        # WHEN: update_ui() is called
        with patch.object(vlc_player, 'stop') as mocked_stop, \
                patch.object(vlc_player, 'set_visible') as mocked_set_visible:
            vlc_player.update_ui(mocked_display)

        # THEN: Certain methods should be called
        mocked_stop.assert_called_with(mocked_display)
        self.assertEqual(2, mocked_stop.call_count)
        mocked_display.vlc_media_player.get_time.assert_called_with()
        mocked_set_visible.assert_called_with(mocked_display, False)
        mocked_controller.seek_slider.setSliderPosition.assert_called_with(300000)
        expected_calls = [call(True), call(False)]
        self.assertEqual(expected_calls, mocked_controller.seek_slider.blockSignals.call_args_list)
Example #5
0
    def test_update_ui_dvd(self, mocked_get_vlc):
        """
        Test updating the UI for a CD or DVD
        """
        # GIVEN: A whole bunch of mocks
        mocked_vlc = MagicMock()
        mocked_vlc.State.Ended = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 100
        mocked_controller.media_info.end_time = 300
        mocked_controller.seek_slider.isSliderDown.return_value = False
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_media.get_state.return_value = 1
        mocked_display.vlc_media_player.get_time.return_value = 400000
        mocked_display.controller.media_info.media_type = MediaType.DVD
        vlc_player = VlcPlayer(None)

        # WHEN: update_ui() is called
        with patch.object(vlc_player, 'stop') as mocked_stop, \
                patch.object(vlc_player, 'set_visible') as mocked_set_visible:
            vlc_player.update_ui(mocked_display)

        # THEN: Certain methods should be called
        mocked_stop.assert_called_with(mocked_display)
        self.assertEqual(2, mocked_stop.call_count)
        mocked_display.vlc_media_player.get_time.assert_called_with()
        mocked_set_visible.assert_called_with(mocked_display, False)
        mocked_controller.seek_slider.setSliderPosition.assert_called_with(
            300000)
        expected_calls = [call(True), call(False)]
        self.assertEqual(
            expected_calls,
            mocked_controller.seek_slider.blockSignals.call_args_list)
Example #6
0
def test_setup_windows(MockedQtWidgets, mocked_get_vlc, mocked_is_macosx,
                       mocked_is_win, mock_settings):
    """
    Test the setup method when running on Windows
    """
    # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
    mocked_is_macosx.return_value = False
    mocked_is_win.return_value = True
    mock_settings.value.return_value = False
    mocked_qframe = MagicMock()
    mocked_qframe.winId.return_value = 2
    MockedQtWidgets.QFrame.NoFrame = 1
    MockedQtWidgets.QFrame.return_value = mocked_qframe
    mocked_media_player_new = MagicMock()
    mocked_instance = MagicMock()
    mocked_instance.media_player_new.return_value = mocked_media_player_new
    mocked_vlc = MagicMock()
    mocked_vlc.Instance.return_value = mocked_instance
    mocked_get_vlc.return_value = mocked_vlc
    mocked_output_display = MagicMock()
    mocked_controller = MagicMock()
    mocked_controller.is_live = True
    mocked_output_display.size.return_value = (10, 10)
    vlc_player = VlcPlayer(None)

    # WHEN: setup() is run
    vlc_player.setup(mocked_output_display, mocked_controller, True)

    # THEN: set_hwnd should be called
    mocked_media_player_new.set_hwnd.assert_called_with(2)
Example #7
0
def test_setup_has_audio(MockedQtWidgets, mocked_get_vlc, mocked_is_macosx,
                         mocked_is_win, mock_settings):
    """
    Test the setup method when has_audio is True
    """
    # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
    mocked_is_macosx.return_value = False
    mocked_is_win.return_value = False
    mock_settings.value.return_value = ''
    mocked_qframe = MagicMock()
    mocked_qframe.winId.return_value = 2
    MockedQtWidgets.QFrame.NoFrame = 1
    MockedQtWidgets.QFrame.return_value = mocked_qframe
    mocked_media_player_new = MagicMock()
    mocked_instance = MagicMock()
    mocked_instance.media_player_new.return_value = mocked_media_player_new
    mocked_vlc = MagicMock()
    mocked_vlc.Instance.return_value = mocked_instance
    mocked_get_vlc.return_value = mocked_vlc
    mocked_output_display = MagicMock()
    mocked_controller = MagicMock()
    mocked_controller.is_live = True
    mocked_output_display.size.return_value = (10, 10)
    vlc_player = VlcPlayer(None)

    # WHEN: setup() is run
    vlc_player.setup(mocked_output_display, mocked_controller, True)

    # THEN: The VLC instance should be created with the correct options
    mocked_vlc.Instance.assert_called_with('--no-video-title-show ')
Example #8
0
    def load_test(self, mocked_normcase, mocked_get_vlc):
        """
        Test loading a video into VLC
        """
        # GIVEN: A mocked out get_vlc() method
        media_path = '/path/to/media.mp4'
        mocked_normcase.side_effect = lambda x: x
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.volume = 100
        mocked_controller.media_info.media_type = MediaType.Video
        mocked_controller.media_info.file_info.absoluteFilePath.return_value = media_path
        mocked_vlc_media = MagicMock()
        mocked_media = MagicMock()
        mocked_media.get_duration.return_value = 10000
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_instance.media_new_path.return_value = mocked_vlc_media
        mocked_display.vlc_media_player.get_media.return_value = mocked_media
        vlc_player = VlcPlayer(None)

        # WHEN: A video is loaded into VLC
        with patch.object(vlc_player, 'volume') as mocked_volume:
            result = vlc_player.load(mocked_display)

        # THEN: The video should be loaded
        mocked_normcase.assert_called_with(media_path)
        mocked_display.vlc_instance.media_new_path.assert_called_with(media_path)
        self.assertEqual(mocked_vlc_media, mocked_display.vlc_media)
        mocked_display.vlc_media_player.set_media.assert_called_with(mocked_vlc_media)
        mocked_vlc_media.parse.assert_called_with()
        mocked_volume.assert_called_with(mocked_display, 100)
        self.assertEqual(10, mocked_controller.media_info.length)
        self.assertTrue(result)
Example #9
0
    def setup_osx_test(self, MockedSettings, MockedQtGui, mocked_get_vlc, mocked_is_macosx, mocked_is_win):
        """
        Test the setup method when running on OS X
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = True
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = False
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtGui.QFrame.NoFrame = 1
        MockedQtGui.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: set_nsobject should be called
        mocked_media_player_new.set_nsobject.assert_called_with(2)
Example #10
0
def test_load(mocked_normcase, mocked_get_vlc):
    """
    Test loading a video into VLC
    """
    # GIVEN: A mocked out get_vlc() method
    media_path = '/path/to/media.mp4'
    mocked_normcase.side_effect = lambda x: x
    mocked_vlc = MagicMock()
    mocked_get_vlc.return_value = mocked_vlc
    mocked_display = MagicMock()
    mocked_controller = MagicMock()
    mocked_controller.media_info.volume = 100
    mocked_controller.media_info.media_type = MediaType.Video
    mocked_controller.media_info.file_info.absoluteFilePath.return_value = media_path
    mocked_vlc_media = MagicMock()
    mocked_media = MagicMock()
    mocked_media.get_duration.return_value = 10000
    mocked_controller.vlc_instance.media_new_path.return_value = mocked_vlc_media
    mocked_controller.vlc_media_player.get_media.return_value = mocked_media
    vlc_player = VlcPlayer(None)

    # WHEN: A video is loaded into VLC
    with patch.object(vlc_player, 'volume') as mocked_volume:
        result = vlc_player.load(mocked_controller, mocked_display, media_path)

    # THEN: The video should be loaded
    mocked_normcase.assert_called_with(media_path)
    mocked_controller.vlc_instance.media_new_path.assert_called_with(
        media_path)
    assert mocked_vlc_media == mocked_controller.vlc_media
    mocked_controller.vlc_media_player.set_media.assert_called_with(
        mocked_vlc_media)
    mocked_vlc_media.parse.assert_called_with()
    mocked_volume.assert_called_with(mocked_controller, 100)
    assert result is True
Example #11
0
    def play_media_wait_state_not_playing_test(self, mocked_get_vlc, mocked_threading):
        """
        Test the play() method when media_wait_state() returns False
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        vlc_player = VlcPlayer(None)
        vlc_player.state = MediaState.Paused

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = False
            result = vlc_player.play(mocked_display)

        # THEN: A thread should be started, but the method should return False
        mocked_thread.start.assert_called_with()
        self.assertFalse(result)
Example #12
0
    def test_setup_visible_mouse(self, MockedSettings, MockedQtWidgets,
                                 mocked_get_vlc, mocked_is_macosx,
                                 mocked_is_win):
        """
        Test the setup method when Settings().value("hide mouse") is False
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = False
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = False
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtWidgets.QFrame.NoFrame = 1
        MockedQtWidgets.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: The VLC instance should be created with the correct options
        mocked_vlc.Instance.assert_called_with(
            '--no-video-title-show --no-audio --no-video-title-show')
Example #13
0
    def test_setup_osx(self, MockedSettings, MockedQtWidgets, mocked_get_vlc,
                       mocked_is_macosx, mocked_is_win):
        """
        Test the setup method when running on OS X
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = True
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = False
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtWidgets.QFrame.NoFrame = 1
        MockedQtWidgets.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: set_nsobject should be called
        mocked_media_player_new.set_nsobject.assert_called_with(2)
Example #14
0
def test_check_available(mocked_get_vlc):
    """
    Check that when the "vlc" module is available, then VLC is set as available
    """
    # GIVEN: A mocked out get_vlc() method and a VlcPlayer instance
    mocked_get_vlc.return_value = MagicMock()
    vlc_player = VlcPlayer(None)

    # WHEN: vlc
    is_available = vlc_player.check_available()

    # THEN: VLC should be available
    assert is_available is True
Example #15
0
    def check_not_available_test(self, mocked_get_vlc):
        """
        Check that when the "vlc" module is not available, then VLC is set as unavailable
        """
        # GIVEN: A mocked out get_vlc() method and a VlcPlayer instance
        mocked_get_vlc.return_value = None
        vlc_player = VlcPlayer(None)

        # WHEN: vlc
        is_available = vlc_player.check_available()

        # THEN: VLC should NOT be available
        self.assertFalse(is_available)
Example #16
0
    def test_check_available(self, mocked_get_vlc):
        """
        Check that when the "vlc" module is available, then VLC is set as available
        """
        # GIVEN: A mocked out get_vlc() method and a VlcPlayer instance
        mocked_get_vlc.return_value = MagicMock()
        vlc_player = VlcPlayer(None)

        # WHEN: vlc
        is_available = vlc_player.check_available()

        # THEN: VLC should be available
        self.assertTrue(is_available)
Example #17
0
    def test_check_not_available(self, mocked_get_vlc):
        """
        Check that when the "vlc" module is not available, then VLC is set as unavailable
        """
        # GIVEN: A mocked out get_vlc() method and a VlcPlayer instance
        mocked_get_vlc.return_value = None
        vlc_player = VlcPlayer(None)

        # WHEN: vlc
        is_available = vlc_player.check_available()

        # THEN: VLC should NOT be available
        self.assertFalse(is_available)
Example #18
0
    def test_volume_no_audio(self):
        """
        Test setting the volume when there's no audio
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        vlc_player = VlcPlayer(None)

        # WHEN: The volume is set
        vlc_player.volume(mocked_display, 10)

        # THEN: The volume should NOT have been set
        assert 0 == mocked_display.vlc_media_player.audio_set_volume.call_count
Example #19
0
    def set_visible_has_own_widget_test(self):
        """
        Test the set_visible() method when the player has its own widget
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)
        vlc_player.has_own_widget = True

        # WHEN: reset() is called
        vlc_player.set_visible(mocked_display, True)

        # THEN: The media should be stopped and invsibile
        mocked_display.vlc_widget.setVisible.assert_called_with(True)
Example #20
0
    def test_volume(self):
        """
        Test setting the volume
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.has_audio = True
        vlc_player = VlcPlayer(None)

        # WHEN: The volume is set
        vlc_player.volume(mocked_display, 10)

        # THEN: The volume should have been set
        mocked_display.vlc_media_player.audio_set_volume.assert_called_with(10)
Example #21
0
    def volume_no_audio_test(self):
        """
        Test setting the volume when there's no audio
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        vlc_player = VlcPlayer(None)

        # WHEN: The volume is set
        vlc_player.volume(mocked_display, 10)

        # THEN: The volume should NOT have been set
        self.assertEqual(0, mocked_display.vlc_media_player.audio_set_volume.call_count)
Example #22
0
    def volume_test(self):
        """
        Test setting the volume
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.has_audio = True
        vlc_player = VlcPlayer(None)

        # WHEN: The volume is set
        vlc_player.volume(mocked_display, 10)

        # THEN: The volume should have been set
        mocked_display.vlc_media_player.audio_set_volume.assert_called_with(10)
Example #23
0
    def test_set_visible_no_widget(self):
        """
        Test the set_visible() method when the player doesn't have a widget
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)
        vlc_player.has_own_widget = False

        # WHEN: reset() is called
        vlc_player.set_visible(mocked_display, True)

        # THEN: The media should be stopped and invsibile
        self.assertEqual(0, mocked_display.vlc_widget.setVisible.call_count)
Example #24
0
    def test_set_visible_has_own_widget(self):
        """
        Test the set_visible() method when the player has its own widget
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)
        vlc_player.has_own_widget = True

        # WHEN: reset() is called
        vlc_player.set_visible(mocked_display, True)

        # THEN: The media should be stopped and invsibile
        mocked_display.vlc_widget.setVisible.assert_called_with(True)
Example #25
0
    def set_visible_no_widget_test(self):
        """
        Test the set_visible() method when the player doesn't have a widget
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)
        vlc_player.has_own_widget = False

        # WHEN: reset() is called
        vlc_player.set_visible(mocked_display, True)

        # THEN: The media should be stopped and invsibile
        self.assertEqual(0, mocked_display.vlc_widget.setVisible.call_count)
Example #26
0
    def test_resize(self):
        """
        Test resizing the player
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: resize is called
        vlc_player.resize(mocked_display)

        # THEN: The right methods should have been called
        mocked_display.size.assert_called_with()
        mocked_display.vlc_widget.resize.assert_called_with((10, 10))
Example #27
0
    def get_info_test(self, mocked_translate):
        """
        Test that get_info() returns some information about the VLC player
        """
        # GIVEN: A VlcPlayer
        mocked_translate.side_effect = lambda *x: x[1]
        vlc_player = VlcPlayer(None)

        # WHEN: get_info() is run
        info = vlc_player.get_info()

        # THEN: The information should be correct
        self.assertEqual('VLC is an external player which supports a number of different formats.<br/> '
                         '<strong>Audio</strong><br/>' + str(AUDIO_EXT) + '<br/><strong>Video</strong><br/>' +
                         str(VIDEO_EXT) + '<br/>', info)
Example #28
0
    def test_get_info(self, mocked_translate):
        """
        Test that get_info() returns some information about the VLC player
        """
        # GIVEN: A VlcPlayer
        mocked_translate.side_effect = lambda *x: x[1]
        vlc_player = VlcPlayer(None)

        # WHEN: get_info() is run
        info = vlc_player.get_info()

        # THEN: The information should be correct
        assert 'VLC is an external player which supports a number of different formats.<br/> ' \
            '<strong>Audio</strong><br/>' + str(AUDIO_EXT) + '<br/><strong>Video</strong><br/>' + \
               str(VIDEO_EXT) + '<br/>' == info
Example #29
0
    def test_reset(self):
        """
        Test the reset() method
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)

        # WHEN: reset() is called
        vlc_player.reset(mocked_display)

        # THEN: The media should be stopped and invisible
        mocked_display.vlc_media_player.stop.assert_called_with()
        mocked_display.vlc_widget.setVisible.assert_called_with(False)
        self.assertEqual(MediaState.Off, vlc_player.get_live_state())
Example #30
0
    def resize_test(self):
        """
        Test resizing the player
        """
        # GIVEN: A display object and a VlcPlayer instance
        mocked_display = MagicMock()
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: resize is called
        vlc_player.resize(mocked_display)

        # THEN: The right methods should have been called
        mocked_display.size.assert_called_with()
        mocked_display.vlc_widget.resize.assert_called_with((10, 10))
Example #31
0
    def reset_test(self):
        """
        Test the reset() method
        """
        # GIVEN: Some mocked out stuff
        mocked_display = MagicMock()
        vlc_player = VlcPlayer(None)

        # WHEN: reset() is called
        vlc_player.reset(mocked_display)

        # THEN: The media should be stopped and invsibile
        mocked_display.vlc_media_player.stop.assert_called_with()
        mocked_display.vlc_widget.setVisible.assert_called_with(False)
        self.assertEqual(MediaState.Off, vlc_player.state)
Example #32
0
def test_seek_unseekable_media():
    """
    Test seeking something that can't be seeked
    """
    # GIVEN: Unseekable media
    mocked_display = MagicMock()
    mocked_display.controller.media_info.media_type = MediaType.Audio
    mocked_display.vlc_media_player.is_seekable.return_value = False
    vlc_player = VlcPlayer(None)

    # WHEN: seek() is called
    vlc_player.seek(mocked_display, 100)

    # THEN: nothing should happen
    mocked_display.vlc_media_player.is_seekable.assert_called_with()
    assert 0 == mocked_display.vlc_media_player.set_time.call_count
Example #33
0
def test_resize():
    """
    Test resizing the player
    """
    # GIVEN: A display object and a VlcPlayer instance
    mocked_controller = MagicMock()
    mocked_controller.preview_display.size.return_value = (10, 10)
    mocked_controller.is_live = False
    vlc_player = VlcPlayer(None)

    # WHEN: resize is called
    vlc_player.resize(mocked_controller)

    # THEN: The right methods should have been called
    mocked_controller.preview_display.size.assert_called_with()
    mocked_controller.vlc_widget.resize.assert_called_with((10, 10))
Example #34
0
    def seek_unseekable_media_test(self):
        """
        Test seeking something that can't be seeked
        """
        # GIVEN: Unseekable media
        mocked_display = MagicMock()
        mocked_display.controller.media_info.media_type = MediaType.Audio
        mocked_display.vlc_media_player.is_seekable.return_value = False
        vlc_player = VlcPlayer(None)

        # WHEN: seek() is called
        vlc_player.seek(mocked_display, 100)

        # THEN: nothing should happen
        mocked_display.vlc_media_player.is_seekable.assert_called_with()
        self.assertEqual(0, mocked_display.vlc_media_player.set_time.call_count)
Example #35
0
    def test_seek_seekable_media(self):
        """
        Test seeking something that is seekable, but not a DVD
        """
        # GIVEN: Unseekable media
        mocked_display = MagicMock()
        mocked_display.controller.media_info.media_type = MediaType.Audio
        mocked_display.vlc_media_player.is_seekable.return_value = True
        vlc_player = VlcPlayer(None)

        # WHEN: seek() is called
        vlc_player.seek(mocked_display, 100)

        # THEN: nothing should happen
        mocked_display.vlc_media_player.is_seekable.assert_called_with()
        mocked_display.vlc_media_player.set_time.assert_called_with(100)
Example #36
0
    def seek_seekable_media_test(self):
        """
        Test seeking something that is seekable, but not a DVD
        """
        # GIVEN: Unseekable media
        mocked_display = MagicMock()
        mocked_display.controller.media_info.media_type = MediaType.Audio
        mocked_display.vlc_media_player.is_seekable.return_value = True
        vlc_player = VlcPlayer(None)

        # WHEN: seek() is called
        vlc_player.seek(mocked_display, 100)

        # THEN: nothing should happen
        mocked_display.vlc_media_player.is_seekable.assert_called_with()
        mocked_display.vlc_media_player.set_time.assert_called_with(100)
Example #37
0
    def test_setup(self, MockedSettings, MockedQtWidgets, mocked_get_vlc,
                   mocked_is_macosx, mocked_is_win):
        """
        Test the setup method
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = False
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = True
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtWidgets.QFrame.NoFrame = 1
        MockedQtWidgets.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: The VLC widget should be set up correctly
        self.assertEqual(mocked_display.vlc_widget, mocked_qframe)
        mocked_qframe.setFrameStyle.assert_called_with(1)
        mocked_settings.value.assert_called_with('advanced/hide mouse')
        mocked_vlc.Instance.assert_called_with(
            '--no-video-title-show --no-audio --no-video-title-show '
            '--mouse-hide-timeout=0')
        self.assertEqual(mocked_display.vlc_instance, mocked_instance)
        mocked_instance.media_player_new.assert_called_with()
        self.assertEqual(mocked_display.vlc_media_player,
                         mocked_media_player_new)
        mocked_display.size.assert_called_with()
        mocked_qframe.resize.assert_called_with((10, 10))
        mocked_qframe.raise_.assert_called_with()
        mocked_qframe.hide.assert_called_with()
        mocked_media_player_new.set_xwindow.assert_called_with(2)
        self.assertTrue(vlc_player.has_own_widget)
Example #38
0
def test_load_audio_cd_no_tracks(mocked_normcase, mocked_get_vlc,
                                 mocked_is_win):
    """
    Test loading an audio CD that has no tracks into VLC
    """
    # GIVEN: A mocked out get_vlc() method
    mocked_is_win.return_value = False
    media_path = '/dev/sr0'
    mocked_normcase.side_effect = lambda x: x
    mocked_vlc = MagicMock()
    mocked_get_vlc.return_value = mocked_vlc
    mocked_display = MagicMock()
    mocked_controller = MagicMock()
    mocked_controller.media_info.volume = 100
    mocked_controller.media_info.media_type = MediaType.CD
    mocked_controller.media_info.file_info.absoluteFilePath.return_value = media_path
    mocked_controller.media_info.title_track = 1
    mocked_vlc_media = MagicMock()
    mocked_vlc_media_player = MagicMock()
    mocked_controller.vlc_media = mocked_vlc_media
    mocked_controller.vlc_media_player = mocked_vlc_media_player
    mocked_media = MagicMock()
    mocked_media.get_duration.return_value = 10000
    mocked_controller.vlc_instance.media_new_location.return_value = mocked_vlc_media
    mocked_controller.vlc_media_player.get_media.return_value = mocked_media
    mocked_subitems = MagicMock()
    mocked_subitems.count.return_value = 0
    mocked_subitems.item_at_index.return_value = mocked_vlc_media
    mocked_vlc_media.subitems.return_value = mocked_subitems
    vlc_player = VlcPlayer(None)

    # WHEN: An audio CD is loaded into VLC
    with patch.object(vlc_player,
                      'volume'), patch.object(vlc_player, 'media_state_wait'):
        result = vlc_player.load(mocked_controller, mocked_display, media_path)

    # THEN: The video should be loaded
    mocked_normcase.assert_called_with(media_path)
    mocked_controller.vlc_instance.media_new_location.assert_called_with(
        'cdda://' + media_path)
    assert mocked_vlc_media == mocked_controller.vlc_media
    assert 0 == mocked_subitems.item_at_index.call_count
    mocked_controller.vlc_media_player.set_media.assert_called_with(
        mocked_vlc_media)
    assert 0 == mocked_vlc_media.parse.call_count
    assert result is False
Example #39
0
    def test_seek_dvd(self):
        """
        Test seeking a DVD
        """
        # GIVEN: Unseekable media
        mocked_display = MagicMock()
        mocked_display.controller.media_info.media_type = MediaType.DVD
        mocked_display.vlc_media_player.is_seekable.return_value = True
        mocked_display.controller.media_info.start_time = 3
        vlc_player = VlcPlayer(None)

        # WHEN: seek() is called
        vlc_player.seek(mocked_display, 2000)

        # THEN: nothing should happen
        mocked_display.vlc_media_player.is_seekable.assert_called_with()
        mocked_display.vlc_media_player.set_time.assert_called_with(5000)
Example #40
0
    def seek_dvd_test(self):
        """
        Test seeking a DVD
        """
        # GIVEN: Unseekable media
        mocked_display = MagicMock()
        mocked_display.controller.media_info.media_type = MediaType.DVD
        mocked_display.vlc_media_player.is_seekable.return_value = True
        mocked_display.controller.media_info.start_time = 3
        vlc_player = VlcPlayer(None)

        # WHEN: seek() is called
        vlc_player.seek(mocked_display, 2000)

        # THEN: nothing should happen
        mocked_display.vlc_media_player.is_seekable.assert_called_with()
        mocked_display.vlc_media_player.set_time.assert_called_with(5000)
Example #41
0
    def load_audio_cd_on_windows_test(self, mocked_normcase, mocked_get_vlc,
                                      mocked_is_win):
        """
        Test loading an audio CD into VLC on Windows
        """
        # GIVEN: A mocked out get_vlc() method
        mocked_is_win.return_value = True
        media_path = '/dev/sr0'
        mocked_normcase.side_effect = lambda x: x
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.volume = 100
        mocked_controller.media_info.media_type = MediaType.CD
        mocked_controller.media_info.file_info.absoluteFilePath.return_value = media_path
        mocked_controller.media_info.title_track = 1
        mocked_vlc_media = MagicMock()
        mocked_media = MagicMock()
        mocked_media.get_duration.return_value = 10000
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_instance.media_new_location.return_value = mocked_vlc_media
        mocked_display.vlc_media_player.get_media.return_value = mocked_media
        mocked_subitems = MagicMock()
        mocked_subitems.count.return_value = 1
        mocked_subitems.item_at_index.return_value = mocked_vlc_media
        mocked_vlc_media.subitems.return_value = mocked_subitems
        vlc_player = VlcPlayer(None)

        # WHEN: An audio CD is loaded into VLC
        with patch.object(vlc_player, 'volume') as mocked_volume, \
                patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait:
            result = vlc_player.load(mocked_display)

        # THEN: The video should be loaded
        mocked_normcase.assert_called_with(media_path)
        mocked_display.vlc_instance.media_new_location.assert_called_with(
            'cdda:///' + media_path)
        self.assertEqual(mocked_vlc_media, mocked_display.vlc_media)
        mocked_display.vlc_media_player.set_media.assert_called_with(
            mocked_vlc_media)
        mocked_vlc_media.parse.assert_called_with()
        mocked_volume.assert_called_with(mocked_display, 100)
        self.assertEqual(10, mocked_controller.media_info.length)
        self.assertTrue(result)
Example #42
0
    def pause_not_playing_test(self, mocked_get_vlc):
        """
        Test the pause method when the player is not playing
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Playing = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 2
        vlc_player = VlcPlayer(None)

        # WHEN: The media is paused
        vlc_player.pause(mocked_display)

        # THEN: The pause method should exit early
        mocked_display.vlc_media.get_state.assert_called_with()
        self.assertEqual(0, mocked_display.vlc_media_player.pause.call_count)
Example #43
0
    def test_pause_not_playing(self, mocked_get_vlc):
        """
        Test the pause method when the player is not playing
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Playing = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 2
        vlc_player = VlcPlayer(None)

        # WHEN: The media is paused
        vlc_player.pause(mocked_display)

        # THEN: The pause method should exit early
        mocked_display.vlc_media.get_state.assert_called_with()
        self.assertEqual(0, mocked_display.vlc_media_player.pause.call_count)
Example #44
0
    def setup_test(self, MockedSettings, MockedQtGui, mocked_get_vlc, mocked_is_macosx, mocked_is_win):
        """
        Test the setup method
        """
        # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
        mocked_is_macosx.return_value = False
        mocked_is_win.return_value = False
        mocked_settings = MagicMock()
        mocked_settings.value.return_value = True
        MockedSettings.return_value = mocked_settings
        mocked_qframe = MagicMock()
        mocked_qframe.winId.return_value = 2
        MockedQtGui.QFrame.NoFrame = 1
        MockedQtGui.QFrame.return_value = mocked_qframe
        mocked_media_player_new = MagicMock()
        mocked_instance = MagicMock()
        mocked_instance.media_player_new.return_value = mocked_media_player_new
        mocked_vlc = MagicMock()
        mocked_vlc.Instance.return_value = mocked_instance
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.has_audio = False
        mocked_display.controller.is_live = True
        mocked_display.size.return_value = (10, 10)
        vlc_player = VlcPlayer(None)

        # WHEN: setup() is run
        vlc_player.setup(mocked_display)

        # THEN: The VLC widget should be set up correctly
        self.assertEqual(mocked_display.vlc_widget, mocked_qframe)
        mocked_qframe.setFrameStyle.assert_called_with(1)
        mocked_settings.value.assert_called_with('advanced/hide mouse')
        mocked_vlc.Instance.assert_called_with('--no-video-title-show --no-audio --no-video-title-show '
                                               '--mouse-hide-timeout=0')
        self.assertEqual(mocked_display.vlc_instance, mocked_instance)
        mocked_instance.media_player_new.assert_called_with()
        self.assertEqual(mocked_display.vlc_media_player, mocked_media_player_new)
        mocked_display.size.assert_called_with()
        mocked_qframe.resize.assert_called_with((10, 10))
        mocked_qframe.raise_.assert_called_with()
        mocked_qframe.hide.assert_called_with()
        mocked_media_player_new.set_xwindow.assert_called_with(2)
        self.assertTrue(vlc_player.has_own_widget)
Example #45
0
    def stop_test(self, mocked_threading):
        """
        Test stopping the current item
        """
        # GIVEN: A display object and a VlcPlayer instance and some mocked threads
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_stop = MagicMock()
        mocked_display = MagicMock()
        mocked_display.vlc_media_player.stop = mocked_stop
        vlc_player = VlcPlayer(None)

        # WHEN: stop is called
        vlc_player.stop(mocked_display)

        # THEN: A thread should have been started to stop VLC
        mocked_threading.Thread.assert_called_with(target=mocked_stop)
        mocked_thread.start.assert_called_with()
        self.assertEqual(MediaState.Stopped, vlc_player.state)
Example #46
0
    def test_stop(self, mocked_threading):
        """
        Test stopping the current item
        """
        # GIVEN: A display object and a VlcPlayer instance and some mocked threads
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_stop = MagicMock()
        mocked_display = MagicMock()
        mocked_display.vlc_media_player.stop = mocked_stop
        vlc_player = VlcPlayer(None)

        # WHEN: stop is called
        vlc_player.stop(mocked_display)

        # THEN: A thread should have been started to stop VLC
        mocked_threading.Thread.assert_called_with(target=mocked_stop)
        mocked_thread.start.assert_called_with()
        self.assertEqual(MediaState.Stopped, vlc_player.get_live_state())
Example #47
0
def test_setup(MockedQtWidgets, mocked_get_vlc, mocked_is_macosx,
               mocked_is_win, mock_settings):
    """
    Test the setup method
    """
    # GIVEN: A bunch of mocked out stuff and a VlcPlayer object
    mocked_is_macosx.return_value = False
    mocked_is_win.return_value = False
    mock_settings.value.return_value = ''
    mocked_qframe = MagicMock()
    mocked_qframe.winId.return_value = 2
    MockedQtWidgets.QFrame.NoFrame = 1
    MockedQtWidgets.QFrame.return_value = mocked_qframe
    mocked_media_player_new = MagicMock()
    mocked_instance = MagicMock()
    mocked_instance.media_player_new.return_value = mocked_media_player_new
    mocked_vlc = MagicMock()
    mocked_vlc.Instance.return_value = mocked_instance
    mocked_get_vlc.return_value = mocked_vlc
    mocked_output_display = MagicMock()
    mocked_controller = MagicMock()
    mocked_controller.is_live = True
    mocked_output_display.size.return_value = (10, 10)
    vlc_player = VlcPlayer(None)

    # WHEN: setup() is run
    vlc_player.setup(mocked_output_display, mocked_controller, True)

    # THEN: The VLC widget should be set up correctly
    assert mocked_output_display.vlc_widget == mocked_qframe
    mocked_qframe.setFrameStyle.assert_called_with(1)
    mock_settings.value.assert_any_call('advanced/hide mouse')
    mock_settings.value.assert_any_call('media/vlc arguments')
    mocked_vlc.Instance.assert_called_with('--no-video-title-show ')
    assert mocked_output_display.vlc_instance == mocked_instance
    mocked_instance.media_player_new.assert_called_with()
    assert mocked_output_display.vlc_media_player == mocked_media_player_new
    mocked_output_display.size.assert_called_with()
    mocked_qframe.resize.assert_called_with((10, 10))
    mocked_qframe.raise_.assert_called_with()
    mocked_qframe.hide.assert_called_with()
    mocked_media_player_new.set_xwindow.assert_called_with(2)
    assert vlc_player.has_own_widget is True
Example #48
0
    def load_audio_cd_on_windows_test(self, mocked_normcase, mocked_get_vlc, mocked_is_win):
        """
        Test loading an audio CD into VLC on Windows
        """
        # GIVEN: A mocked out get_vlc() method
        mocked_is_win.return_value = True
        media_path = '/dev/sr0'
        mocked_normcase.side_effect = lambda x: x
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.volume = 100
        mocked_controller.media_info.media_type = MediaType.CD
        mocked_controller.media_info.file_info.absoluteFilePath.return_value = media_path
        mocked_controller.media_info.title_track = 1
        mocked_vlc_media = MagicMock()
        mocked_media = MagicMock()
        mocked_media.get_duration.return_value = 10000
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_instance.media_new_location.return_value = mocked_vlc_media
        mocked_display.vlc_media_player.get_media.return_value = mocked_media
        mocked_subitems = MagicMock()
        mocked_subitems.count.return_value = 1
        mocked_subitems.item_at_index.return_value = mocked_vlc_media
        mocked_vlc_media.subitems.return_value = mocked_subitems
        vlc_player = VlcPlayer(None)

        # WHEN: An audio CD is loaded into VLC
        with patch.object(vlc_player, 'volume') as mocked_volume, \
                patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait:
            result = vlc_player.load(mocked_display)

        # THEN: The video should be loaded
        mocked_normcase.assert_called_with(media_path)
        mocked_display.vlc_instance.media_new_location.assert_called_with('cdda:///' + media_path)
        self.assertEqual(mocked_vlc_media, mocked_display.vlc_media)
        mocked_display.vlc_media_player.set_media.assert_called_with(mocked_vlc_media)
        mocked_vlc_media.parse.assert_called_with()
        mocked_volume.assert_called_with(mocked_display, 100)
        self.assertEqual(10, mocked_controller.media_info.length)
        self.assertTrue(result)
Example #49
0
    def media_state_wait_error_test(self, mocked_get_vlc):
        """
        Check that getting an error when waiting for a state change returns False
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Error = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 1
        Registry.create()
        mocked_application = MagicMock()
        Registry().register('application', mocked_application)
        vlc_player = VlcPlayer(None)

        # WHEN: media_state_wait() is called
        result = vlc_player.media_state_wait(mocked_display, 2)

        # THEN: The results should be True
        self.assertFalse(result)
Example #50
0
    def test_media_state_wait_error(self, mocked_get_vlc):
        """
        Check that getting an error when waiting for a state change returns False
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Error = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 1
        Registry.create()
        mocked_application = MagicMock()
        Registry().register('application', mocked_application)
        vlc_player = VlcPlayer(None)

        # WHEN: media_state_wait() is called
        result = vlc_player.media_state_wait(mocked_display, 2)

        # THEN: The results should be True
        self.assertFalse(result)
Example #51
0
    def play_dvd_test(self, mocked_get_vlc, mocked_threading):
        """
        Test the play() method with a DVD
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_controller.media_info.end_time = 50
        mocked_controller.media_info.media_type = MediaType.DVD
        mocked_controller.media_info.volume = 100
        mocked_controller.media_info.title_track = 1
        mocked_controller.media_info.audio_track = 1
        mocked_controller.media_info.subtitle_track = 1
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        vlc_player = VlcPlayer(None)
        vlc_player.state = MediaState.Paused

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = True
            result = vlc_player.play(mocked_display)

        # THEN: A bunch of things should happen to play the media
        mocked_thread.start.assert_called_with()
        mocked_display.vlc_media_player.set_title.assert_called_with(1)
        mocked_display.vlc_media_player.play.assert_called_with()
        mocked_display.vlc_media_player.audio_set_track.assert_called_with(1)
        mocked_display.vlc_media_player.video_set_spu.assert_called_with(1)
        self.assertEqual(50, mocked_controller.media_info.length)
        mocked_volume.assert_called_with(mocked_display, 100)
        mocked_controller.seek_slider.setMaximum.assert_called_with(50000)
        self.assertEqual(MediaState.Playing, vlc_player.state)
        mocked_display.vlc_widget.raise_.assert_called_with()
        self.assertTrue(result,
                        'The value returned from play() should be True')
Example #52
0
 def bootstrap_initialise(self):
     """
     Check to see if we have any media Player's available.
     """
     self.setup()
     self.vlc_player = VlcPlayer(self)
     State().add_service('mediacontroller', 0)
     State().add_service('media_live', 0)
     has_vlc = get_vlc()
     if has_vlc and pymediainfo_available:
         State().update_pre_conditions('mediacontroller', True)
         State().update_pre_conditions('media_live', True)
     else:
         if hasattr(self.main_window,
                    'splash') and self.main_window.splash.isVisible():
             self.main_window.splash.hide()
         generic_message = translate(
             'OpenLP.MediaController',
             'OpenLP requires the following libraries in order to show videos and other '
             'media, but they are not installed. Please install these libraries to enable '
             'media playback in OpenLP.')
         fedora_rpmfusion = translate(
             'OpenLP.MediaController',
             'To install these libraries, you will need to enable the RPMFusion '
             'repository: https://rpmfusion.org/')
         if is_macosx():
             message = translate(
                 'OpenLP.MediaController',
                 'macOS is missing VLC. Please download and install from the VLC web site: '
                 'https://www.videolan.org/vlc/')
         else:
             packages = []
             if not has_vlc:
                 packages.append('python3-vlc')
             if not pymediainfo_available:
                 packages.append('python3-pymediainfo')
             message = generic_message + '\n\n' + ', '.join(packages)
             if not has_vlc and is_linux(distro='fedora'):
                 message += '\n\n' + fedora_rpmfusion
         State().missing_text('media_live', message)
     return True
Example #53
0
    def test_play(self, mocked_get_vlc, mocked_threading):
        """
        Test the play() method
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_controller.media_info.media_type = MediaType.Video
        mocked_controller.media_info.volume = 100
        mocked_media = MagicMock()
        mocked_media.get_duration.return_value = 50000
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        mocked_display.vlc_media_player.get_media.return_value = mocked_media
        vlc_player = VlcPlayer(None)
        vlc_player.set_state(MediaState.Paused, mocked_display)

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = True
            result = vlc_player.play(mocked_display)

        # THEN: A bunch of things should happen to play the media
        mocked_thread.start.assert_called_with()
        mocked_volume.assert_called_with(mocked_display, 100)
        self.assertEqual(MediaState.Playing, vlc_player.get_live_state())
        mocked_display.vlc_widget.raise_.assert_called_with()
        self.assertTrue(result,
                        'The value returned from play() should be True')
Example #54
0
    def media_state_wait_times_out_test(self, mocked_get_vlc):
        """
        Check that waiting for a state returns False when it times out after 60 seconds
        """
        # GIVEN: A mocked out get_vlc method
        timeout = MockDateTime.return_values[0] + timedelta(seconds=61)
        MockDateTime.return_values.append(timeout)
        mocked_vlc = MagicMock()
        mocked_vlc.State.Error = 1
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 2
        Registry.create()
        mocked_application = MagicMock()
        Registry().register('application', mocked_application)
        vlc_player = VlcPlayer(None)

        # WHEN: media_state_wait() is called
        result = vlc_player.media_state_wait(mocked_display, 3)

        # THEN: The results should be True
        self.assertFalse(result)
Example #55
0
    def test_play_dvd(self, mocked_get_vlc, mocked_threading):
        """
        Test the play() method with a DVD
        """
        # GIVEN: A bunch of mocked out things
        mocked_thread = MagicMock()
        mocked_threading.Thread.return_value = mocked_thread
        mocked_vlc = MagicMock()
        mocked_get_vlc.return_value = mocked_vlc
        mocked_controller = MagicMock()
        mocked_controller.media_info.start_time = 0
        mocked_controller.media_info.end_time = 50
        mocked_controller.media_info.media_type = MediaType.DVD
        mocked_controller.media_info.volume = 100
        mocked_controller.media_info.title_track = 1
        mocked_controller.media_info.audio_track = 1
        mocked_controller.media_info.subtitle_track = 1
        mocked_display = MagicMock()
        mocked_display.controller = mocked_controller
        vlc_player = VlcPlayer(None)
        vlc_player.set_state(MediaState.Paused, mocked_display)

        # WHEN: play() is called
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait, \
                patch.object(vlc_player, 'volume') as mocked_volume:
            mocked_media_state_wait.return_value = True
            result = vlc_player.play(mocked_display)

        # THEN: A bunch of things should happen to play the media
        mocked_thread.start.assert_called_with()
        mocked_display.vlc_media_player.set_title.assert_called_with(1)
        mocked_display.vlc_media_player.play.assert_called_with()
        mocked_display.vlc_media_player.audio_set_track.assert_called_with(1)
        mocked_display.vlc_media_player.video_set_spu.assert_called_with(1)
        mocked_volume.assert_called_with(mocked_display, 100)
        self.assertEqual(MediaState.Playing, vlc_player.get_live_state())
        mocked_display.vlc_widget.raise_.assert_called_with()
        self.assertTrue(result, 'The value returned from play() should be True')
Example #56
0
    def pause_fail_test(self, mocked_get_vlc):
        """
        Test the pause method when the player fails to pause the media
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Playing = 1
        mocked_vlc.State.Paused = 2
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 1
        vlc_player = VlcPlayer(None)

        # WHEN: The media is paused
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait:
            mocked_media_state_wait.return_value = False
            vlc_player.pause(mocked_display)

        # THEN: The pause method should exit early
        mocked_display.vlc_media.get_state.assert_called_with()
        mocked_display.vlc_media_player.pause.assert_called_with()
        mocked_media_state_wait.assert_called_with(mocked_display, 2)
        self.assertNotEqual(MediaState.Paused, vlc_player.state)
Example #57
0
    def test_pause(self, mocked_get_vlc):
        """
        Test that the pause method works correctly
        """
        # GIVEN: A mocked out get_vlc method
        mocked_vlc = MagicMock()
        mocked_vlc.State.Playing = 1
        mocked_vlc.State.Paused = 2
        mocked_get_vlc.return_value = mocked_vlc
        mocked_display = MagicMock()
        mocked_display.vlc_media.get_state.return_value = 1
        vlc_player = VlcPlayer(None)

        # WHEN: The media is paused
        with patch.object(vlc_player, 'media_state_wait') as mocked_media_state_wait:
            mocked_media_state_wait.return_value = True
            vlc_player.pause(mocked_display)

        # THEN: The pause method should exit early
        mocked_display.vlc_media.get_state.assert_called_with()
        mocked_display.vlc_media_player.pause.assert_called_with()
        mocked_media_state_wait.assert_called_with(mocked_display, 2)
        self.assertEqual(MediaState.Paused, vlc_player.get_live_state())