openlp/openlp/core/test/test_render_theme.py

261 lines
8.8 KiB
Python

from test_render import TestRender_base, whoami
import sys
import os
mypath=os.path.split(os.path.abspath(__file__))[0]
sys.path.insert(0,(os.path.join(mypath, '..', '..','..')))
from openlp.theme import Theme
from openlp.core import Renderer
from PyQt4 import QtGui, QtCore
class TestRenderTheme(TestRender_base):
# {{{ Basics
def __init__(self):
TestRender_base.__init__(self)
def setup_method(self, method):
TestRender_base.setup_method(self, method)
print "Theme setup", method
# print "setup theme"
self.r.set_theme(Theme()) # set "blank" theme
self.r.set_text_rectangle(QtCore.QRect(0,0, self.size.width(), self.size.height()))
words="""How sweet the name of Jesus sounds
In a believer's ear!
It soothes his sorrows, heals his wounds,
And drives away his fear.
"""
verses=self.r.set_words_openlp(words)
# usually the same
self.expected_answer= QtCore.QRect(0, 0, 559, 342)
self.msg=None
self.bmpname="Not set a bitmap yet"
print "------------- setup done --------------"
def teardown_method(self, method):
print "============ teardown =============", method, self.bmpname
if self.bmpname != None:
assert (self.compare_DC_to_file(self.bmpname))
if self.expected_answer != None: # result=None => No result to check
assert self.expected_answer==self.answer
print "============ teardown done ========="
def compare_DC_to_file(self, name):
"""writes DC out to a bitmap file and then compares it with a golden one
returns True if OK, False if not (so you can assert on it)
"""
print "--- compare DC to file --- ", name
p=self.frame.GetPixmap()
im=self.write_to_file(p, name)
print "Compare"
goldenfilename=os.path.join("golden_bitmaps",name+".bmp")
if os.path.exists(goldenfilename):
goldenim=QtGui.QImage(goldenfilename)
else:
print "File", goldenfilename, "not found"
return False
if (goldenim == im):
print name, "Images match"
return True
else:
print name, goldenfilename, "Images don't match"
return False
def test_theme_basic(self):
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
print self.answer, self.expected_answer, self.answer==self.expected_answer
# self.msg=self.bmpname
# }}}
# {{{ Gradients
def test_gradient_h(self):
# normally we wouldn't hack with these directly!
self.r._theme.BackgroundType = 1
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0);
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0);
self.r._theme.BackgroundParameter3 = 1
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
def test_gradient_v(self):
# normally we wouldn't hack with these directly!
self.r._theme.BackgroundType = 1
self.r._theme.BackgroundParameter1 = QtGui.QColor(255,0,0);
self.r._theme.BackgroundParameter2 = QtGui.QColor(255,255,0);
self.r._theme.BackgroundParameter3 = 0
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
# }}}
# {{{ backgrounds
def test_bg_stretch_y(self):
t=Theme()
t.BackgroundType = 2
t.BackgroundParameter1 = os.path.join('data_for_tests', "snowsmall.jpg");
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
t.BackgroundParameter3 = 0
t.Name="stretch y"
print t
print "set theme"
self.r.set_theme(t)
print "render"
self.answer=self.r.render_screen(0)
print "whoami"
self.bmpname=whoami()
print "fone"
def test_bg_shrink_y(self):
t=Theme()
t.BackgroundType = 2
t.BackgroundParameter1 = os.path.join('data_for_tests', "snowbig.jpg");
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
t.BackgroundParameter3 = 0
t.Name="shrink y"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
def test_bg_stretch_x(self):
t=Theme()
t.BackgroundType = 2
t.BackgroundParameter1 = os.path.join('data_for_tests', "treessmall.jpg");
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
t.BackgroundParameter3 = 0
t.VerticalAlign = 2
t.Name="stretch x"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer= QtCore.QRect(0, 129, 559, 342)
self.bmpname=whoami()
def test_bg_shrink_x(self):
t=Theme()
t.BackgroundType = 2
t.BackgroundParameter1 = os.path.join('data_for_tests', "treesbig.jpg");
t.BackgroundParameter2 = QtGui.QColor(0,0,64);
t.BackgroundParameter3 = 0
t.VerticalAlign = 2
t.Name="shrink x"
self.r.set_theme(t)
self.expected_answer= QtCore.QRect(0, 129, 559, 342)
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
# }}}
# {{{ Vertical alignment
def test_theme_vertical_align_top(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 0
t.Name="valign top"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
def test_theme_vertical_align_bot(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 1
t.Name="valign bot"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer= QtCore.QRect(0, 257, 559, 342)
self.bmpname=whoami()
def test_theme_vertical_align_cen(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 2
t.Name="valign cen"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer= QtCore.QRect(0, 129, 559, 342)
self.bmpname=whoami()
# }}}
# {{{ Horzontal alignment
def test_theme_horizontal_align_left(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 0
t.HorizontalAlign = 0
t.Name="halign left"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
def test_theme_horizontal_align_right(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 0
t.HorizontalAlign = 1
t.Name="halign right"
self.r.set_theme(t)
self.expected_answer= QtCore.QRect(0, 0, 800, 342)
self.answer=self.r.render_screen(0)
self.bmpname=whoami()
def test_theme_horizontal_align_centre(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 0
t.HorizontalAlign = 2
t.Name="halign centre"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer= QtCore.QRect(0, 0, 679, 342)
self.bmpname=whoami()
def test_theme_horizontal_align_left_lyric(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.VerticalAlign = 0
t.HorizontalAlign = 0
t.WrapStyle=1
t.Name="halign left lyric"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer=QtCore.QRect(0, 0, 778, 342)
self.bmpname=whoami()
# }}}
# {{{ Shadows and outlines
def test_theme_shadow_outline(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,0);
t.Name="shadow/outline"
t.Shadow=1
t.Outline=1
t.ShadowColor=QtGui.QColor(64,128,0)
t.OutlineColor=QtGui.QColor(128,0,0)
self.r.set_debug(1)
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
hoffset=self.r._shadow_offset+2*(self.r._outline_offset)
voffset=hoffset * (len(self.r.words[0])+1)
self.expected_answer= QtCore.QRect(0, 0, 559+hoffset, 342+voffset)
self.bmpname=whoami()
# }}}
def test_theme_font(self):
t=Theme()
t.BackgroundType = 0
t.BackgroundParameter1 = QtGui.QColor(0,0,64);
t.Name="font"
t.FontName="Times New Roman"
self.r.set_theme(t)
self.answer=self.r.render_screen(0)
self.expected_answer= QtCore.QRect(0, 0, 499, 336)
self.bmpname=whoami()
if __name__=="__main__":
t=TestRenderTheme()
t.setup_class()
t.setup_method(None)
t.test_theme_font()
t.teardown_method(None)