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

# Source Code for Module cssutils.tests.test_util

     1  # -*- coding: iso-8859-1 -*-
     2  """
     3  testcases for cssutils.util
     4  """
     5  __author__ = '$LastChangedBy: cthedot $'
     6  __date__ = '$LastChangedDate: 2007-06-13 20:38:01 +0200 (Mi, 13 Jun 2007) $'
     7  __version__ = '$LastChangedRevision: 56 $'
     8
     9  import sys
    10  import xml.dom
    11  import basetest
    12  from cssutils.util import Base
    13
    14
    15 -class UtilTestCase(basetest.BaseTestCase):
    16
    17 -    def test_normalize(self):
    18          "Base._normalize()"
    19          b = Base()
    20
    21          tests = {u'aöäüß': u'aöäüß',
    22                   u'AbC-DeÖÄÜß': u'abc-deöäüß',
    23                   ur'\x': u'x'}
    24          for test, exp in tests.items():
    25              self.assertEqual(b._normalize(test), exp)
    26              # static too
    27              self.assertEqual(Base._normalize(test), exp)
    28
    29 -    def test_tokenupto(self):
    30          "Base._tokensupto2()"
    31
    32          # tests nested blocks of {} [] or ()
    33          b = Base()
    34
    35          tests = [
    36              ('default', u'a[{1}]({2}) { } NOT', u'a[{1}]({2}) { }', False),
    37              ('default', u'a[{1}]({2}) { } NOT', u'a[{1}]func({2}) { }', True),
    38              ('blockstartonly', u'a[{1}]({2}) { NOT', u'a[{1}]({2}) {', False),
    39              ('blockstartonly', u'a[{1}]({2}) { NOT', u'a[{1}]func({2}) {', True),
    40              ('propertynameendonly', u'a[(2)1] { }2 : a;', u'a[(2)1] { }2 :', False),
    41              ('propertynameendonly', u'a[(2)1] { }2 : a;', u'a[func(2)1] { }2 :', True),
    42              ('propertyvalueendonly', u'a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1; NOT',
    43                  u'a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1;', False),
    44              ('propertyvalueendonly', u'a{;{;}[;](;)}[;{;}[;](;)](;{;}[;](;)) 1; NOT',
    45                  u'a{;{;}[;]func(;)}[;{;}[;]func(;)]func(;{;}[;]func(;)) 1;', True),
    46              ('funcendonly', u'a{[1]}([3])[{[1]}[2]([3])]) NOT',
    47                  u'a{[1]}([3])[{[1]}[2]([3])])', False),
    48              ('funcendonly', u'a{[1]}([3])[{[1]}[2]([3])]) NOT',
    49                  u'a{[1]}func([3])[{[1]}[2]func([3])])', True),
    50              ('selectorattendonly', u'[a[()]{()}([()]{()}())] NOT',
    51                  u'[a[()]{()}([()]{()}())]', False),
    52              ('selectorattendonly', u'[a[()]{()}([()]{()}())] NOT',
    53                  u'[a[func()]{func()}func([func()]{func()}func())]', True)
    54              ]
    55
    56          for typ, values, exp, paransasfunc in tests:
    57
    58              def maketokens(valuelist):
    59                  # returns list of tuples
    60                  return [('TYPE', v, 0, 0) for v in valuelist]
    61
    62              tokens = maketokens(list(values))
    63              if paransasfunc:
    64                  for i, t in enumerate(tokens):
    65                      if u'(' == t[1]:
    66                          tokens[i] = ('FUNCTION', u'func(', t[2], t[3])
    67
    68              if 'default' == typ:
    69                  restokens = b._tokensupto2(tokens)
    70              elif 'blockstartonly' == typ:
    71                  restokens = b._tokensupto2(
    72                      tokens, blockstartonly=True)
    73              elif 'propertynameendonly' == typ:
    74                  restokens = b._tokensupto2(
    75                      tokens, propertynameendonly=True)
    76              elif 'propertyvalueendonly' == typ:
    77                  restokens = b._tokensupto2(
    78                      tokens, propertyvalueendonly=True)
    79              elif 'funcendonly' == typ:
    80                  restokens = b._tokensupto2(
    81                      tokens, funcendonly=True)
    82              elif 'selectorattendonly' == typ:
    83                  restokens = b._tokensupto2(
    84                      tokens, selectorattendonly=True)
    85
    86              res = u''.join([t[1] for t in restokens])
    87              self.assertEqual(exp, res)
    88
    89
    90  if __name__ == '__main__':
    91      import unittest
    92      unittest.main()
    93