Package cssutils :: Package tests :: Module test_csscharsetrule
[hide private]
[frames] | no frames]

Source Code for Module cssutils.tests.test_csscharsetrule

  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   
17 -class CSSCharsetRuleTestCase(test_cssrule.CSSRuleTestCase):
18
19 - def setUp(self):
20 super(CSSCharsetRuleTestCase, self).setUp() 21 self.r = cssutils.css.CSSCharsetRule() 22 self.rRO = cssutils.css.CSSCharsetRule(readonly=True) 23 self.r_type = cssutils.css.CSSCharsetRule.CHARSET_RULE
24 25
26 - def test_init(self):
27 "CSSCharsetRule.__init__()" 28 super(CSSCharsetRuleTestCase, self).test_init() 29 self.assertEqual(None, self.r.encoding) 30 self.assertEqual(u'', self.r.cssText)
31 32
34 "CSSCharsetRule InvalidModificationErr" 35 self._test_InvalidModificationErr(u'@charset')
36 37
38 - def test_init_encoding(self):
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
61 - def test_encoding(self):
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) # also parse 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