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

Source Code for Module cssutils.tests.test_csspagerule

  1  """testcases for cssutils.css.CSSPageRule 
  2  """ 
  3  __author__ = '$LastChangedBy: doerwalter $' 
  4  __date__ = '$LastChangedDate: 2007-08-02 22:58:23 +0200 (Do, 02 Aug 2007) $' 
  5  __version__ = '0.9.2a5, $LastChangedRevision: 160 $' 
  6   
  7   
  8  import xml.dom 
  9   
 10  import test_cssrule 
 11   
 12  import cssutils 
 13   
 14   
15 -class CSSPageRuleTestCase(test_cssrule.CSSRuleTestCase):
16
17 - def setUp(self):
18 super(CSSPageRuleTestCase, self).setUp() 19 self.r = cssutils.css.CSSPageRule() 20 self.rRO = cssutils.css.CSSPageRule(readonly=True) 21 self.r_type = cssutils.css.CSSPageRule.PAGE_RULE
22 23
24 - def test_init(self):
25 "CSSPageRule.__init__()" 26 super(CSSPageRuleTestCase, self).test_init() 27 28 r = cssutils.css.CSSPageRule() 29 self.assertEqual(u'', r.selectorText) 30 self.assertEqual(cssutils.css.CSSStyleDeclaration, type(r.style)) 31 self.assertEqual(r, r.style.parentRule) 32 33 # until any properties 34 self.assertEqual(u'', r.cssText)
35 36
38 "CSSPageRule.cssText InvalidModificationErr" 39 self._test_InvalidModificationErr(u'@page') 40 tests = { 41 u'@pag\e {}': xml.dom.InvalidModificationErr, 42 } 43 self.do_raise_r(tests)
44 45
46 - def test_incomplete(self):
47 "CSSPageRule (incomplete)" 48 tests = { 49 u'@page :left { ': 50 u'', # no } and no content 51 u'@page :left { color: red': 52 u'@page :left {\n color: red\n }', # no } 53 } 54 self.do_equal_p(tests) # parse
55 56
57 - def test_cssText(self):
58 "CSSPageRule.cssText" 59 EXP = u'@page :%s {\n margin: 0\n }' 60 tests = { 61 u'@page {margin:0;}': u'@page {\n margin: 0\n }', 62 63 u'@page:left{margin:0;}': EXP % u'left', 64 u'@page :left { margin: 0 }': EXP % u'left', 65 u'@page :right { margin: 0 }': EXP % u'right', 66 u'@page :first { margin: 0 }': EXP % u'first', 67 u'@page :UNKNOWNIDENT { margin: 0 }': EXP % u'UNKNOWNIDENT', 68 69 u'@PAGE:left{margin:0;}': u'@page :left {\n margin: 0\n }', 70 u'@\\page:left{margin:0;}': u'@page :left {\n margin: 0\n }', 71 72 u'@page/*1*/:left/*2*/{margin:0;}': 73 u'@page /*1*/:left/*2*/ {\n margin: 0\n }', 74 } 75 self.do_equal_r(tests) 76 self.do_equal_p(tests) 77 78 tests = { 79 u'@page : {}': xml.dom.SyntaxErr, 80 u'@page :/*1*/left {}': xml.dom.SyntaxErr, 81 u'@page : left {}': xml.dom.SyntaxErr, 82 u'@page :left :right {}': xml.dom.SyntaxErr, 83 u'@page :left a {}': xml.dom.SyntaxErr, 84 85 u'@page :left;': xml.dom.SyntaxErr, 86 u'@page :left }': xml.dom.SyntaxErr, 87 } 88 self.do_raise_p(tests) # parse 89 tests.update({ 90 u'@page :left {': xml.dom.SyntaxErr, # no } 91 }) 92 self.do_raise_r(tests) # set cssText
93 94 95
96 - def test_selectorText(self):
97 "CSSPageRule.selectorText" 98 tests = { 99 u'': u'', 100 u':left': None, 101 u':right': None, 102 u':first': None, 103 u':UNKNOWNIDENT': None, 104 105 u' :left': u':left', 106 u':left': u':left', 107 u'/*1*/:left/*a*/': u':left', 108 u'/*1*/ :left /*a*/ /*b*/': u':left', 109 u':left/*a*/': u':left', 110 u'/*1*/:left': u':left', 111 } 112 self.do_equal_r(tests, att='selectorText') 113 114 tests = { 115 u':': xml.dom.SyntaxErr, 116 u':/*1*/left': xml.dom.SyntaxErr, 117 u': left': xml.dom.SyntaxErr, 118 u':left :right': xml.dom.SyntaxErr, 119 u':left a': xml.dom.SyntaxErr, 120 } 121 self.do_raise_r(tests, att='_setSelectorText')
122 123
124 - def test_style(self):
125 "CSSPageRule.style" 126 d = cssutils.css.CSSStyleDeclaration() 127 self.r.style = d 128 self.assertEqual(d, self.r.style) 129 self.assertEqual(self.r, d.parentRule)
130 131
132 - def test_properties(self):
133 "CSSPageRule.style properties" 134 r = cssutils.css.CSSPageRule() 135 r.style.cssText = ''' 136 margin-top: 0; 137 margin-right: 0; 138 margin-bottom: 0; 139 margin-left: 0; 140 margin: 0; 141 142 page-break-before: auto; 143 page-break-after: auto; 144 page-break-inside: auto; 145 146 orphans: 3; 147 widows: 3; 148 ''' 149 exp = u'''@page { 150 margin-top: 0; 151 margin-right: 0; 152 margin-bottom: 0; 153 margin-left: 0; 154 margin: 0; 155 page-break-before: auto; 156 page-break-after: auto; 157 page-break-inside: auto; 158 orphans: 3; 159 widows: 3 160 }''' 161 self.assertEqual(exp, r.cssText)
162 163 164 if __name__ == '__main__': 165 import unittest 166 unittest.main() 167