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