1 """
2 testcases for cssutils.css.CSSImportRule
3 """
4 __author__ = '$LastChangedBy: cthedot $'
5 __date__ = '$LastChangedDate: 2007-10-20 20:08:06 +0200 (Sa, 20 Okt 2007) $'
6 __version__ = '$LastChangedRevision: 547 $'
7
8 import xml.dom
9 import test_cssrule
10 import cssutils
11
13
20
32
36
37 - def test_cssText(self):
38 "CSSImportRule.cssText"
39 tests = {
40 u'''@import "str";''': None,
41 u'''@\\import "str";''': u'''@import "str";''',
42 u'''@IMPORT "str";''': u'''@import "str";''',
43
44 u'''@import 'str';''': u'''@import "str";''',
45 u'''@import 'str' ;''': u'''@import "str";''',
46 u'''@import "str";''': None,
47 u'''@import "str" ;''': u'''@import "str";''',
48
49 u'''@import /*1*/"str"/*2*/;''': None,
50 u'''@import/*1*/ "str" /*2*/ ;''':
51 u'''@import /*1*/"str"/*2*/;''',
52
53 u'''@import "str";''': None,
54 u'''@import "str" tv, print;''': None,
55 u'''@import "str" tv, print, all;''': u'''@import "str";''',
56 u'''@import "str" handheld, all;''': u'''@import "str" all, handheld;''',
57 u'''@import "str" all, handheld;''': None,
58
59 u'''@import "str" not tv;''': None,
60 u'''@import "str" only tv;''': None,
61 u'''@import "str" only tv and (color: 2);''': None,
62
63 u'''@import url(x.css);''': None,
64 }
65 self.do_equal_r(tests)
66 tests.update({
67 u'@import "x.css" tv': '@import "x.css" tv;',
68 u'@import "x.css"': '@import "x.css";',
69 u"@import 'x.css'": '@import "x.css";',
70 u'@import url(x.css)': '@import url(x.css);',
71 u'@import "x;': '@import "x;";',
72 })
73 self.do_equal_p(tests)
74
75 tests = {
76 u'''@import;''': xml.dom.SyntaxErr,
77 u'''@import all;''': xml.dom.SyntaxErr,
78 u'''@import;''': xml.dom.SyntaxErr,
79 u'''@import x";''': xml.dom.SyntaxErr,
80 u'''@import "str" ,all;''': xml.dom.SyntaxErr,
81 u'''@import "str" all,;''': xml.dom.SyntaxErr,
82 u'''@import "str" all tv;''': xml.dom.SyntaxErr,
83 }
84 self.do_raise_p(tests)
85 tests.update({
86 u'@import "x.css"': xml.dom.SyntaxErr,
87 u"@import 'x.css'": xml.dom.SyntaxErr,
88 u'@import url(x.css)': xml.dom.SyntaxErr,
89 u'@import "x.css" tv': xml.dom.SyntaxErr,
90 u'@import "x;': xml.dom.SyntaxErr,
91 u'''@import url("x);''': xml.dom.SyntaxErr,
92 })
93 self.do_raise_r(tests)
94
96 "CSSImportRule (incomplete)"
97 tests = {
98 u'@import "x.css': u'@import "x.css";',
99 u"@import 'x": u'@import "x";',
100
101 u"@import url(x": u'@import url(x);',
102 u"@import url('x": u'@import url(x);',
103 u'@import url("x;': u'@import url("x;");',
104 u'@import url( "x;': u'@import url("x;");',
105 u'@import url("x ': u'@import url("x ");',
106 u'@import url(x ': u'@import url(x);',
107 u'''@import "a
108 @import "b";
109 @import "c";''': u'@import "c";'
110 }
111 self.do_equal_p(tests, raising=False)
112
114 "CSSImportRule.__init__(href, media, hreftype)"
115 r = cssutils.css.CSSImportRule(u'x', u'print')
116 self.assertEqual(None, r.hreftype)
117 self.assertEqual(u'@import url(x) print;', r.cssText)
118
119 r = cssutils.css.CSSImportRule(
120 u'x', u'print, tv', hreftype='string')
121 self.assertEqual('string', r.hreftype)
122 self.assertEqual(u'@import "x" print, tv;', r.cssText)
123
124 r = cssutils.css.CSSImportRule(u'x', u'print, tv', hreftype='uri')
125 self.assertEqual('uri', r.hreftype)
126 self.assertEqual(u'@import url(x) print, tv;', r.cssText)
127
128
129 self.r = cssutils.css.CSSImportRule(mediaText=u'tv, screen')
130 self.assertEqual(cssutils.stylesheets.MediaList,
131 type(self.r.media))
132 self.assertEqual(u'tv, screen', self.r.media.mediaText)
133 self.assertEqual(None, self.r.href)
134 self.assertEqual(u'', self.r.cssText)
135
137 "CSSImportRule.href"
138
139 self.r.href = 'x'
140 self.assertEqual('x' , self.r.href)
141 self.assertEqual(
142 u'@import url(x);', self.r.cssText)
143
144
145 self.r.href = 'http://www.example.com/x?css=z&v=1'
146 self.assertEqual(
147 'http://www.example.com/x?css=z&v=1' , self.r.href)
148 self.assertEqual(
149 u'@import url(http://www.example.com/x?css=z&v=1);',
150 self.r.cssText)
151
152
153 self.r.hreftype='string'
154 self.assertEqual(
155 'http://www.example.com/x?css=z&v=1' , self.r.href)
156 self.assertEqual(
157 u'@import "http://www.example.com/x?css=z&v=1";',
158 self.r.cssText)
159
160 self.r.href = 'XXX"123'
161 self.assertEqual(
162 u'@import "XXX\\"123";',
163 self.r.cssText)
164
166 "CSSImportRule.hreftype"
167 self.r = cssutils.css.CSSImportRule()
168
169 self.r.cssText = '@import /*1*/url(org) /*2*/;'
170 self.assertEqual('uri', self.r.hreftype)
171 self.assertEqual(u'@import /*1*/url(org)/*2*/;', self.r.cssText)
172
173 self.r.cssText = '@import /*1*/"org" /*2*/;'
174 self.assertEqual('string', self.r.hreftype)
175 self.assertEqual(u'@import /*1*/"org"/*2*/;', self.r.cssText)
176
177 self.r.href = 'new'
178 self.assertEqual(u'@import /*1*/"new"/*2*/;', self.r.cssText)
179
180 self.r.hreftype='uri'
181 self.assertEqual(u'@import /*1*/url(new)/*2*/;', self.r.cssText)
182
194
209
210
211 if __name__ == '__main__':
212 import unittest
213 unittest.main()
214