Source code for openpyxl.styles.tests.test_fills

from __future__ import absolute_import
# Copyright (c) 2010-2017 openpyxl

import pytest

from openpyxl.styles.colors import BLACK, WHITE, Color
from openpyxl.xml.functions import tostring, fromstring

from openpyxl.tests.helper import compare_xml

@pytest.fixture
[docs]def GradientFill(): from openpyxl.styles.fills import GradientFill return GradientFill
[docs]class TestGradientFill:
[docs] def test_empty_ctor(self, GradientFill): gf = GradientFill() assert gf.type == 'linear' assert gf.degree == 0 assert gf.left == 0 assert gf.right == 0 assert gf.top == 0 assert gf.bottom == 0 assert gf.stop == []
[docs] def test_ctor(self, GradientFill): gf = GradientFill(degree=90, left=1, right=2, top=3, bottom=4) assert gf.degree == 90 assert gf.left == 1 assert gf.right == 2 assert gf.top == 3 assert gf.bottom == 4
@pytest.mark.parametrize("colors", [ [Color(BLACK), Color(WHITE)], [BLACK, WHITE], ] )
[docs] def test_sequence(self, GradientFill, colors): gf = GradientFill(stop=colors) assert gf.stop[0].rgb == BLACK assert gf.stop[1].rgb == WHITE
[docs] def test_dict_interface(self, GradientFill): gf = GradientFill(degree=90, left=1, right=2, top=3, bottom=4) assert dict(gf) == {'bottom': "4", 'degree': "90", 'left':"1", 'right': "2", 'top': "3", 'type': 'linear'}
[docs] def test_serialise(self, GradientFill): gf = GradientFill(degree=90, left=1, right=2, top=3, bottom=4, stop=[BLACK, WHITE]) xml = tostring(gf.to_tree()) expected = """ <fill> <gradientFill bottom="4" degree="90" left="1" right="2" top="3" type="linear"> <stop position="0"> <color rgb="00000000"></color> </stop> <stop position="1"> <color rgb="00FFFFFF"></color> </stop> </gradientFill> </fill> """ diff = compare_xml(xml, expected) assert diff is None, diff
[docs] def test_create(self, GradientFill): src = """ <fill> <gradientFill xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" degree="90"> <stop position="0"> <color theme="0"/> </stop> <stop position="1"> <color theme="4"/> </stop> </gradientFill> </fill> """ xml = fromstring(src) fill = GradientFill.from_tree(xml) assert fill.stop == [Color(theme=0), Color(theme=4)]
@pytest.fixture
[docs]def PatternFill(): from ..fills import PatternFill return PatternFill
[docs]class TestPatternFill:
[docs] def test_ctor(self, PatternFill): pf = PatternFill() assert pf.patternType is None assert pf.fgColor == Color() assert pf.bgColor == Color()
[docs] def test_dict_interface(self, PatternFill): pf = PatternFill(fill_type='solid') assert dict(pf) == {'patternType':'solid'}
[docs] def test_serialise(self, PatternFill): pf = PatternFill('solid', 'FF0000', 'FFFF00') xml = tostring(pf.to_tree()) expected = """ <fill> <patternFill patternType="solid"> <fgColor rgb="00FF0000"/> <bgColor rgb="00FFFF00"/> </patternFill> </fill> """ diff = compare_xml(xml, expected) assert diff is None, diff
@pytest.mark.parametrize("src, args", [ (""" <fill> <patternFill xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" patternType="solid"> <fgColor theme="0" tint="-0.14999847407452621"/> <bgColor indexed="64"/> </patternFill> </fill> """, dict(patternType='solid', start_color=Color(theme=0, tint=-0.14999847407452621), end_color=Color(indexed=64) ) ), (""" <fill> <patternFill xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" patternType="solid"> <fgColor theme="0"/> <bgColor indexed="64"/> </patternFill> </fill> """, dict(patternType='solid', start_color=Color(theme=0), end_color=Color(indexed=64) ) ), (""" <fill> <patternFill xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" patternType="solid"> <fgColor indexed="62"/> <bgColor indexed="64"/> </patternFill> </fill> """, dict(patternType='solid', start_color=Color(indexed=62), end_color=Color(indexed=64) ) ), ] )
[docs] def test_create(self, PatternFill, src, args): xml = fromstring(src) assert PatternFill.from_tree(xml) == PatternFill(**args)
[docs]def test_create_empty_fill(): from ..fills import Fill src = fromstring("<fill/>") assert Fill.from_tree(src) is None