1 """
2 testcases for cssutils.css.CSSCharsetRule
3 """
4 __author__ = '$LastChangedBy: cthedot $'
5 __date__ = '$LastChangedDate: 2008-01-19 22:58:52 +0100 (Sa, 19 Jan 2008) $'
6 __version__ = '$LastChangedRevision: 884 $'
7
8 import re
9 import xml.dom
10 import test_cssrule
11 import cssutils.css
12
14
21
29
33
35 "CSSCharsetRule.__init__(encoding)"
36 for enc in (None, u'UTF-8', u'utf-8', u'iso-8859-1', u'ascii'):
37 r = cssutils.css.CSSCharsetRule(enc)
38 if enc is None:
39 self.assertEqual(None, r.encoding)
40 self.assertEqual(u'', r.cssText)
41 else:
42 self.assertEqual(enc.lower(), r.encoding)
43 self.assertEqual(
44 u'@charset "%s";' % enc.lower(), r.cssText)
45
46 for enc in (' ascii ', ' ascii', 'ascii '):
47 self.assertRaisesEx(xml.dom.SyntaxErr,
48 cssutils.css.CSSCharsetRule, enc,
49 exc_pattern=re.compile("Syntax Error"))
50
51 for enc in (u'unknown', ):
52 self.assertRaisesEx(xml.dom.SyntaxErr,
53 cssutils.css.CSSCharsetRule, enc,
54 exc_pattern=re.compile("Unknown \(Python\) encoding"))
55
57 "CSSCharsetRule.encoding"
58 for enc in (u'UTF-8', u'utf-8', u'iso-8859-1', u'ascii'):
59 self.r.encoding = enc
60 self.assertEqual(enc.lower(), self.r.encoding)
61 self.assertEqual(
62 u'@charset "%s";' % enc.lower(), self.r.cssText)
63
64 for enc in (None,' ascii ', ' ascii', 'ascii '):
65 self.assertRaisesEx(xml.dom.SyntaxErr,
66 self.r.__setattr__, 'encoding', enc,
67 exc_pattern=re.compile("Syntax Error"))
68
69 for enc in (u'unknown', ):
70 self.assertRaisesEx(xml.dom.SyntaxErr,
71 self.r.__setattr__, 'encoding', enc,
72 exc_pattern=re.compile("Unknown \(Python\) encoding"))
73
74 - def test_cssText(self):
75 """CSSCharsetRule.cssText
76
77 setting cssText is ok to use @CHARSET or other but a file
78 using parse MUST use ``@charset "ENCODING";``
79 """
80 tests = {
81 u'@charset "utf-8";': None,
82 u"@charset 'utf-8';": u'@charset "utf-8";',
83 }
84 self.do_equal_r(tests)
85 self.do_equal_p(tests)
86
87 tests = {
88 u'@charset;"': xml.dom.InvalidModificationErr,
89 u'@CHARSET "UTF-8";': xml.dom.InvalidModificationErr,
90 u'''@charset /*1*/"utf-8"/*2*/;''': xml.dom.SyntaxErr,
91 u'''@charset /*1*/"utf-8";''': xml.dom.SyntaxErr,
92 u'''@charset "utf-8"/*2*/;''': xml.dom.SyntaxErr,
93 u'@charset { utf-8 }': xml.dom.SyntaxErr,
94 u'@charset "utf-8"': xml.dom.SyntaxErr,
95 u'@charset a;': xml.dom.SyntaxErr,
96 u'@charset /**/;': xml.dom.SyntaxErr
97 }
98 self.do_raise_r(tests)
99
101 "CSSCharsetRule.__repr__()"
102 self.r.encoding = 'utf-8'
103 self.assert_('utf-8' in repr(self.r))
104
116
117 if __name__ == '__main__':
118 import unittest
119 unittest.main()
120