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

# Source Code for Module cssutils.tests.test_cssnamespacerule

      1  """testcases for cssutils.css.CSSImportRule"""
      2  __author__ = '$LastChangedBy: cthedot $'
      3  __date__ = '$LastChangedDate: 2007-10-20 20:08:06 +0200 (Sa, 20 Okt 2007) $'
      4  __version__ = '$LastChangedRevision: 547 $'
      5
      6  import xml.dom
      7  import test_cssrule
      8  import cssutils
      9
     10 -class CSSNamespaceRuleTestCase(test_cssrule.CSSRuleTestCase):
     11
     12 -    def setUp(self):
     13          super(CSSNamespaceRuleTestCase, self).setUp()
     14          self.r = cssutils.css.CSSNamespaceRule()
     15          self.rRO = cssutils.css.CSSNamespaceRule(readonly=True)
     16          self.r_type = cssutils.css.CSSRule.NAMESPACE_RULE
     17          self.r_typeString = 'NAMESPACE_RULE'
     18
     19 -    def test_init(self):
     20          "CSSNamespaceRule.__init__()"
     21          super(CSSNamespaceRuleTestCase, self).test_init()
     22
     23          self.assertEqual(None, self.r.namespaceURI)
     24          self.assertEqual(u'', self.r.prefix)
     25          self.assertEqual(u'', self.r.cssText)
     26
     27 -    def test_InvalidModificationErr(self):
     28          "CSSNamespaceRule.cssText InvalidModificationErr"
     29          self._test_InvalidModificationErr(u'@namespace')
     30
     31 -    def test_incomplete(self):
     32          "CSSNamespaceRule (incomplete)"
     33          tests = {
     34              u'@namespace "uri': u'@namespace "uri";',
     35              u"@namespace url(x": u'@namespace "x";',
     36              u"@namespace url('x": u'@namespace "x";',
     37              u'@namespace url("x;': u'@namespace "x;";',
     38              u'@namespace url( "x;': u'@namespace "x;";',
     39              u'@namespace url("x ': u'@namespace "x ";',
     40              u'@namespace url(x ': u'@namespace "x";',
     41          }
     42          self.do_equal_p(tests) # parse
     43          tests = {
     44              u'@namespace "uri': xml.dom.SyntaxErr,
     45              u"@namespace url(x": xml.dom.SyntaxErr,
     46              u"@namespace url('x": xml.dom.SyntaxErr,
     47              u'@namespace url("x;': xml.dom.SyntaxErr,
     48              u'@namespace url( "x;': xml.dom.SyntaxErr,
     49              u'@namespace url("x ': xml.dom.SyntaxErr,
     50              u'@namespace url(x ': xml.dom.SyntaxErr
     51              }
     52          self.do_raise_r(tests) # set cssText
     53
     54 -    def test_initparameter(self):
     55          "CSSNamespaceRule.__init__(namespaceURI=None, prefix=u'')"
     56          r = cssutils.css.CSSNamespaceRule(u'uri', u'prefix')
     57          self.assertEqual(u'uri', r.namespaceURI)
     58          self.assertEqual(u'prefix', r.prefix)
     59          self.assertEqual(u'@namespace prefix "uri";', r.cssText)
     60
     61          r = cssutils.css.CSSNamespaceRule(u'uri')
     62          self.assertEqual(u'uri', r.namespaceURI)
     63          self.assertEqual(u'', r.prefix)
     64          self.assertEqual(u'@namespace "uri";', r.cssText)
     65
     66 -    def test_namespaceURI(self):
     67          "CSSNamespaceRule.namespaceURI"
     68          # set
     69          self.r.namespaceURI = 'x'
     70          self.assertEqual('x' , self.r.namespaceURI)
     71          self.assertEqual(u'@namespace "x";', self.r.cssText)
     72          # deprecated:
     73          self.assertEqual('x' , self.r.uri)
     74
     75          self.r.namespaceURI = '"' # weird but legal
     76          self.assertEqual(u'@namespace "\\"";', self.r.cssText)
     77
     78 -    def test_prefix(self):
     79          "CSSNamespaceRule.prefix"
     80          r = cssutils.css.CSSNamespaceRule()
     81          # set
     82          r.prefix = 'p'
     83          self.assertEqual('p' , r.prefix)
     84          self.assertEqual(u'', r.cssText)
     85          r.namespaceURI = 'u'
     86          self.assertEqual('p' , r.prefix)
     87          self.assertEqual(u'@namespace p "u";', r.cssText)
     88
     89 -    def test_cssText(self):
     90          "CSSNamespaceRule.cssText"
     91          tests = {
     92              u'@namespace p "u";': None,
     93              u"@namespace p 'u';": u'@namespace p "u";',
     94
     95              u'@\\namespace p "u";': u'@namespace p "u";',
     96              u'@NAMESPACE p "u";': u'@namespace p "u";',
     97
     98              u'@namespace  p  "u"  ;': u'@namespace p "u";',
     99              u'@namespace p"u";': u'@namespace p "u";',
    100              u'@namespace p "u";': u'@namespace p "u";',
    101
    102              u'@namespace/*1*/p/*2*/"u"/*3*/;': u'@namespace/*1*/ p/*2*/ "u"/*3*/;',
    103
    104              # deprecated
    105              u'@namespace p url(u);': u'@namespace p "u";',
    106              u'@namespace p url(\'u\');': u'@namespace p "u";',
    107              u'@namespace p url(\"u\");': u'@namespace p "u";',
    108              u'@namespace p url( \"u\" );': u'@namespace p "u";',
    109              }
    110          self.do_equal_p(tests)
    111          self.do_equal_r(tests)
    112
    113          tests = {
    114              u'@namespace;': xml.dom.SyntaxErr, # nothing
    115              u'@namespace p;': xml.dom.SyntaxErr, # no namespaceURI
    116              u'@namespace "u" p;': xml.dom.SyntaxErr, # order
    117              }
    118          self.do_raise_p(tests) # parse
    119          tests.update({
    120              u'@namespace p url(x)': xml.dom.SyntaxErr, # missing ;
    121              u'@namespace p "u"': xml.dom.SyntaxErr, # missing ;
    122              })
    123          self.do_raise_r(tests) # set cssText
    124
    125 -    def test_reprANDstr(self):
    126          "CSSNamespaceRule.__repr__(), .__str__()"
    127          namespaceURI=u'http://example.com'
    128          prefix=u'ex'
    129
    130          s = cssutils.css.CSSNamespaceRule(namespaceURI=namespaceURI, prefix=prefix)
    131
    132          self.assert_(namespaceURI in str(s))
    133          self.assert_(prefix in str(s))
    134
    135          s2 = eval(repr(s))
    136          self.assert_(isinstance(s2, s.__class__))
    137          self.assert_(namespaceURI == s2.namespaceURI)
    138          self.assert_(prefix == s2.prefix)
    139
    140
    141  if __name__ == '__main__':
    142      import unittest
    143      unittest.main()
    144