Home | Trees | Indices | Help |
|
---|
|
1 """ 2 testcases for cssutils.css.CSSMediaRule 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 1517214 215 216 if __name__ == '__main__': 217 import unittest 218 unittest.main() 21919 super(CSSMediaRuleTestCase, self).setUp() 20 self.r = cssutils.css.CSSMediaRule() 21 self.rRO = cssutils.css.CSSMediaRule(readonly=True) 22 self.r_type = cssutils.css.CSSMediaRule.MEDIA_RULE 23 # for tests 24 self.stylerule = cssutils.css.CSSStyleRule() 25 self.stylerule.cssText = u'a {}'26 2729 "CSSMediaRule.__init__()" 30 super(CSSMediaRuleTestCase, self).test_init() 31 32 r = cssutils.css.CSSMediaRule() 33 self.assertEqual(cssutils.css.CSSRuleList, type(r.cssRules)) 34 self.assertEqual([], r.cssRules) 35 36 self.assertEqual(cssutils.stylesheets.MediaList, type(r.media)) 37 self.assertEqual([], r.media) 38 39 # until any rules 40 self.assertEqual(u'', r.cssText)41 42 46 4749 "CSSMediaRule (incomplete)" 50 tests = { 51 u'@media all { @unknown;': # no } 52 u'@media all {\n @unknown;\n }', 53 u'@media all { a {}': # no } 54 u'@media all {\n a {}\n }', 55 } 56 self.do_equal_p(tests) # parse5759 "CSSMediaRule.cssRules" 60 r = cssutils.css.CSSMediaRule() 61 self.assertEqual([], r.cssRules) 62 ir = cssutils.css.CSSImportRule() 63 r.cssRules.append(ir) 64 self.assertEqual([ir], r.cssRules)65 6668 "CSSMediaRule.cssText" 69 tests = { 70 u'''@media all {}''': u'', 71 u'''@media all{}''': u'', 72 u'''@media/*x*/all{}''': u'', 73 # TODO: u'@media all { @x{': u'@media all {\n @x{}\n }', 74 u'''@media all { a{} }''': u'''@media all {\n a {}\n }''', 75 u'''@MEDIA all { a{} }''': u'''@media all {\n a {}\n }''', 76 u'''@\\media all { a{} }''': u'''@media all {\n a {}\n }''', 77 u'''@media all {@x some;a{color: red;}b{color: green;}}''': 78 u'''@media all { 79 @x some; 80 a { 81 color: red 82 } 83 b { 84 color: green 85 } 86 }''', 87 } 88 self.do_equal_p(tests) 89 self.do_equal_r(tests) 90 91 tests = { 92 u'@media;': xml.dom.SyntaxErr, 93 u'@media all;': xml.dom.SyntaxErr, 94 u'@media all; @x{}': xml.dom.SyntaxErr, 95 # no medialist 96 u'@media {}': xml.dom.SyntaxErr, 97 u'@media/*only comment*/{}': xml.dom.SyntaxErr, 98 99 u'@media all { @charset "x"; a{}}': xml.dom.HierarchyRequestErr, 100 u'@media all { @import "x"; a{}}': xml.dom.HierarchyRequestErr, 101 u'@media all { @media all {} }': xml.dom.HierarchyRequestErr, 102 } 103 self.do_raise_p(tests) 104 self.do_raise_r(tests) 105 106 tests = { 107 # extra stuff 108 u'@media all { , }': xml.dom.SyntaxErr, 109 u'@media all { x{} } a{}': xml.dom.SyntaxErr, 110 } 111 self.do_raise_r(tests) 112 113 m = cssutils.css.CSSMediaRule() 114 m.cssText = u'''@media all {@x; /*1*/a{color: red;}''' 115 for r in m.cssRules: 116 self.assertEqual(m, r.parentRule)117 118120 "CSSMediaRule.deleteRule" 121 # see CSSStyleSheet.deleteRule 122 m = cssutils.css.CSSMediaRule() 123 m.cssText = u'''@media all { 124 a {} 125 /* x */ 126 b {} 127 c {} 128 d {} 129 }''' 130 self.assertEqual(5, m.cssRules.length) 131 self.assertRaises(xml.dom.IndexSizeErr, m.deleteRule, 5) 132 133 # end -1 134 # check parentRule 135 r = m.cssRules[-1] 136 self.assertEqual(m, r.parentRule) 137 m.deleteRule(-1) 138 self.assertEqual(None, r.parentRule) 139 140 self.assertEqual(4, m.cssRules.length) 141 self.assertEqual( 142 u'@media all {\n a {}\n /* x */\n b {}\n c {}\n }', m.cssText) 143 # beginning 144 m.deleteRule(0) 145 self.assertEqual(3, m.cssRules.length) 146 self.assertEqual(u'@media all {\n /* x */\n b {}\n c {}\n }', m.cssText) 147 # middle 148 m.deleteRule(1) 149 self.assertEqual(2, m.cssRules.length) 150 self.assertEqual(u'@media all {\n /* x */\n c {}\n }', m.cssText) 151 # end 152 m.deleteRule(1) 153 self.assertEqual(1, m.cssRules.length) 154 self.assertEqual(u'@media all {\n /* x */\n }', m.cssText)155 156158 "CSSMediaRule.insertRule" 159 # see CSSStyleSheet.insertRule 160 r = cssutils.css.CSSMediaRule() 161 charsetrule = cssutils.css.CSSCharsetRule('ascii') 162 importrule = cssutils.css.CSSImportRule('x') 163 mediarule = cssutils.css.CSSMediaRule() 164 unknownrule = cssutils.css.CSSUnknownRule('@x;') 165 stylerule = cssutils.css.CSSStyleRule('a') 166 comment1 = cssutils.css.CSSComment(u'/*1*/') 167 comment2 = cssutils.css.CSSComment(u'/*2*/') 168 169 # hierarchy 170 self.assertRaises(xml.dom.HierarchyRequestErr, 171 r.insertRule, charsetrule, 0) 172 self.assertRaises(xml.dom.HierarchyRequestErr, 173 r.insertRule, importrule, 0) 174 self.assertRaises(xml.dom.HierarchyRequestErr, 175 r.insertRule, mediarule, 0) 176 177 # start insert 178 r.insertRule(stylerule, 0) 179 self.assertEqual(r, stylerule.parentRule) 180 # before 181 r.insertRule(comment1, 0) 182 self.assertEqual(r, comment1.parentRule) 183 # end explicit 184 r.insertRule(unknownrule, 2) 185 self.assertEqual(r, unknownrule.parentRule) 186 # end implicit 187 r.insertRule(comment2) 188 self.assertEqual(r, comment2.parentRule) 189 self.assertEqual( 190 '@media all {\n /*1*/\n a {}\n @x;\n /*2*/\n }', 191 r.cssText) 192 193 # index 194 self.assertRaises(xml.dom.IndexSizeErr, 195 r.insertRule, stylerule, -1) 196 self.assertRaises(xml.dom.IndexSizeErr, 197 r.insertRule, stylerule, r.cssRules.length + 1)198 199201 "CSSMediaRule.media" 202 # see CSSImportRule.media 203 204 # setting not allowed 205 self.assertRaises(AttributeError, 206 self.r.__setattr__, 'media', None) 207 self.assertRaises(AttributeError, 208 self.r.__setattr__, 'media', 0) 209 210 # set mediaText instead 211 self.r.media.mediaText = 'print' 212 self.r.insertRule(self.stylerule) 213 self.assertEqual(u'@media print {\n a {}\n }', self.r.cssText)
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0beta1 on Sat Aug 04 12:58:36 2007 | http://epydoc.sourceforge.net |