gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / lib / cssutils / tests / test_cssvalue.py @ 475
History | View | Annotate | Download (32.8 KB)
1 |
"""Testcases for cssutils.css.CSSValue and CSSPrimitiveValue."""
|
---|---|
2 |
|
3 |
#
|
4 |
## from decimal import Decimal # maybe for later tests?
|
5 |
#import xml.dom
|
6 |
#import basetest
|
7 |
#import cssutils
|
8 |
#import types
|
9 |
#
|
10 |
#class CSSValueTestCase(basetest.BaseTestCase):
|
11 |
#
|
12 |
# def setUp(self):
|
13 |
# self.r = cssutils.css.CSSValue() # needed for tests
|
14 |
#
|
15 |
# def test_init(self):
|
16 |
# "CSSValue.__init__()"
|
17 |
# v = cssutils.css.CSSValue()
|
18 |
# self.assertTrue(u'' == v.cssText)
|
19 |
# self.assertTrue(None is v.cssValueType)
|
20 |
# self.assertTrue(None == v.cssValueTypeString)
|
21 |
#
|
22 |
# def test_escapes(self):
|
23 |
# "CSSValue Escapes"
|
24 |
# v = cssutils.css.CSSValue()
|
25 |
# v.cssText = u'1px'
|
26 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
27 |
# self.assertTrue(v.CSS_PX == v.primitiveType)
|
28 |
# self.assertTrue(u'1px' == v.cssText)
|
29 |
#
|
30 |
# v.cssText = u'1PX'
|
31 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
32 |
# self.assertTrue(v.CSS_PX == v.primitiveType)
|
33 |
# self.assertTrue(u'1px' == v.cssText)
|
34 |
#
|
35 |
# v.cssText = u'1p\\x'
|
36 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
37 |
# self.assertTrue(v.CSS_PX == v.primitiveType)
|
38 |
# self.assertTrue(u'1px' == v.cssText)
|
39 |
#
|
40 |
# def test_cssText(self):
|
41 |
# "CSSValue.cssText"
|
42 |
# v = cssutils.css.CSSValue()
|
43 |
# v.cssText = u'1px'
|
44 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
45 |
# self.assertTrue(v.CSS_PX == v.primitiveType)
|
46 |
# self.assertTrue(u'1px' == v.cssText)
|
47 |
#
|
48 |
# v = cssutils.css.CSSValue()
|
49 |
# v.cssText = u'1px'
|
50 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
51 |
# self.assertTrue(v.CSS_PX == v.primitiveType)
|
52 |
# self.assertTrue(u'1px' == v.cssText)
|
53 |
#
|
54 |
# v = cssutils.css.CSSValue()
|
55 |
# v.cssText = u'a ,b, c ,"d or d", "e, " '
|
56 |
# self.assertEqual(v.CSS_PRIMITIVE_VALUE, v.cssValueType)
|
57 |
# self.assertEqual(v.CSS_STRING, v.primitiveType)
|
58 |
# self.assertEqual(u'a, b, c, "d or d", "e, "', v.cssText)
|
59 |
#
|
60 |
# v.cssText = u' 1 px '
|
61 |
# self.assertTrue(v.CSS_VALUE_LIST == v.cssValueType)
|
62 |
# self.assertTrue('1 px' == v.cssText)
|
63 |
#
|
64 |
# v.cssText = u' normal 1px a, b, "c" end '
|
65 |
# self.assertTrue(v.CSS_VALUE_LIST == v.cssValueType)
|
66 |
# self.assertEqual('normal 1px a, b, "c" end', v.cssText)
|
67 |
#
|
68 |
# for i, x in enumerate(v):
|
69 |
# self.assertEqual(x.CSS_PRIMITIVE_VALUE, x.cssValueType)
|
70 |
# if x == 0:
|
71 |
# self.assertEqual(x.CSS_IDENT, x.primitiveType)
|
72 |
# self.assertEqual(u'normal', x.cssText)
|
73 |
# elif x == 1:
|
74 |
# self.assertEqual(x.CSS_PX, x.primitiveType)
|
75 |
# self.assertEqual(u'1px', x.cssText)
|
76 |
# if x == 2:
|
77 |
# self.assertEqual(x.CSS_STRING, x.primitiveType)
|
78 |
# self.assertEqual(u'a, b, "c"', x.cssText)
|
79 |
# if x == 3:
|
80 |
# self.assertEqual(x.CSS_IDENT, x.primitiveType)
|
81 |
# self.assertEqual(u'end', x.cssText)
|
82 |
#
|
83 |
#
|
84 |
# v = cssutils.css.CSSValue()
|
85 |
# v.cssText = u' 1 px '
|
86 |
# self.assertTrue(v.CSS_VALUE_LIST == v.cssValueType)
|
87 |
# self.assertTrue(u'1 px' == v.cssText)
|
88 |
#
|
89 |
# v.cssText = u'expression(document.body.clientWidth > 972 ? "1014px": "100%" )'
|
90 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
91 |
# self.assertTrue(v.CSS_UNKNOWN == v.primitiveType)
|
92 |
# self.assertEqual(u'expression(document.body.clientWidth > 972?"1014px": "100%")',
|
93 |
# v.cssText)
|
94 |
#
|
95 |
# def test_cssText2(self):
|
96 |
# "CSSValue.cssText 2"
|
97 |
# tests = {
|
98 |
# # mix
|
99 |
# u'a()1,-1,+1,1%,-1%,1px,-1px,"a",a,url(a),#aabb44':
|
100 |
# u'a() 1, -1, 1, 1%, -1%, 1px, -1px, "a", a, url(a), #ab4',
|
101 |
#
|
102 |
# # S or COMMENT
|
103 |
# u'red': u'red',
|
104 |
# u'red ': u'red',
|
105 |
# u' red ': u'red',
|
106 |
# u'/**/red': u'/**/ red',
|
107 |
# u'red/**/': u'red /**/',
|
108 |
# u'/**/red/**/': u'/**/ red /**/',
|
109 |
# u'/**/ red': u'/**/ red',
|
110 |
# u'red /**/': u'red /**/',
|
111 |
# u'/**/ red /**/': u'/**/ red /**/',
|
112 |
# u'red-': u'red-',
|
113 |
#
|
114 |
# # num / dimension
|
115 |
# u'.0': u'0',
|
116 |
# u'0': u'0',
|
117 |
# u'0.0': u'0',
|
118 |
# u'00': u'0',
|
119 |
# u'0%': u'0%',
|
120 |
# u'0px': u'0',
|
121 |
# u'-.0': u'0',
|
122 |
# u'-0': u'0',
|
123 |
# u'-0.0': u'0',
|
124 |
# u'-00': u'0',
|
125 |
# u'-0%': u'0%',
|
126 |
# u'-0px': u'0',
|
127 |
# u'+.0': u'0',
|
128 |
# u'+0': u'0',
|
129 |
# u'+0.0': u'0',
|
130 |
# u'+00': u'0',
|
131 |
# u'+0%': u'0%',
|
132 |
# u'+0px': u'0',
|
133 |
# u'1': u'1',
|
134 |
# u'1.0': u'1',
|
135 |
# u'1px': u'1px',
|
136 |
# u'1%': u'1%',
|
137 |
# u'1px1': u'1px1',
|
138 |
# u'+1': u'1',
|
139 |
# u'-1': u'-1',
|
140 |
# u'+1.0': u'1',
|
141 |
# u'-1.0': u'-1',
|
142 |
#
|
143 |
# # string, escaped nl is removed during tokenizing
|
144 |
# u'"x"': u'"x"',
|
145 |
# u"'x'": u'"x"',
|
146 |
# #ur''' "1\'2" ''': u'''"1'2"''', #???
|
147 |
# #ur"'x\"'": ur'"x\""', #???
|
148 |
# ur'''"x\
|
149 |
#y"''': u'''"xy"''',
|
150 |
#
|
151 |
# # hash and rgb/a
|
152 |
# u'#112234': u'#112234',
|
153 |
# u'#112233': u'#123',
|
154 |
# u'rgb(1,2,3)': u'rgb(1, 2, 3)',
|
155 |
# u'rgb( 1 , 2 , 3 )': u'rgb(1, 2, 3)',
|
156 |
# u'rgb(-1,+2,0)': u'rgb(-1, 2, 0)',
|
157 |
# u'rgba(1,2,3,4)': u'rgba(1, 2, 3, 4)',
|
158 |
# u'rgba( 1 , 2 , 3 , 4 )': u'rgba(1, 2, 3, 4)',
|
159 |
# u'rgba(-1,+2,0, 0)': u'rgba(-1, 2, 0, 0)',
|
160 |
#
|
161 |
# # FUNCTION
|
162 |
# u'f(1,2)': u'f(1, 2)',
|
163 |
# u'f( 1 , 2 )': u'f(1, 2)',
|
164 |
# u'f(-1,+2)': u'f(-1, 2)',
|
165 |
# u'f( -1 , +2 )': u'f(-1, 2)',
|
166 |
# u'fun( -1 , +2 )': u'fun(-1, 2)',
|
167 |
# u'local( x )': u'local(x)',
|
168 |
# u'test(1px, #111, y, 1, 1%, "1", y(), var(x))':
|
169 |
# u'test(1px, #111, y, 1, 1%, "1", y(), var(x))',
|
170 |
# u'test(-1px, #111, y, -1, -1%, "1", -y())':
|
171 |
# u'test(-1px, #111, y, -1, -1%, "1", -y())',
|
172 |
# u'url(y) format( "x" , "y" )': u'url(y) format("x", "y")',
|
173 |
# u'f(1 2,3 4)': u'f(1 2, 3 4)',
|
174 |
#
|
175 |
# # IE expression
|
176 |
# ur'Expression()': u'Expression()',
|
177 |
# ur'expression(-1 < +2)': u'expression(-1< + 2)',
|
178 |
# ur'expression(document.width == "1")': u'expression(document.width=="1")',
|
179 |
# u'alpha(opacity=80)': u'alpha(opacity=80)',
|
180 |
# u'alpha( opacity = 80 , x=2 )': u'alpha(opacity=80, x=2)',
|
181 |
#
|
182 |
# # unicode-range
|
183 |
# 'u+f': 'u+f',
|
184 |
# 'U+ABCdef': 'u+abcdef',
|
185 |
#
|
186 |
# # url
|
187 |
# 'url(a)': 'url(a)',
|
188 |
# 'uRl(a)': 'url(a)',
|
189 |
# 'u\\rl(a)': 'url(a)',
|
190 |
# 'url("a")': 'url(a)',
|
191 |
# 'url( "a" )': 'url(a)',
|
192 |
# 'url(a)': 'url(a)',
|
193 |
# 'url(";")': 'url(";")',
|
194 |
# 'url(",")': 'url(",")',
|
195 |
# 'url(")")': 'url(")")',
|
196 |
# '''url("'")''': '''url("'")''',
|
197 |
# '''url('"')''': '''url("\\"")''',
|
198 |
# '''url("'")''': '''url("'")''',
|
199 |
#
|
200 |
# # operator
|
201 |
# '1': '1',
|
202 |
# '1 2': '1 2',
|
203 |
# '1 2': '1 2',
|
204 |
# '1,2': '1, 2',
|
205 |
# '1, 2': '1, 2',
|
206 |
# '1 ,2': '1, 2',
|
207 |
# '1 , 2': '1, 2',
|
208 |
# '1/2': '1/2',
|
209 |
# '1/ 2': '1/2',
|
210 |
# '1 /2': '1/2',
|
211 |
# '1 / 2': '1/2',
|
212 |
# # comment
|
213 |
# '1/**/2': '1 /**/ 2',
|
214 |
# '1 /**/2': '1 /**/ 2',
|
215 |
# '1/**/ 2': '1 /**/ 2',
|
216 |
# '1 /**/ 2': '1 /**/ 2',
|
217 |
# '1 /*a*/ /*b*/ 2': '1 /*a*/ /*b*/ 2',
|
218 |
# # , before
|
219 |
# '1,/**/2': '1, /**/ 2',
|
220 |
# '1 ,/**/2': '1, /**/ 2',
|
221 |
# '1, /**/2': '1, /**/ 2',
|
222 |
# '1 , /**/2': '1, /**/ 2',
|
223 |
# # , after
|
224 |
# '1/**/,2': '1 /**/, 2',
|
225 |
# '1/**/ ,2': '1 /**/, 2',
|
226 |
# '1/**/, 2': '1 /**/, 2',
|
227 |
# '1/**/ , 2': '1 /**/, 2',
|
228 |
# # all
|
229 |
# '1/*a*/ ,/*b*/ 2': '1 /*a*/, /*b*/ 2',
|
230 |
# '1 /*a*/, /*b*/2': '1 /*a*/, /*b*/ 2',
|
231 |
# '1 /*a*/ , /*b*/ 2': '1 /*a*/, /*b*/ 2',
|
232 |
#
|
233 |
# # list
|
234 |
# 'a b1,b2 b2,b3,b4': 'a b1, b2 b2, b3, b4',
|
235 |
# 'a b1 , b2 b2 , b3 , b4': 'a b1, b2 b2, b3, b4',
|
236 |
# 'u+1 , u+2-5': 'u+1, u+2-5',
|
237 |
# u'local( x ), url(y) format( "x" , "y" )':
|
238 |
# u'local(x), url(y) format("x", "y")',
|
239 |
# # FUNCTION
|
240 |
# u'attr( href )': u'attr(href)',
|
241 |
# # PrinceXML extende FUNC syntax with nested FUNC
|
242 |
# u'target-counter(attr(href),page)': u'target-counter(attr(href), page)'
|
243 |
# }
|
244 |
#
|
245 |
# self.do_equal_r(tests)
|
246 |
#
|
247 |
# tests = {
|
248 |
# u'a+': xml.dom.SyntaxErr,
|
249 |
# u'-': xml.dom.SyntaxErr,
|
250 |
# u'+': xml.dom.SyntaxErr,
|
251 |
# u'-%': xml.dom.SyntaxErr,
|
252 |
# u'+a': xml.dom.SyntaxErr,
|
253 |
# u'--1px': xml.dom.SyntaxErr,
|
254 |
# u'++1px': xml.dom.SyntaxErr,
|
255 |
# u'#': xml.dom.SyntaxErr,
|
256 |
# u'#00': xml.dom.SyntaxErr,
|
257 |
# u'#0000': xml.dom.SyntaxErr,
|
258 |
# u'#00000': xml.dom.SyntaxErr,
|
259 |
# u'#0000000': xml.dom.SyntaxErr,
|
260 |
# u'-#0': xml.dom.SyntaxErr,
|
261 |
# # operator
|
262 |
# u',': xml.dom.SyntaxErr,
|
263 |
# u'1,,2': xml.dom.SyntaxErr,
|
264 |
# u'1,/**/,2': xml.dom.SyntaxErr,
|
265 |
# u'1 , /**/ , 2': xml.dom.SyntaxErr,
|
266 |
# u'1,': xml.dom.SyntaxErr,
|
267 |
# u'1, ': xml.dom.SyntaxErr,
|
268 |
# u'1 ,': xml.dom.SyntaxErr,
|
269 |
# u'1 , ': xml.dom.SyntaxErr,
|
270 |
# u'1 , ': xml.dom.SyntaxErr,
|
271 |
# u'1//2': xml.dom.SyntaxErr,
|
272 |
# # URL
|
273 |
# u'url(x))': xml.dom.SyntaxErr,
|
274 |
# # string
|
275 |
# u'"': xml.dom.SyntaxErr,
|
276 |
# u"'": xml.dom.SyntaxErr,
|
277 |
# # function
|
278 |
# u'f(-)': xml.dom.SyntaxErr,
|
279 |
# u'f(x))': xml.dom.SyntaxErr
|
280 |
# }
|
281 |
# self.do_raise_r(tests)
|
282 |
#
|
283 |
# def test_incomplete(self):
|
284 |
# "CSSValue (incomplete)"
|
285 |
# tests = {
|
286 |
# u'url("a': u'url(a)',
|
287 |
# u'url(a': u'url(a)'
|
288 |
# }
|
289 |
# for v, exp in tests.items():
|
290 |
# s = cssutils.parseString('a { background: %s' % v)
|
291 |
# v = s.cssRules[0].style.background
|
292 |
# self.assertEqual(v, exp)
|
293 |
#
|
294 |
# def test_cssValueType(self):
|
295 |
# "CSSValue.cssValueType .cssValueTypeString"
|
296 |
# tests = [
|
297 |
# ([u'inherit', u'INhe\\rit'], 'CSS_INHERIT', cssutils.css.CSSValue),
|
298 |
# (['1', '1%', '1em', '1ex', '1px', '1cm', '1mm', '1in', '1pt', '1pc',
|
299 |
# '1deg', '1rad', '1grad', '1ms', '1s', '1hz', '1khz', '1other',
|
300 |
# '"string"', "'string'", 'url(x)', 'red',
|
301 |
# 'attr(a)', 'counter(x)', 'rect(1px, 2px, 3px, 4px)',
|
302 |
# 'rgb(0, 0, 0)', '#000', '#123456', 'rgba(0, 0, 0, 0)',
|
303 |
# 'hsl(0, 0, 0)', 'hsla(0, 0, 0, 0)',
|
304 |
# ],
|
305 |
# 'CSS_PRIMITIVE_VALUE', cssutils.css.CSSPrimitiveValue),
|
306 |
# ([u'1px 1px', 'red blue green x'], 'CSS_VALUE_LIST', cssutils.css.CSSValueList),
|
307 |
# # what is a custom value?
|
308 |
# #([], 'CSS_CUSTOM', cssutils.css.CSSValue)
|
309 |
# ]
|
310 |
# for values, name, cls in tests:
|
311 |
# for value in values:
|
312 |
# v = cssutils.css.CSSValue(cssText=value)
|
313 |
# if value == "'string'":
|
314 |
# # will be changed to " always
|
315 |
# value = '"string"'
|
316 |
# self.assertEqual(value, v.cssText)
|
317 |
# self.assertEqual(name, v.cssValueTypeString)
|
318 |
# self.assertEqual(getattr(v, name), v.cssValueType)
|
319 |
# self.assertEqual(cls, type(v))
|
320 |
#
|
321 |
# def test_readonly(self):
|
322 |
# "(CSSValue._readonly)"
|
323 |
# v = cssutils.css.CSSValue(cssText='inherit')
|
324 |
# self.assertTrue(False is v._readonly)
|
325 |
#
|
326 |
# v = cssutils.css.CSSValue(cssText='inherit', readonly=True)
|
327 |
# self.assertTrue(True is v._readonly)
|
328 |
# self.assertTrue(u'inherit', v.cssText)
|
329 |
# self.assertRaises(xml.dom.NoModificationAllowedErr, v._setCssText, u'x')
|
330 |
# self.assertTrue(u'inherit', v.cssText)
|
331 |
#
|
332 |
# def test_reprANDstr(self):
|
333 |
# "CSSValue.__repr__(), .__str__()"
|
334 |
# cssText='inherit'
|
335 |
#
|
336 |
# s = cssutils.css.CSSValue(cssText=cssText)
|
337 |
#
|
338 |
# self.assertTrue(cssText in str(s))
|
339 |
#
|
340 |
# s2 = eval(repr(s))
|
341 |
# self.assertTrue(isinstance(s2, s.__class__))
|
342 |
# self.assertTrue(cssText == s2.cssText)
|
343 |
#
|
344 |
#
|
345 |
#class CSSPrimitiveValueTestCase(basetest.BaseTestCase):
|
346 |
#
|
347 |
# def test_init(self):
|
348 |
# "CSSPrimitiveValue.__init__()"
|
349 |
# v = cssutils.css.CSSPrimitiveValue(u'1')
|
350 |
# self.assertTrue(u'1' == v.cssText)
|
351 |
#
|
352 |
# self.assertTrue(v.CSS_PRIMITIVE_VALUE == v.cssValueType)
|
353 |
# self.assertTrue("CSS_PRIMITIVE_VALUE" == v.cssValueTypeString)
|
354 |
#
|
355 |
# self.assertTrue(v.CSS_NUMBER == v.primitiveType)
|
356 |
# self.assertTrue("CSS_NUMBER" == v.primitiveTypeString)
|
357 |
#
|
358 |
# # DUMMY to be able to test empty constructor call
|
359 |
# #self.assertRaises(xml.dom.SyntaxErr, v.__init__, None)
|
360 |
#
|
361 |
# self.assertRaises(xml.dom.InvalidAccessErr, v.getCounterValue)
|
362 |
# self.assertRaises(xml.dom.InvalidAccessErr, v.getRGBColorValue)
|
363 |
# self.assertRaises(xml.dom.InvalidAccessErr, v.getRectValue)
|
364 |
# self.assertRaises(xml.dom.InvalidAccessErr, v.getStringValue)
|
365 |
#
|
366 |
# def test_CSS_UNKNOWN(self):
|
367 |
# "CSSPrimitiveValue.CSS_UNKNOWN"
|
368 |
# v = cssutils.css.CSSPrimitiveValue(u'expression(false)')
|
369 |
# self.assertTrue(v.CSS_UNKNOWN == v.primitiveType)
|
370 |
# self.assertTrue('CSS_UNKNOWN' == v.primitiveTypeString)
|
371 |
#
|
372 |
# def test_CSS_NUMBER_AND_OTHER_DIMENSIONS(self):
|
373 |
# "CSSPrimitiveValue.CSS_NUMBER .. CSS_DIMENSION"
|
374 |
# defs = [
|
375 |
# ('', 'CSS_NUMBER'),
|
376 |
# ('%', 'CSS_PERCENTAGE'),
|
377 |
# ('em', 'CSS_EMS'),
|
378 |
# ('ex', 'CSS_EXS'),
|
379 |
# ('px', 'CSS_PX'),
|
380 |
# ('cm', 'CSS_CM'),
|
381 |
# ('mm', 'CSS_MM'),
|
382 |
# ('in', 'CSS_IN'),
|
383 |
# ('pt', 'CSS_PT'),
|
384 |
# ('pc', 'CSS_PC'),
|
385 |
# ('deg', 'CSS_DEG'),
|
386 |
# ('rad', 'CSS_RAD'),
|
387 |
# ('grad', 'CSS_GRAD'),
|
388 |
# ('ms', 'CSS_MS'),
|
389 |
# ('s', 'CSS_S'),
|
390 |
# ('hz', 'CSS_HZ'),
|
391 |
# ('khz', 'CSS_KHZ'),
|
392 |
# ('other_dimension', 'CSS_DIMENSION')
|
393 |
# ]
|
394 |
# for dim, name in defs:
|
395 |
# for n in (0, 1, 1.1, -1, -1.1, -0):
|
396 |
# v = cssutils.css.CSSPrimitiveValue('%i%s' % (n, dim))
|
397 |
# self.assertEqual(name, v.primitiveTypeString)
|
398 |
# self.assertEqual(getattr(v, name), v.primitiveType)
|
399 |
#
|
400 |
# def test_CSS_STRING_AND_OTHER(self):
|
401 |
# "CSSPrimitiveValue.CSS_STRING .. CSS_RGBCOLOR"
|
402 |
# defs = [
|
403 |
# (('""', "''", '"some thing"', "' A\\ND '",
|
404 |
# # comma separated lists are STRINGS FOR NOW!
|
405 |
# 'a, b',
|
406 |
# '"a", "b"',
|
407 |
# ), 'CSS_STRING'),
|
408 |
# (('url(a)', 'url("a b")', "url(' ')"), 'CSS_URI'),
|
409 |
# (('some', 'or_anth-er'), 'CSS_IDENT'),
|
410 |
# (('attr(a)', 'attr(b)'), 'CSS_ATTR'),
|
411 |
# (('counter(1)', 'counter(2)'), 'CSS_COUNTER'),
|
412 |
# (('rect(1,2,3,4)',), 'CSS_RECT'),
|
413 |
# (('rgb(1,2,3)', 'rgb(10%, 20%, 30%)', '#123', '#123456'),
|
414 |
# 'CSS_RGBCOLOR'),
|
415 |
# (('rgba(1,2,3,4)','rgba(10%, 20%, 30%, 40%)', ),
|
416 |
# 'CSS_RGBACOLOR'),
|
417 |
# (('U+0', 'u+ffffff', 'u+000000-f',
|
418 |
# 'u+0-f, U+ee-ff'), 'CSS_UNICODE_RANGE')
|
419 |
# ]
|
420 |
#
|
421 |
# for examples, name in defs:
|
422 |
# for x in examples:
|
423 |
# v = cssutils.css.CSSPrimitiveValue(x)
|
424 |
# self.assertEqual(getattr(v, name), v.primitiveType)
|
425 |
# self.assertEqual(name, v.primitiveTypeString)
|
426 |
#
|
427 |
# def test_getFloat(self):
|
428 |
# "CSSPrimitiveValue.getFloatValue()"
|
429 |
# # NOT TESTED are float values as it seems difficult to
|
430 |
# # compare these. Maybe use decimal.Decimal?
|
431 |
#
|
432 |
# v = cssutils.css.CSSPrimitiveValue(u'1px')
|
433 |
# tests = {
|
434 |
# '0': (v.CSS_NUMBER, 0),
|
435 |
# '-1.1': (v.CSS_NUMBER, -1.1),
|
436 |
# '1%': (v.CSS_PERCENTAGE, 1),
|
437 |
# '-1%': (v.CSS_PERCENTAGE, -1),
|
438 |
# '1em': (v.CSS_EMS, 1),
|
439 |
# '-1.1em': (v.CSS_EMS, -1.1),
|
440 |
# '1ex': (v.CSS_EXS, 1),
|
441 |
# '1px': (v.CSS_PX, 1),
|
442 |
#
|
443 |
# '1cm': (v.CSS_CM, 1),
|
444 |
# '1cm': (v.CSS_MM, 10),
|
445 |
# '254cm': (v.CSS_IN, 100),
|
446 |
# '1mm': (v.CSS_MM, 1),
|
447 |
# '10mm': (v.CSS_CM, 1),
|
448 |
# '254mm': (v.CSS_IN, 10),
|
449 |
# '1in': (v.CSS_IN, 1),
|
450 |
# '100in': (v.CSS_CM, 254), # ROUNDED!!!
|
451 |
# '10in': (v.CSS_MM, 254), # ROUNDED!!!
|
452 |
#
|
453 |
# '1pt': (v.CSS_PT, 1),
|
454 |
# '1pc': (v.CSS_PC, 1),
|
455 |
#
|
456 |
# '1deg': (v.CSS_DEG, 1),
|
457 |
# '1rad': (v.CSS_RAD, 1),
|
458 |
# '1grad': (v.CSS_GRAD, 1),
|
459 |
#
|
460 |
# '1ms': (v.CSS_MS, 1),
|
461 |
# '1000ms': (v.CSS_S, 1),
|
462 |
# '1s': (v.CSS_S, 1),
|
463 |
# '1s': (v.CSS_MS, 1000),
|
464 |
#
|
465 |
# '1hz': (v.CSS_HZ, 1),
|
466 |
# '1000hz': (v.CSS_KHZ, 1),
|
467 |
# '1khz': (v.CSS_KHZ, 1),
|
468 |
# '1khz': (v.CSS_HZ, 1000),
|
469 |
#
|
470 |
# '1DIMENSION': (v.CSS_DIMENSION, 1),
|
471 |
# }
|
472 |
# for cssText in tests:
|
473 |
# v.cssText = cssText
|
474 |
# unitType, exp = tests[cssText]
|
475 |
# val = v.getFloatValue(unitType)
|
476 |
# if unitType in (v.CSS_IN, v.CSS_CM):
|
477 |
# val = round(val)
|
478 |
# self.assertEqual(val , exp)
|
479 |
#
|
480 |
# def test_setFloat(self):
|
481 |
# "CSSPrimitiveValue.setFloatValue()"
|
482 |
# V = cssutils.css.CSSPrimitiveValue
|
483 |
#
|
484 |
# tests = {
|
485 |
# # unitType, value
|
486 |
# (V.CSS_NUMBER, 1): [
|
487 |
# # unitType, setvalue,
|
488 |
# # getvalue or expected exception, msg or cssText
|
489 |
# (V.CSS_NUMBER, 0, 0, '0'),
|
490 |
# (V.CSS_NUMBER, 0.1, 0.1, '0.1'),
|
491 |
# (V.CSS_NUMBER, -0, 0, '0'),
|
492 |
# (V.CSS_NUMBER, 2, 2, '2'),
|
493 |
# (V.CSS_NUMBER, 2.0, 2, '2'),
|
494 |
# (V.CSS_NUMBER, 2.1, 2.1, '2.1'),
|
495 |
# (V.CSS_NUMBER, -2.1, -2.1, '-2.1'),
|
496 |
# # setting with string does work
|
497 |
# (V.CSS_NUMBER, '1', 1, '1'),
|
498 |
# (V.CSS_NUMBER, '1.1', 1.1, '1.1'),
|
499 |
# (V.CSS_PX, 1, xml.dom.InvalidAccessErr, None),
|
500 |
# (V.CSS_DEG, 1, xml.dom.InvalidAccessErr, None),
|
501 |
# (V.CSS_RAD, 1, xml.dom.InvalidAccessErr, None),
|
502 |
# (V.CSS_GRAD, 1, xml.dom.InvalidAccessErr, None),
|
503 |
# (V.CSS_S, 1, xml.dom.InvalidAccessErr, None),
|
504 |
# (V.CSS_MS, 1, xml.dom.InvalidAccessErr, None),
|
505 |
# (V.CSS_KHZ, 1, xml.dom.InvalidAccessErr, None),
|
506 |
# (V.CSS_HZ, 1, xml.dom.InvalidAccessErr, None),
|
507 |
# (V.CSS_DIMENSION, 1, xml.dom.InvalidAccessErr, None),
|
508 |
# (V.CSS_MM, 2, xml.dom.InvalidAccessErr, None),
|
509 |
#
|
510 |
# (V.CSS_NUMBER, 'x', xml.dom.InvalidAccessErr,
|
511 |
# "CSSPrimitiveValue: floatValue 'x' is not a float"),
|
512 |
# (V.CSS_NUMBER, '1x', xml.dom.InvalidAccessErr,
|
513 |
# "CSSPrimitiveValue: floatValue '1x' is not a float"),
|
514 |
#
|
515 |
# (V.CSS_STRING, 'x', xml.dom.InvalidAccessErr,
|
516 |
# "CSSPrimitiveValue: unitType 'CSS_STRING' is not a float type"),
|
517 |
# (V.CSS_URI, 'x', xml.dom.InvalidAccessErr,
|
518 |
# "CSSPrimitiveValue: unitType 'CSS_URI' is not a float type"),
|
519 |
# (V.CSS_ATTR, 'x', xml.dom.InvalidAccessErr,
|
520 |
# "CSSPrimitiveValue: unitType 'CSS_ATTR' is not a float type"),
|
521 |
# (V.CSS_IDENT, 'x', xml.dom.InvalidAccessErr,
|
522 |
# "CSSPrimitiveValue: unitType 'CSS_IDENT' is not a float type"),
|
523 |
# (V.CSS_RGBCOLOR, 'x', xml.dom.InvalidAccessErr,
|
524 |
# "CSSPrimitiveValue: unitType 'CSS_RGBCOLOR' is not a float type"),
|
525 |
# (V.CSS_RGBACOLOR, 'x', xml.dom.InvalidAccessErr,
|
526 |
# "CSSPrimitiveValue: unitType 'CSS_RGBACOLOR' is not a float type"),
|
527 |
# (V.CSS_RECT, 'x', xml.dom.InvalidAccessErr,
|
528 |
# "CSSPrimitiveValue: unitType 'CSS_RECT' is not a float type"),
|
529 |
# (V.CSS_COUNTER, 'x', xml.dom.InvalidAccessErr,
|
530 |
# "CSSPrimitiveValue: unitType 'CSS_COUNTER' is not a float type"),
|
531 |
# (V.CSS_EMS, 1, xml.dom.InvalidAccessErr,
|
532 |
# "CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_NUMBER' to 'CSS_EMS'"),
|
533 |
# (V.CSS_EXS, 1, xml.dom.InvalidAccessErr,
|
534 |
# "CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_NUMBER' to 'CSS_EXS'")
|
535 |
# ],
|
536 |
# (V.CSS_MM, '1mm'): [
|
537 |
# (V.CSS_MM, 2, 2, '2mm'),
|
538 |
# (V.CSS_MM, 0, 0, '0mm'),
|
539 |
# (V.CSS_MM, 0.1, 0.1, '0.1mm'),
|
540 |
# (V.CSS_MM, -0, -0, '0mm'),
|
541 |
# (V.CSS_MM, 3.0, 3, '3mm'),
|
542 |
# (V.CSS_MM, 3.1, 3.1, '3.1mm'),
|
543 |
# (V.CSS_MM, -3.1, -3.1, '-3.1mm'),
|
544 |
# (V.CSS_CM, 1, 10, '10mm'),
|
545 |
# (V.CSS_IN, 10, 254, '254mm'),
|
546 |
# (V.CSS_PT, 1, 1828.8, '1828.8mm'),
|
547 |
# (V.CSS_PX, 1, xml.dom.InvalidAccessErr, None),
|
548 |
# (V.CSS_NUMBER, 2, xml.dom.InvalidAccessErr, None)
|
549 |
# ],
|
550 |
# (V.CSS_PT, '1pt'): [
|
551 |
# (V.CSS_PT, 2, 2, '2pt'),
|
552 |
# (V.CSS_PC, 12, 1, '1pt'),
|
553 |
# (V.CSS_NUMBER, 1, xml.dom.InvalidAccessErr, None),
|
554 |
# (V.CSS_DEG, 1, xml.dom.InvalidAccessErr, None),
|
555 |
# (V.CSS_PX, 1, xml.dom.InvalidAccessErr, None)
|
556 |
# ],
|
557 |
# (V.CSS_KHZ, '1khz'): [
|
558 |
# (V.CSS_HZ, 2000, 2, '2khz'),
|
559 |
# (V.CSS_NUMBER, 1, xml.dom.InvalidAccessErr, None),
|
560 |
# (V.CSS_DEG, 1, xml.dom.InvalidAccessErr, None),
|
561 |
# (V.CSS_PX, 1, xml.dom.InvalidAccessErr, None)
|
562 |
# ]
|
563 |
# }
|
564 |
# for test in tests:
|
565 |
# initialType, initialValue = test
|
566 |
# pv = cssutils.css.CSSPrimitiveValue(initialValue)
|
567 |
# for setType, setValue, exp, cssText in tests[test]:
|
568 |
# if type(exp) == types.TypeType or\
|
569 |
# type(exp) == types.ClassType: # 2.4 compatibility
|
570 |
# if cssText:
|
571 |
# self.assertRaisesMsg(
|
572 |
# exp, cssText, pv.setFloatValue, setType, setValue)
|
573 |
# else:
|
574 |
# self.assertRaises(
|
575 |
# exp, pv.setFloatValue, setType, setValue)
|
576 |
# else:
|
577 |
# pv.setFloatValue(setType, setValue)
|
578 |
# self.assertEqual(pv._value[0], cssText)
|
579 |
# if cssText == '0mm':
|
580 |
# cssText = '0'
|
581 |
# self.assertEqual(pv.cssText, cssText)
|
582 |
# self.assertEqual(pv.getFloatValue(initialType), exp)
|
583 |
#
|
584 |
# def test_getString(self):
|
585 |
# "CSSPrimitiveValue.getStringValue()"
|
586 |
# v = cssutils.css.CSSPrimitiveValue(u'1px')
|
587 |
# self.assertTrue(v.primitiveType == v.CSS_PX)
|
588 |
# self.assertRaises(xml.dom.InvalidAccessErr,
|
589 |
# v.getStringValue)
|
590 |
#
|
591 |
# pv = cssutils.css.CSSPrimitiveValue
|
592 |
# tests = {
|
593 |
# pv.CSS_STRING: ("'red'", 'red'),
|
594 |
# pv.CSS_STRING: ('"red"', 'red'),
|
595 |
# pv.CSS_URI: ('url(http://example.com)', None),
|
596 |
# pv.CSS_URI: ("url('http://example.com')",
|
597 |
# u"http://example.com"),
|
598 |
# pv.CSS_URI: ('url("http://example.com")',
|
599 |
# u'http://example.com'),
|
600 |
# pv.CSS_URI: ('url("http://example.com?)")',
|
601 |
# u'http://example.com?)'),
|
602 |
# pv.CSS_IDENT: ('red', None),
|
603 |
# pv.CSS_ATTR: ('attr(att-name)',
|
604 |
# u'att-name'), # the name of the attrr
|
605 |
# }
|
606 |
# for t in tests:
|
607 |
# val, exp = tests[t]
|
608 |
# if not exp:
|
609 |
# exp = val
|
610 |
#
|
611 |
# v = cssutils.css.CSSPrimitiveValue(val)
|
612 |
# self.assertEqual(v.primitiveType, t)
|
613 |
# self.assertEqual(v.getStringValue(), exp)
|
614 |
#
|
615 |
# def test_setString(self):
|
616 |
# "CSSPrimitiveValue.setStringValue()"
|
617 |
# # CSS_STRING
|
618 |
# v = cssutils.css.CSSPrimitiveValue(u'"a"')
|
619 |
# self.assertTrue(v.CSS_STRING == v.primitiveType)
|
620 |
# v.setStringValue(v.CSS_STRING, 'b')
|
621 |
# self.assertTrue(('b', 'STRING') == v._value)
|
622 |
# self.assertEqual('b', v.getStringValue())
|
623 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
624 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_URI'",
|
625 |
# v.setStringValue, *(v.CSS_URI, 'x'))
|
626 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
627 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_IDENT'",
|
628 |
# v.setStringValue, *(v.CSS_IDENT, 'x'))
|
629 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
630 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_STRING' to 'CSS_ATTR'",
|
631 |
# v.setStringValue, *(v.CSS_ATTR, 'x'))
|
632 |
#
|
633 |
# # CSS_IDENT
|
634 |
# v = cssutils.css.CSSPrimitiveValue('new')
|
635 |
# v.setStringValue(v.CSS_IDENT, 'ident')
|
636 |
# self.assertTrue(v.CSS_IDENT == v.primitiveType)
|
637 |
# self.assertTrue(('ident', 'IDENT') == v._value)
|
638 |
# self.assertTrue('ident' == v.getStringValue())
|
639 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
640 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_URI'",
|
641 |
# v.setStringValue, *(v.CSS_URI, 'x'))
|
642 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
643 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_STRING'",
|
644 |
# v.setStringValue, *(v.CSS_STRING, '"x"'))
|
645 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
646 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_IDENT' to 'CSS_ATTR'",
|
647 |
# v.setStringValue, *(v.CSS_ATTR, 'x'))
|
648 |
#
|
649 |
# # CSS_URI
|
650 |
# v = cssutils.css.CSSPrimitiveValue('url(old)')
|
651 |
# v.setStringValue(v.CSS_URI, '(')
|
652 |
# self.assertEqual((u'(', 'URI'), v._value)
|
653 |
# self.assertEqual(u'(', v.getStringValue())
|
654 |
#
|
655 |
# v.setStringValue(v.CSS_URI, ')')
|
656 |
# self.assertEqual((u')', 'URI'), v._value)
|
657 |
# self.assertEqual(u')', v.getStringValue())
|
658 |
#
|
659 |
# v.setStringValue(v.CSS_URI, '"')
|
660 |
# self.assertEqual(ur'"', v.getStringValue())
|
661 |
# self.assertEqual((ur'"', 'URI'), v._value)
|
662 |
#
|
663 |
# v.setStringValue(v.CSS_URI, "''")
|
664 |
# self.assertEqual(ur"''", v.getStringValue())
|
665 |
# self.assertEqual((ur"''", 'URI'), v._value)
|
666 |
#
|
667 |
# v.setStringValue(v.CSS_URI, ',')
|
668 |
# self.assertEqual(ur',', v.getStringValue())
|
669 |
# self.assertEqual((ur',', 'URI'), v._value)
|
670 |
#
|
671 |
# v.setStringValue(v.CSS_URI, ' ')
|
672 |
# self.assertEqual((u' ', 'URI'), v._value)
|
673 |
# self.assertEqual(u' ', v.getStringValue())
|
674 |
#
|
675 |
# v.setStringValue(v.CSS_URI, 'a)')
|
676 |
# self.assertEqual((u'a)', 'URI'), v._value)
|
677 |
# self.assertEqual(u'a)', v.getStringValue())
|
678 |
#
|
679 |
# v.setStringValue(v.CSS_URI, 'a')
|
680 |
# self.assertTrue(v.CSS_URI == v.primitiveType)
|
681 |
# self.assertEqual((u'a', 'URI'), v._value)
|
682 |
# self.assertEqual(u'a', v.getStringValue())
|
683 |
#
|
684 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
685 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_IDENT'",
|
686 |
# v.setStringValue, *(v.CSS_IDENT, 'x'))
|
687 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
688 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_STRING'",
|
689 |
# v.setStringValue, *(v.CSS_STRING, '"x"'))
|
690 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
691 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_URI' to 'CSS_ATTR'",
|
692 |
# v.setStringValue, *(v.CSS_ATTR, 'x'))
|
693 |
#
|
694 |
# # CSS_ATTR
|
695 |
# v = cssutils.css.CSSPrimitiveValue('attr(old)')
|
696 |
# v.setStringValue(v.CSS_ATTR, 'a')
|
697 |
# self.assertTrue(v.CSS_ATTR == v.primitiveType)
|
698 |
# self.assertTrue('a' == v.getStringValue())
|
699 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
700 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_IDENT'",
|
701 |
# v.setStringValue, *(v.CSS_IDENT, 'x'))
|
702 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
703 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_STRING'",
|
704 |
# v.setStringValue, *(v.CSS_STRING, '"x"'))
|
705 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
706 |
# u"CSSPrimitiveValue: Cannot coerce primitiveType 'CSS_ATTR' to 'CSS_URI'",
|
707 |
# v.setStringValue, *(v.CSS_URI, 'x'))
|
708 |
#
|
709 |
# # TypeError as 'x' is no valid type
|
710 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
711 |
# u"CSSPrimitiveValue: stringType 'x' (UNKNOWN TYPE) is not a string type",
|
712 |
# v.setStringValue, *('x', 'brown'))
|
713 |
# # IndexError as 111 is no valid type
|
714 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
715 |
# u"CSSPrimitiveValue: stringType 111 (UNKNOWN TYPE) is not a string type",
|
716 |
# v.setStringValue, *(111, 'brown'))
|
717 |
# # CSS_PX is no string type
|
718 |
# self.assertRaisesMsg(xml.dom.InvalidAccessErr,
|
719 |
# u"CSSPrimitiveValue: stringType CSS_PX is not a string type",
|
720 |
# v.setStringValue, *(v.CSS_PX, 'brown'))
|
721 |
#
|
722 |
# def test_typeRGBColor(self):
|
723 |
# "RGBColor"
|
724 |
# v = cssutils.css.CSSPrimitiveValue('RGB(1, 5, 10)')
|
725 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
726 |
# self.assertEqual(u'rgb(1, 5, 10)', v.cssText)
|
727 |
#
|
728 |
# v = cssutils.css.CSSPrimitiveValue('rgb(1, 5, 10)')
|
729 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
730 |
# self.assertEqual(u'rgb(1, 5, 10)', v.cssText)
|
731 |
#
|
732 |
# v = cssutils.css.CSSPrimitiveValue('rgb(1%, 5%, 10%)')
|
733 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
734 |
# self.assertEqual(u'rgb(1%, 5%, 10%)', v.cssText)
|
735 |
#
|
736 |
# v = cssutils.css.CSSPrimitiveValue(' rgb( 1 ,5, 10 )')
|
737 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
738 |
# v = cssutils.css.CSSPrimitiveValue('rgb(1,5,10)')
|
739 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
740 |
# v = cssutils.css.CSSPrimitiveValue('rgb(1%, .5%, 10.1%)')
|
741 |
# self.assertEqual(v.CSS_RGBCOLOR, v.primitiveType)
|
742 |
#
|
743 |
# def test_reprANDstr(self):
|
744 |
# "CSSPrimitiveValue.__repr__(), .__str__()"
|
745 |
# v='111'
|
746 |
#
|
747 |
# s = cssutils.css.CSSPrimitiveValue(v)
|
748 |
#
|
749 |
# self.assertTrue(v in str(s))
|
750 |
# self.assertTrue('CSS_NUMBER' in str(s))
|
751 |
#
|
752 |
# s2 = eval(repr(s))
|
753 |
# self.assertTrue(isinstance(s2, s.__class__))
|
754 |
# self.assertTrue(v == s2.cssText)
|
755 |
#
|
756 |
#
|
757 |
#class CSSValueListTestCase(basetest.BaseTestCase):
|
758 |
#
|
759 |
# def test_init(self):
|
760 |
# "CSSValueList.__init__()"
|
761 |
# v = cssutils.css.CSSValue(cssText=u'red blue')
|
762 |
# self.assertTrue(v.CSS_VALUE_LIST == v.cssValueType)
|
763 |
# self.assertEqual('red blue', v.cssText)
|
764 |
#
|
765 |
# self.assertTrue(2 == v.length)
|
766 |
#
|
767 |
# item = v.item(0)
|
768 |
# item.setStringValue(item.CSS_IDENT, 'green')
|
769 |
# self.assertEqual('green blue', v.cssText)
|
770 |
#
|
771 |
# def test_numbers(self):
|
772 |
# "CSSValueList.cssText"
|
773 |
# tests = {
|
774 |
# u'0 0px -0px +0px': (u'0 0 0 0', 4),
|
775 |
# u'1 2 3 4': (None, 4),
|
776 |
# u'-1 -2 -3 -4': (None, 4),
|
777 |
# u'-1 2': (None, 2),
|
778 |
# u'-1px red "x"': (None, 3),
|
779 |
# u'a, b c': (None, 2),
|
780 |
# u'1px1 2% 3': (u'1px1 2% 3', 3),
|
781 |
# u'f(+1pX, -2, 5%) 1': (u'f(1px, -2, 5%) 1', 2),
|
782 |
# u'0 f()0': (u'0 f() 0', 3),
|
783 |
# u'f()0': (u'f() 0', 2),
|
784 |
# u'f()1%': (u'f() 1%', 2),
|
785 |
# u'f()1px': (u'f() 1px', 2),
|
786 |
# u'f()"str"': (u'f() "str"', 2),
|
787 |
# u'f()ident': (u'f() ident', 2),
|
788 |
# u'f()#123': (u'f() #123', 2),
|
789 |
# u'f()url()': (u'f() url()', 2),
|
790 |
# u'f()f()': (u'f() f()', 2),
|
791 |
# u'url(x.gif)0 0': (u'url(x.gif) 0 0', 3),
|
792 |
# u'url(x.gif)no-repeat': (u'url(x.gif) no-repeat', 2)
|
793 |
# }
|
794 |
# for test in tests:
|
795 |
# exp, num = tests[test]
|
796 |
# if not exp:
|
797 |
# exp = test
|
798 |
# v = cssutils.css.CSSValue(cssText=test)
|
799 |
# self.assertTrue(v.CSS_VALUE_LIST == v.cssValueType)
|
800 |
# self.assertEqual(num, v.length)
|
801 |
# self.assertEqual(exp, v.cssText)
|
802 |
#
|
803 |
# def test_reprANDstr(self):
|
804 |
# "CSSValueList.__repr__(), .__str__()"
|
805 |
# v='1px 2px'
|
806 |
#
|
807 |
# s = cssutils.css.CSSValue(v)
|
808 |
# self.assertTrue(isinstance(s, cssutils.css.CSSValueList))
|
809 |
#
|
810 |
# self.assertTrue('length=2' in str(s))
|
811 |
# self.assertTrue(v in str(s))
|
812 |
#
|
813 |
# # not "eval()"able!
|
814 |
# #s2 = eval(repr(s))
|
815 |
#
|
816 |
#
|
817 |
#if __name__ == '__main__':
|
818 |
# import unittest
|
819 |
# unittest.main()
|