Added test

This commit is contained in:
Tomas Groth 2014-04-03 22:22:10 +02:00
parent 0f0e09a282
commit 7ef62293f3

View File

@ -33,6 +33,7 @@ import os
import shutil import shutil
from unittest import TestCase, SkipTest from unittest import TestCase, SkipTest
from tempfile import mkdtemp from tempfile import mkdtemp
from PyQt4 import QtCore, QtGui
from openlp.plugins.presentations.lib.pdfcontroller import PdfController, PdfDocument from openlp.plugins.presentations.lib.pdfcontroller import PdfController, PdfDocument
from tests.functional import MagicMock from tests.functional import MagicMock
@ -45,6 +46,11 @@ __default_settings__ = {
'presentations/enable_pdf_program': False 'presentations/enable_pdf_program': False
} }
SCREEN = {
'primary': False,
'number': 1,
'size': QtCore.QRect(0, 0, 1024, 768)
}
class TestPdfController(TestCase, TestMixin): class TestPdfController(TestCase, TestMixin):
""" """
@ -56,7 +62,12 @@ class TestPdfController(TestCase, TestMixin):
""" """
self.get_application() self.get_application()
self.build_settings() self.build_settings()
ScreenList.create(self.app.desktop()) # Mocked out desktop object
self.desktop = MagicMock()
self.desktop.primaryScreen.return_value = SCREEN['primary']
self.desktop.screenCount.return_value = SCREEN['number']
self.desktop.screenGeometry.return_value = SCREEN['size']
self.screens = ScreenList.create(self.desktop)
Settings().extend_default_settings(__default_settings__) Settings().extend_default_settings(__default_settings__)
self.temp_folder = mkdtemp() self.temp_folder = mkdtemp()
self.thumbnail_folder = mkdtemp() self.thumbnail_folder = mkdtemp()
@ -67,12 +78,11 @@ class TestPdfController(TestCase, TestMixin):
""" """
Delete all the C++ objects at the end so that we don't have a segfault Delete all the C++ objects at the end so that we don't have a segfault
""" """
try: del self.screens
self.destroy_settings() self.destroy_settings()
shutil.rmtree(self.thumbnail_folder) shutil.rmtree(self.thumbnail_folder)
shutil.rmtree(self.temp_folder) shutil.rmtree(self.temp_folder)
except OSError:
pass
def constructor_test(self): def constructor_test(self):
""" """
@ -106,3 +116,30 @@ class TestPdfController(TestCase, TestMixin):
# THEN: The load should succeed and we should be able to get a pagecount # THEN: The load should succeed and we should be able to get a pagecount
self.assertTrue(loaded, 'The loading of the PDF should succeed.') self.assertTrue(loaded, 'The loading of the PDF should succeed.')
self.assertEqual(3, document.get_slide_count(), 'The pagecount of the PDF should be 3.') self.assertEqual(3, document.get_slide_count(), 'The pagecount of the PDF should be 3.')
def load_pdf_pictures_test(self):
"""
Test loading of a Pdf and check size of generate pictures
"""
# GIVEN: A Pdf-file
test_file = os.path.join(TEST_RESOURCES_PATH, 'presentations', 'pdf_test1.pdf')
# WHEN: The Pdf is loaded
controller = PdfController(plugin=self.mock_plugin)
if not controller.check_available():
raise SkipTest('Could not detect mudraw or ghostscript, so skipping PDF test')
controller.temp_folder = self.temp_folder
controller.thumbnail_folder = self.thumbnail_folder
document = PdfDocument(controller, test_file)
loaded = document.load_presentation()
# THEN: The load should succeed and pictures should be created and have been scales to fit the screen
self.assertTrue(loaded, 'The loading of the PDF should succeed.')
image = QtGui.QImage(os.path.join(self.temp_folder, 'pdf_test1.pdf', 'mainslide001.png'))
# Based on the converter used the resolution will differ a bit
if controller.gsbin:
self.assertEqual(760, image.height(), 'The height should be 760')
self.assertEqual(537, image.width(), 'The width should be 537')
else:
self.assertEqual(767, image.height(), 'The height should be 767')
self.assertEqual(543, image.width(), 'The width should be 543')