openlp/tests/functional/openlp_core_lib/test_screen.py

54 lines
1.6 KiB
Python

"""
Package to test the openlp.core.lib.screenlist package.
"""
import copy
from unittest import TestCase
from mock import MagicMock
from PyQt4 import QtGui, QtCore
from openlp.core.lib import ScreenList
class TestScreenList(TestCase):
def setUp(self):
"""
Set up the components need for all tests.
"""
self.application = QtGui.QApplication.instance()
self.screens = ScreenList.create(self.application.desktop())
def tearDown(self):
"""
"""
del self.application
def add_desktop_test(self):
"""
Test to check if new monitors are detected by OpenLP (= plugged in while OpenLP is running).
"""
# GIVEN: The screen list.
old_screens = copy.deepcopy(self.screens.screen_list)
screen = {
u'primary': False,
u'number': 1,
u'size': QtCore.QRect(0, 0, 1024, 768)
}
# Mock the attributes.
self.screens.desktop.primaryScreen = MagicMock(return_value=screen[u'primary'])
self.screens.desktop.screenCount = MagicMock(return_value=screen[u'number'] + 1)
self.screens.desktop.screenGeometry = MagicMock(return_value=screen[u'size'])
# WHEN: Add a new screen.
self.screens.screen_count_changed(len(old_screens))
# THEN: The screen should have been added.
new_screens = self.screens.screen_list
assert len(old_screens) + 1 == len(new_screens), u'The new_screens list should be bigger.'
# THEN: The screens should be identically.
assert screen == new_screens.pop(), u'The new screen should be identically to the screen defined above.'