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

Source Code for Module cssutils.tests.test_cssimportrule

  1  """ 
  2  testcases for cssutils.css.CSSImportRule 
  3  """ 
  4  __author__ = '$LastChangedBy: doerwalter $' 
  5  __date__ = '$LastChangedDate: 2007-08-02 22:58:23 +0200 (Do, 02 Aug 2007) $' 
  6  __version__ = '0.9.2a5, $LastChangedRevision: 160 $' 
  7   
  8   
  9  import xml.dom 
 10   
 11  import test_cssrule 
 12   
 13  import cssutils 
 14   
 15   
16 -class CSSImportRuleTestCase(test_cssrule.CSSRuleTestCase):
17
18 - def setUp(self):
19 super(CSSImportRuleTestCase, self).setUp() 20 self.r = cssutils.css.CSSImportRule() 21 self.rRO = cssutils.css.CSSImportRule(readonly=True) 22 self.r_type = cssutils.css.CSSImportRule.IMPORT_RULE
23 24
25 - def test_init(self):
26 "CSSImportRule.__init__()" 27 super(CSSImportRuleTestCase, self).test_init() 28 29 self.assertEqual(None, self.r.href) 30 self.assertEqual(None, self.r.hreftype) 31 self.assertEqual( 32 cssutils.stylesheets.MediaList, type(self.r.media)) 33 self.assertEqual(u'all', self.r.media.mediaText) 34 self.assertEqual(None, self.r.styleSheet) 35 self.assertEqual(u'', self.r.cssText)
36 37
39 "CSSImportRule.cssText InvalidModificationErr" 40 self._test_InvalidModificationErr(u'@import')
41 42
43 - def test_incomplete(self):
44 "CSSImportRule (incomplete)" 45 tests = { 46 u'@import "x.css': u'@import "x.css";', 47 u"@import 'x": u'@import "x";', 48 u"@import url(x": u'@import url(x);', 49 u"@import url('x": u'@import url(\'x\');', 50 u'@import url("x;': u'@import url("x;");', 51 u'@import url("x ': u'@import url("x ");', 52 u'@import url(x ': u'@import url(x);', 53 } 54 self.do_equal_p(tests) # parse
55 56
57 - def test_initparameter(self):
58 "CSSImportRule.__init__(href, media, hreftype)" 59 r = cssutils.css.CSSImportRule(u'x', u'print') 60 self.assertEqual(None, r.hreftype) 61 self.assertEqual(u'@import url(x) print;', r.cssText) 62 63 r = cssutils.css.CSSImportRule( 64 u'x', u'print, tv', hreftype='string') 65 self.assertEqual('string', r.hreftype) 66 self.assertEqual(u'@import "x" print, tv;', r.cssText) 67 68 r = cssutils.css.CSSImportRule(u'x', u'print, tv', hreftype='uri') 69 self.assertEqual('uri', r.hreftype) 70 self.assertEqual(u'@import url(x) print, tv;', r.cssText) 71 72 # media but no href 73 self.r = cssutils.css.CSSImportRule(mediaText=u'tv, screen') 74 self.assertEqual(cssutils.stylesheets.MediaList, 75 type(self.r.media)) 76 self.assertEqual(u'tv, screen', self.r.media.mediaText) 77 self.assertEqual(None, self.r.href) 78 self.assertEqual(u'', self.r.cssText)
79 80
81 - def test_href(self):
82 "CSSImportRule.href" 83 # set 84 self.r.href = 'x' 85 self.assertEqual('x' , self.r.href) 86 self.assertEqual( 87 u'@import url(x);', self.r.cssText) 88 89 # http 90 self.r.href = 'http://www.example.com/x?css=z&v=1' 91 self.assertEqual( 92 'http://www.example.com/x?css=z&v=1' , self.r.href) 93 self.assertEqual( 94 u'@import url(http://www.example.com/x?css=z&v=1);', 95 self.r.cssText) 96 97 # also if hreftype changed 98 self.r.hreftype='string' 99 self.assertEqual( 100 'http://www.example.com/x?css=z&v=1' , self.r.href) 101 self.assertEqual( 102 u'@import "http://www.example.com/x?css=z&v=1";', 103 self.r.cssText) 104 # strange and probably invalid uri with " 105 self.r.href = 'XXX"123' 106 self.assertEqual( 107 u'@import "XXX\\"123";', 108 self.r.cssText)
109 110
111 - def test_hreftype(self):
112 "CSSImportRule.hreftype" 113 self.r = cssutils.css.CSSImportRule() 114 115 self.r.cssText = '@import /*1*/url(org) /*2*/;' 116 self.assertEqual('uri', self.r.hreftype) 117 self.assertEqual(u'@import /*1*/url(org) /*2*/;', self.r.cssText) 118 119 self.r.cssText = '@import /*1*/"org" /*2*/;' 120 self.assertEqual('string', self.r.hreftype) 121 self.assertEqual(u'@import /*1*/"org" /*2*/;', self.r.cssText) 122 123 self.r.href = 'new' 124 self.assertEqual(u'@import /*1*/"new" /*2*/;', self.r.cssText) 125 126 self.r.hreftype='uri' 127 self.assertEqual(u'@import /*1*/url(new) /*2*/;', self.r.cssText)
128 129
130 - def test_media(self):
131 "CSSImportRule.media" 132 self.r.href = 'x' # @import url(x) 133 134 # only medialist allowed 135 self.assertRaises(AttributeError, 136 self.r.__setattr__, 'media', None) 137 138 # set mediaText instead 139 self.r.media.mediaText = 'print' 140 self.assertEqual(u'@import url(x) print;', self.r.cssText)
141 142
143 - def test_cssText1(self):
144 "CSSImportRule.cssText 1" 145 tests = { 146 u'''@import "str";''': None, 147 u'''@\\import "str";''': u'''@import "str";''', 148 u'''@IMPORT "str";''': u'''@import "str";''', 149 150 u'''@import 'str';''': u'''@import "str";''', 151 u'''@import 'str' ;''': u'''@import "str";''', 152 u'''@import "str";''': None, 153 u'''@import "str" ;''': u'''@import "str";''', 154 155 u'''@import /*1*/"str" /*2*/;''': None, 156 u'''@import/*1*/ "str"/*2*/ ;''': 157 u'''@import /*1*/"str" /*2*/;''', 158 159 u'''@import "str";''': None, 160 u'''@import "str" tv, print;''': None, 161 u'''@import "str" tv, print, all;''': u'''@import "str";''', 162 u'''@import "str" handheld, all;''': None, 163 u'''@import "str" all, handheld;''': None, 164 165 u'''@import url(x.css);''': None, 166 } 167 self.do_equal_r(tests) # set cssText 168 tests.update({ 169 u'@import "x.css"': '@import "x.css";', # no ; 170 u"@import 'x.css'": '@import "x.css";', # no ; 171 u'@import url(x.css)': '@import url(x.css);', # no ; 172 u'@import "x.css" tv': '@import "x.css" tv;', 173 u'@import "x;': '@import "x;";', # no "! 174 }) 175 self.do_equal_p(tests) # parse 176 177 tests = { 178 u'''@import;''': xml.dom.SyntaxErr, 179 u'''@import all;''': xml.dom.SyntaxErr, 180 u'''@import;''': xml.dom.SyntaxErr, 181 182 u'''@import x";''': xml.dom.SyntaxErr, 183 184 u'''@import "str" ,all;''': xml.dom.SyntaxErr, 185 u'''@import "str" all,;''': xml.dom.SyntaxErr, 186 u'''@import "str" all tv;''': xml.dom.SyntaxErr, 187 } 188 self.do_raise_p(tests) # parse 189 tests.update({ 190 u'@import "x.css"': xml.dom.SyntaxErr, 191 u"@import 'x.css'": xml.dom.SyntaxErr, 192 u'@import url(x.css)': xml.dom.SyntaxErr, 193 u'@import "x.css" tv': xml.dom.SyntaxErr, 194 u'@import "x;': xml.dom.SyntaxErr, 195 u'''@import url("x);''': xml.dom.SyntaxErr, 196 }) 197 self.do_raise_r(tests) # set cssText
198 199 200 if __name__ == '__main__': 201 import unittest 202 unittest.main() 203