1 """testcases for cssutils.CSSSerializer
2 """
3 __author__ = '$LastChangedBy: cthedot $'
4 __date__ = '$LastChangedDate: 2007-10-27 21:32:24 +0200 (Sa, 27 Okt 2007) $'
5 __version__ = '$LastChangedRevision: 578 $'
6
7 import basetest
8 import cssutils
9
11 """
12 testcases for cssutils.CSSSerializer
13 """
14
15
16
18 "Preferences.useDefaults()"
19 cssutils.ser.prefs.useDefaults()
20 self.assertEqual(cssutils.ser.prefs.defaultAtKeyword, True)
21 self.assertEqual(cssutils.ser.prefs.defaultPropertyName, True)
22 self.assertEqual(cssutils.ser.prefs.importHrefFormat, None)
23 self.assertEqual(cssutils.ser.prefs.indent, 4 * u' ')
24 self.assertEqual(cssutils.ser.prefs.keepAllProperties, True)
25 self.assertEqual(cssutils.ser.prefs.keepComments, True)
26 self.assertEqual(cssutils.ser.prefs.keepEmptyRules, False)
27 self.assertEqual(cssutils.ser.prefs.lineNumbers, False)
28 self.assertEqual(cssutils.ser.prefs.lineSeparator, u'\n')
29 self.assertEqual(cssutils.ser.prefs.listItemSpacer, u' ')
30 self.assertEqual(cssutils.ser.prefs.omitLastSemicolon, True)
31 self.assertEqual(cssutils.ser.prefs.paranthesisSpacer, u' ')
32 self.assertEqual(cssutils.ser.prefs.propertyNameSpacer, u' ')
33 self.assertEqual(cssutils.ser.prefs.validOnly, False)
34 self.assertEqual(cssutils.ser.prefs.wellformedOnly, True)
35
36 self.assertEqual(cssutils.ser.prefs.removeInvalid, True)
37
39 "Preferences.useMinified()"
40 cssutils.ser.prefs.useDefaults()
41 cssutils.ser.prefs.useMinified()
42 self.assertEqual(cssutils.ser.prefs.defaultAtKeyword, True)
43 self.assertEqual(cssutils.ser.prefs.defaultPropertyName, True)
44 self.assertEqual(cssutils.ser.prefs.importHrefFormat, 'string')
45 self.assertEqual(cssutils.ser.prefs.indent, u'')
46 self.assertEqual(cssutils.ser.prefs.keepAllProperties, True)
47 self.assertEqual(cssutils.ser.prefs.keepComments, False)
48 self.assertEqual(cssutils.ser.prefs.keepEmptyRules, False)
49 self.assertEqual(cssutils.ser.prefs.lineNumbers, False)
50 self.assertEqual(cssutils.ser.prefs.lineSeparator, u'')
51 self.assertEqual(cssutils.ser.prefs.listItemSpacer, u'')
52 self.assertEqual(cssutils.ser.prefs.omitLastSemicolon, True)
53 self.assertEqual(cssutils.ser.prefs.paranthesisSpacer, u'')
54 self.assertEqual(cssutils.ser.prefs.propertyNameSpacer, u'')
55 self.assertEqual(cssutils.ser.prefs.validOnly, False)
56 self.assertEqual(cssutils.ser.prefs.wellformedOnly, True)
57
58 self.assertEqual(cssutils.ser.prefs.removeInvalid, True)
59
60 css = u'''
61 /*1*/
62 @import url(x) tv , print;
63 @media all {}
64 @media all {
65 a {}
66 }
67 @media all {
68 a { color: red; }
69 }
70 @page {}
71 a {}
72 a , b { top : 1px ;
73 font-family : arial , 'some'
74 }
75 '''
76 s = cssutils.parseString(css)
77 self.assertEqual(s.cssText,
78 u'''@import "x" tv,print;@media all{a{color:red}}a,b{top:1px;font-family:arial,'some'}'''
79 )
80
91
93 "Preferences.defaultPropertyName"
94 cssutils.ser.prefs.useDefaults()
95 cssutils.ser.prefs.keepAllProperties = False
96
97
98
99
100 s = cssutils.parseString(u'a { c\olor: green; }')
101 self.assertEqual(u'a {\n color: green\n }', s.cssText)
102 cssutils.ser.prefs.defaultPropertyName = True
103 self.assertEqual(u'a {\n color: green\n }', s.cssText)
104 cssutils.ser.prefs.defaultPropertyName = False
105 self.assertEqual(u'a {\n c\\olor: green\n }', s.cssText)
106
107 s = cssutils.parseString(u'a { color: red; c\olor: green; }')
108 self.assertEqual(u'a {\n c\\olor: green\n }', s.cssText)
109 cssutils.ser.prefs.defaultPropertyName = False
110 self.assertEqual(u'a {\n c\\olor: green\n }', s.cssText)
111 cssutils.ser.prefs.defaultPropertyName = True
112 self.assertEqual(u'a {\n color: green\n }', s.cssText)
113
139
155
157 "Preferences.keepAllProperties"
158 cssutils.ser.prefs.useDefaults()
159
160 css = '''a {
161 color: pink;
162 color: red;
163 c\olor: blue;
164 c\olor: green;
165 }'''
166 s = cssutils.parseString(css)
167
168 cssutils.ser.prefs.keepAllProperties = False
169 self.assertEqual(u'a {\n color: green\n }', s.cssText)
170
171 cssutils.ser.prefs.keepAllProperties = True
172 self.assertEqual(u'a {\n color: pink;\n color: red;\n c\olor: blue;\n c\olor: green\n }', s.cssText)
173
183
185 "Preferences.keepEmptyRules"
186
187 css = u'''a {}
188 a {
189 /*1*/
190 }
191 a {
192 color: red
193 }'''
194 s = cssutils.parseString(css)
195 cssutils.ser.prefs.useDefaults()
196 cssutils.ser.prefs.keepEmptyRules = True
197 self.assertEqual(css, s.cssText)
198 cssutils.ser.prefs.keepEmptyRules = False
199 self.assertEqual(u'a {\n /*1*/\n }\na {\n color: red\n }',
200 s.cssText)
201 cssutils.ser.prefs.keepComments = False
202 self.assertEqual(u'a {\n color: red\n }',
203 s.cssText)
204
205
206 css = u'''@media tv {
207 }
208 @media all {
209 /*1*/
210 }
211 @media print {
212 a {}
213 }
214 @media print {
215 a {
216 /*1*/
217 }
218 }
219 @media all {
220 a {
221 color: red
222 }
223 }'''
224 s = cssutils.parseString(css)
225 cssutils.ser.prefs.useDefaults()
226 cssutils.ser.prefs.keepEmptyRules = True
227
228 cssutils.ser.prefs.keepEmptyRules = False
229 self.assertEqual('''@media all {
230 /*1*/
231 }
232 @media print {
233 a {
234 /*1*/
235 }
236 }
237 @media all {
238 a {
239 color: red
240 }
241 }''', s.cssText)
242 cssutils.ser.prefs.keepComments = False
243 self.assertEqual('''@media all {
244 a {
245 color: red
246 }
247 }''', s.cssText)
248
250 "Preferences.lineNumbers"
251 cssutils.ser.prefs.useDefaults()
252
253 s = cssutils.parseString('a {top: 1; left: 2}')
254 exp0 = '''a {
255 top: 1;
256 left: 2
257 }'''
258 exp1 = '''1: a {
259 2: top: 1;
260 3: left: 2
261 4: }'''
262 self.assertEqual(False, cssutils.ser.prefs.lineNumbers)
263 self.assertEqual(exp0, s.cssText)
264 cssutils.ser.prefs.lineNumbers = True
265 self.assertEqual(True, cssutils.ser.prefs.lineNumbers)
266 self.assertEqual(exp1, s.cssText)
267
280
293
303
312
321
322
340
341
342 if __name__ == '__main__':
343 import unittest
344 unittest.main()
345