Home | History | Annotate | Download | only in test
      1 # Tests for the 'tokenize' module.
      2 # Large bits stolen from test_grammar.py. 
      3 
      4 # Comments
      5 "#"
      6 #'
      7 #"
      8 #\
      9        #
     10     # abc
     11 '''#
     12 #'''
     13 
     14 x = 1  #
     15 
     16 # Balancing continuation
     17 
     18 a = (3, 4,
     19   5, 6)
     20 y = [3, 4,
     21   5]
     22 z = {'a':5,
     23   'b':6}
     24 x = (len(`y`) + 5*x - a[
     25    3 ]
     26    - x + len({
     27    }
     28     )
     29   )
     30 
     31 # Backslash means line continuation:
     32 x = 1 \
     33 + 1
     34 
     35 # Backslash does not means continuation in comments :\
     36 x = 0
     37 
     38 # Ordinary integers
     39 0xff <> 255
     40 0377 <> 255
     41 2147483647   != 017777777777
     42 -2147483647-1 != 020000000000
     43 037777777777 != -1
     44 0xffffffff != -1
     45 
     46 # Long integers
     47 x = 0L
     48 x = 0l
     49 x = 0xffffffffffffffffL
     50 x = 0xffffffffffffffffl
     51 x = 077777777777777777L
     52 x = 077777777777777777l
     53 x = 123456789012345678901234567890L
     54 x = 123456789012345678901234567890l
     55 
     56 # Floating-point numbers
     57 x = 3.14
     58 x = 314.
     59 x = 0.314
     60 # XXX x = 000.314
     61 x = .314
     62 x = 3e14
     63 x = 3E14
     64 x = 3e-14
     65 x = 3e+14
     66 x = 3.e14
     67 x = .3e14
     68 x = 3.1e4
     69 
     70 # String literals
     71 x = ''; y = "";
     72 x = '\''; y = "'";
     73 x = '"'; y = "\"";
     74 x = "doesn't \"shrink\" does it"
     75 y = 'doesn\'t "shrink" does it'
     76 x = "does \"shrink\" doesn't it"
     77 y = 'does "shrink" doesn\'t it'
     78 x = """
     79 The "quick"
     80 brown fox
     81 jumps over
     82 the 'lazy' dog.
     83 """
     84 y = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
     85 y = '''
     86 The "quick"
     87 brown fox
     88 jumps over
     89 the 'lazy' dog.
     90 ''';
     91 y = "\n\
     92 The \"quick\"\n\
     93 brown fox\n\
     94 jumps over\n\
     95 the 'lazy' dog.\n\
     96 ";
     97 y = '\n\
     98 The \"quick\"\n\
     99 brown fox\n\
    100 jumps over\n\
    101 the \'lazy\' dog.\n\
    102 ';
    103 x = r'\\' + R'\\'
    104 x = r'\'' + ''
    105 y = r'''
    106 foo bar \\
    107 baz''' + R'''
    108 foo'''
    109 y = r"""foo
    110 bar \\ baz
    111 """ + R'''spam
    112 '''
    113 x = u'abc' + U'ABC'
    114 y = u"abc" + U"ABC"
    115 x = ur'abc' + Ur'ABC' + uR'ABC' + UR'ABC'
    116 y = ur"abc" + Ur"ABC" + uR"ABC" + UR"ABC"
    117 x = ur'\\' + UR'\\'
    118 x = ur'\'' + ''
    119 y = ur'''
    120 foo bar \\
    121 baz''' + UR'''
    122 foo'''
    123 y = Ur"""foo
    124 bar \\ baz
    125 """ + uR'''spam
    126 '''
    127 
    128 # Indentation
    129 if 1:
    130     x = 2
    131 if 1:
    132         x = 2
    133 if 1:
    134     while 0:
    135      if 0:
    136            x = 2
    137      x = 2
    138 if 0:
    139   if 2:
    140    while 0:
    141         if 1:
    142           x = 2
    143 
    144 # Operators
    145 
    146 def d22(a, b, c=1, d=2): pass
    147 def d01v(a=1, *restt, **restd): pass
    148 
    149 (x, y) <> ({'a':1}, {'b':2})
    150 
    151 # comparison
    152 if 1 < 1 > 1 == 1 >= 1 <= 1 <> 1 != 1 in 1 not in 1 is 1 is not 1: pass
    153 
    154 # binary
    155 x = 1 & 1
    156 x = 1 ^ 1
    157 x = 1 | 1
    158 
    159 # shift
    160 x = 1 << 1 >> 1
    161 
    162 # additive
    163 x = 1 - 1 + 1 - 1 + 1
    164 
    165 # multiplicative
    166 x = 1 / 1 * 1 % 1
    167 
    168 # unary
    169 x = ~1 ^ 1 & 1 | 1 & 1 ^ -1
    170 x = -1*1/1 + 1*1 - ---1*1
    171 
    172 # selector
    173 import sys, time
    174 x = sys.modules['time'].time()
    175 
    176 @staticmethod
    177 def foo(): pass
    178 
    179