1 """testcases for cssutils.css.CSSPageRule
2 """
3 __author__ = '$LastChangedBy: cthedot $'
4 __date__ = '$LastChangedDate: 2008-02-18 23:25:11 +0100 (Mo, 18 Feb 2008) $'
5 __version__ = '$LastChangedRevision: 1063 $'
6
7 import xml.dom
8 import test_cssrule
9 import cssutils
10
12
14 super(CSSPageRuleTestCase, self).setUp()
15 self.r = cssutils.css.CSSPageRule()
16 self.rRO = cssutils.css.CSSPageRule(readonly=True)
17 self.r_type = cssutils.css.CSSPageRule.PAGE_RULE
18 self.r_typeString = 'PAGE_RULE'
19
21 "CSSPageRule.__init__()"
22 super(CSSPageRuleTestCase, self).test_init()
23
24 r = cssutils.css.CSSPageRule()
25 self.assertEqual(u'', r.selectorText)
26 self.assertEqual(cssutils.css.CSSStyleDeclaration, type(r.style))
27 self.assertEqual(r, r.style.parentRule)
28
29
30 self.assertEqual(u'', r.cssText)
31
33 "CSSPageRule.cssText InvalidModificationErr"
34 self._test_InvalidModificationErr(u'@page')
35 tests = {
36 u'@pag {}': xml.dom.InvalidModificationErr,
37 }
38 self.do_raise_r(tests)
39
41 "CSSPageRule (incomplete)"
42 tests = {
43 u'@page :left { ':
44 u'',
45 u'@page :left { color: red':
46 u'@page :left {\n color: red\n }',
47 }
48 self.do_equal_p(tests)
49
51 "CSSPageRule.cssText"
52 EXP = u'@page :%s {\n margin: 0\n }'
53 tests = {
54 u'@page {}': u'',
55 u'@page:left{}': u'',
56 u'@page :right {}': u'',
57 u'@page {margin:0;}': u'@page {\n margin: 0\n }',
58
59 u'@page:left{margin:0;}': EXP % u'left',
60 u'@page :left { margin: 0 }': EXP % u'left',
61 u'@page :right { margin: 0 }': EXP % u'right',
62 u'@page :first { margin: 0 }': EXP % u'first',
63 u'@page :UNKNOWNIDENT { margin: 0 }': EXP % u'UNKNOWNIDENT',
64
65 u'@PAGE:left{margin:0;}': u'@page :left {\n margin: 0\n }',
66 u'@\\page:left{margin:0;}': u'@page :left {\n margin: 0\n }',
67
68 u'@page/*1*/:left/*2*/{margin:0;}':
69 u'@page /*1*/ :left /*2*/ {\n margin: 0\n }',
70 }
71 self.do_equal_r(tests)
72 self.do_equal_p(tests)
73
74 tests = {
75 u'@page : {}': xml.dom.SyntaxErr,
76 u'@page :/*1*/left {}': xml.dom.SyntaxErr,
77 u'@page : left {}': xml.dom.SyntaxErr,
78 u'@page :left :right {}': xml.dom.SyntaxErr,
79 u'@page :left a {}': xml.dom.SyntaxErr,
80
81 u'@page :left;': xml.dom.SyntaxErr,
82 u'@page :left }': xml.dom.SyntaxErr,
83 }
84 self.do_raise_p(tests)
85 tests.update({
86 u'@page :left {': xml.dom.SyntaxErr,
87 })
88 self.do_raise_r(tests)
89
91 "CSSPageRule.selectorText"
92 tests = {
93 u'': u'',
94 u':left': None,
95 u':right': None,
96 u':first': None,
97 u':UNKNOWNIDENT': None,
98
99 u' :left': u':left',
100 u':left': u':left',
101 u'/*1*/:left/*a*/': u':left',
102 u'/*1*/ :left /*a*/ /*b*/': u':left',
103 u':left/*a*/': u':left',
104 u'/*1*/:left': u':left',
105 }
106 self.do_equal_r(tests, att='selectorText')
107
108 tests = {
109 u':': xml.dom.SyntaxErr,
110 u':/*1*/left': xml.dom.SyntaxErr,
111 u': left': xml.dom.SyntaxErr,
112 u':left :right': xml.dom.SyntaxErr,
113 u':left a': xml.dom.SyntaxErr,
114 }
115 self.do_raise_r(tests, att='_setSelectorText')
116
118 "CSSPageRule.style"
119 d = cssutils.css.CSSStyleDeclaration()
120 self.r.style = d
121 self.assertEqual(d.cssText, self.r.style.cssText)
122 self.assertEqual(None, d.parentRule)
123
125 "CSSPageRule.style properties"
126 r = cssutils.css.CSSPageRule()
127 r.style.cssText = '''
128 margin-top: 0;
129 margin-right: 0;
130 margin-bottom: 0;
131 margin-left: 0;
132 margin: 0;
133
134 page-break-before: auto;
135 page-break-after: auto;
136 page-break-inside: auto;
137
138 orphans: 3;
139 widows: 3;
140 '''
141 exp = u'''@page {
142 margin-top: 0;
143 margin-right: 0;
144 margin-bottom: 0;
145 margin-left: 0;
146 margin: 0;
147 page-break-before: auto;
148 page-break-after: auto;
149 page-break-inside: auto;
150 orphans: 3;
151 widows: 3
152 }'''
153 self.assertEqual(exp, r.cssText)
154
155 - def test_reprANDstr(self):
156 "CSSPageRule.__repr__(), .__str__()"
157 sel=u':left'
158
159 s = cssutils.css.CSSPageRule(selectorText=sel)
160
161 self.assert_(sel in str(s))
162
163 s2 = eval(repr(s))
164 self.assert_(isinstance(s2, s.__class__))
165 self.assert_(sel == s2.selectorText)
166
167
168 if __name__ == '__main__':
169 import unittest
170 unittest.main()
171