1 """
2 testcases for cssutils.css.CSSCharsetRule
3 """
4 __author__ = '$LastChangedBy: doerwalter $'
5 __date__ = '$LastChangedDate: 2007-08-02 22:58:23 +0200 (Do, 02 Aug 2007) $'
6 __version__ = '0.9.2a1, $LastChangedRevision: 160 $'
7
8
9 import re
10 import xml.dom
11
12 import test_cssrule
13
14 import cssutils.css
15
16
18
24
25
31
32
36
37
39 "CSSCharsetRule.__init__(encoding)"
40 for enc in (None, u'UTF-8', u'utf-8', u'iso-8859-1', u'ascii'):
41 r = cssutils.css.CSSCharsetRule(enc)
42 if enc is None:
43 self.assertEqual(None, r.encoding)
44 self.assertEqual(u'', r.cssText)
45 else:
46 self.assertEqual(enc.lower(), r.encoding)
47 self.assertEqual(
48 u'@charset "%s";' % enc.lower(), r.cssText)
49
50 for enc in (' ascii ', ' ascii', 'ascii '):
51 self.assertRaisesEx(xml.dom.SyntaxErr,
52 cssutils.css.CSSCharsetRule, enc,
53 exc_pattern=re.compile("Syntax Error"))
54
55 for enc in (u'unknown', ):
56 self.assertRaisesEx(xml.dom.SyntaxErr,
57 cssutils.css.CSSCharsetRule, enc,
58 exc_pattern=re.compile("Unknown \(Python\) encoding"))
59
60
62 "CSSCharsetRule.encoding"
63 for enc in (u'UTF-8', u'utf-8', u'iso-8859-1', u'ascii'):
64 self.r.encoding = enc
65 self.assertEqual(enc.lower(), self.r.encoding)
66 self.assertEqual(
67 u'@charset "%s";' % enc.lower(), self.r.cssText)
68
69 for enc in (None,' ascii ', ' ascii', 'ascii '):
70 self.assertRaisesEx(xml.dom.SyntaxErr,
71 self.r.__setattr__, 'encoding', enc,
72 exc_pattern=re.compile("Syntax Error"))
73
74 for enc in (u'unknown', ):
75 self.assertRaisesEx(xml.dom.SyntaxErr,
76 self.r.__setattr__, 'encoding', enc,
77 exc_pattern=re.compile("Unknown \(Python\) encoding"))
78
79
80 - def test_cssText(self):
81 """CSSCharsetRule.cssText
82
83 setting cssText is ok to use @CHARSET or other but a file
84 using parse MUST use ``@charset "ENCODING";``
85 """
86 tests = {
87 u'@charset "utf-8";': None,
88 u'@CHARSET "UTF-8";': '@charset "utf-8";',
89 }
90 self.do_equal_r(tests)
91 self.do_equal_p(tests)
92
93 tests = {
94 u'''@charset 'utf-8';''': xml.dom.SyntaxErr,
95 u'''@charset /*1*/"utf-8"/*2*/;''': xml.dom.SyntaxErr,
96 u'''@charset /*1*/"utf-8";''': xml.dom.SyntaxErr,
97 u'''@charset "utf-8"/*2*/;''': xml.dom.SyntaxErr,
98 u'@charset { utf-8 }': xml.dom.SyntaxErr,
99 u'@charset;"': xml.dom.SyntaxErr,
100 u'@charset "utf-8"': xml.dom.SyntaxErr,
101 u'@charset a;': xml.dom.SyntaxErr,
102 u'@charset /**/;': xml.dom.SyntaxErr,
103 }
104 self.do_raise_r(tests)
105
106
107 if __name__ == '__main__':
108 import unittest
109 unittest.main()
110