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
17
23
24
36
37
41
42
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)
55
56
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
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
82 "CSSImportRule.href"
83
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
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
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
105 self.r.href = 'XXX"123'
106 self.assertEqual(
107 u'@import "XXX\\"123";',
108 self.r.cssText)
109
110
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
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)
168 tests.update({
169 u'@import "x.css"': '@import "x.css";',
170 u"@import 'x.css'": '@import "x.css";',
171 u'@import url(x.css)': '@import url(x.css);',
172 u'@import "x.css" tv': '@import "x.css" tv;',
173 u'@import "x;': '@import "x;";',
174 })
175 self.do_equal_p(tests)
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)
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)
198
199
200 if __name__ == '__main__':
201 import unittest
202 unittest.main()
203