1
2 """tests for parsing which does not raise Exceptions normally
3 """
4 __author__ = '$LastChangedBy: cthedot $'
5 __date__ = '$LastChangedDate: 2007-11-06 22:24:06 +0100 (Di, 06 Nov 2007) $'
6 __version__ = '$LastChangedRevision: 654 $'
7
8 import xml.dom
9 import basetest
10 import cssutils
11
13
15 "cssutils encodings"
16 css1 = ur'''@charset "utf-8";
17 /* ä */'''
18 s = cssutils.parseString(css1)
19 css2 = unicode(s.cssText, 'utf-8')
20 self.assertEqual(css1, css2)
21
22 s = cssutils.parseString(css2)
23 s.cssRules[0].encoding='ascii'
24 css3 = ur'''@charset "ascii";
25 /* \0000E4 */'''
26 self.assertEqual(css3, unicode(s.cssText, 'utf-8'))
27
29 "cssutils.parseString(INVALID_STRING)"
30 validfromhere = '@namespace "x";'
31 csss = (
32 u'''@charset "ascii
33 ;''' + validfromhere,
34 u'''@charset 'ascii
35 ;''' + validfromhere,
36 u'''@namespace "y
37 ;''' + validfromhere,
38 u'''@import "y
39 ;''' + validfromhere,
40 u'''@import url('a
41 );''' + validfromhere,
42 u'''@unknown "y
43 ;''' + validfromhere)
44 for css in csss:
45 s = cssutils.parseString(css)
46 self.assertEqual(validfromhere, s.cssText)
47
48 css = u'''a { font-family: "Courier
49 ; }'''
50 s = cssutils.parseString(css)
51 self.assertEqual(u'', s.cssText)
52
54 "cssutils.parseString(INVALID_CSS)"
55 tests = {
56 u'a {color: blue}} a{color: red} a{color: green}':
57 u'''a {
58 color: blue
59 }
60 a {
61 color: green
62 }'''
63 }
64
65 for css in tests:
66 exp = tests[css]
67 if exp == None:
68 exp = css
69 s = cssutils.parseString(css)
70 self.assertEqual(exp, s.cssText)
71
73 "cssutils.parseString(href, media)"
74 s = cssutils.parseString("a{}", href="file:foo.css", media="screen, projection, tv")
75 self.assertEqual(s.href, "file:foo.css")
76 self.assertEqual(s.media.mediaText, "screen, projection, tv")
77
78 s = cssutils.parseString("a{}", href="file:foo.css", media=["screen", "projection", "tv"])
79 self.assertEqual(s.media.mediaText, "screen, projection, tv")
80
84
85
86 if __name__ == '__main__':
87 import unittest
88 unittest.main()
89