17db96d56Sopenharmony_ci# Tests for the 'tokenize' module.
27db96d56Sopenharmony_ci# Large bits stolen from test_grammar.py.
37db96d56Sopenharmony_ci
47db96d56Sopenharmony_ci# Comments
57db96d56Sopenharmony_ci"#"
67db96d56Sopenharmony_ci#'
77db96d56Sopenharmony_ci#"
87db96d56Sopenharmony_ci#\
97db96d56Sopenharmony_ci       #
107db96d56Sopenharmony_ci    # abc
117db96d56Sopenharmony_ci'''#
127db96d56Sopenharmony_ci#'''
137db96d56Sopenharmony_ci
147db96d56Sopenharmony_cix = 1  #
157db96d56Sopenharmony_ci
167db96d56Sopenharmony_ci# Balancing continuation
177db96d56Sopenharmony_ci
187db96d56Sopenharmony_cia = (3, 4,
197db96d56Sopenharmony_ci  5, 6)
207db96d56Sopenharmony_ciy = [3, 4,
217db96d56Sopenharmony_ci  5]
227db96d56Sopenharmony_ciz = {'a':5,
237db96d56Sopenharmony_ci  'b':6}
247db96d56Sopenharmony_cix = (len(repr(y)) + 5*x - a[
257db96d56Sopenharmony_ci   3 ]
267db96d56Sopenharmony_ci   - x + len({
277db96d56Sopenharmony_ci   }
287db96d56Sopenharmony_ci    )
297db96d56Sopenharmony_ci  )
307db96d56Sopenharmony_ci
317db96d56Sopenharmony_ci# Backslash means line continuation:
327db96d56Sopenharmony_cix = 1 \
337db96d56Sopenharmony_ci+ 1
347db96d56Sopenharmony_ci
357db96d56Sopenharmony_ci# Backslash does not means continuation in comments :\
367db96d56Sopenharmony_cix = 0
377db96d56Sopenharmony_ci
387db96d56Sopenharmony_ci# Ordinary integers
397db96d56Sopenharmony_ci0xff != 255
407db96d56Sopenharmony_ci0o377 != 255
417db96d56Sopenharmony_ci2147483647   != 0o17777777777
427db96d56Sopenharmony_ci-2147483647-1 != 0o20000000000
437db96d56Sopenharmony_ci0o37777777777 != -1
447db96d56Sopenharmony_ci0xffffffff != -1; 0o37777777777 != -1; -0o1234567 == 0O001234567; 0b10101 == 0B00010101
457db96d56Sopenharmony_ci
467db96d56Sopenharmony_ci# Long integers
477db96d56Sopenharmony_cix = 0
487db96d56Sopenharmony_cix = 0
497db96d56Sopenharmony_cix = 0xffffffffffffffff
507db96d56Sopenharmony_cix = 0xffffffffffffffff
517db96d56Sopenharmony_cix = 0o77777777777777777
527db96d56Sopenharmony_cix = 0B11101010111111111
537db96d56Sopenharmony_cix = 123456789012345678901234567890
547db96d56Sopenharmony_cix = 123456789012345678901234567890
557db96d56Sopenharmony_ci
567db96d56Sopenharmony_ci# Floating-point numbers
577db96d56Sopenharmony_cix = 3.14
587db96d56Sopenharmony_cix = 314.
597db96d56Sopenharmony_cix = 0.314
607db96d56Sopenharmony_ci# XXX x = 000.314
617db96d56Sopenharmony_cix = .314
627db96d56Sopenharmony_cix = 3e14
637db96d56Sopenharmony_cix = 3E14
647db96d56Sopenharmony_cix = 3e-14
657db96d56Sopenharmony_cix = 3e+14
667db96d56Sopenharmony_cix = 3.e14
677db96d56Sopenharmony_cix = .3e14
687db96d56Sopenharmony_cix = 3.1e4
697db96d56Sopenharmony_ci
707db96d56Sopenharmony_ci# String literals
717db96d56Sopenharmony_cix = ''; y = "";
727db96d56Sopenharmony_cix = '\''; y = "'";
737db96d56Sopenharmony_cix = '"'; y = "\"";
747db96d56Sopenharmony_cix = "doesn't \"shrink\" does it"
757db96d56Sopenharmony_ciy = 'doesn\'t "shrink" does it'
767db96d56Sopenharmony_cix = "does \"shrink\" doesn't it"
777db96d56Sopenharmony_ciy = 'does "shrink" doesn\'t it'
787db96d56Sopenharmony_cix = """
797db96d56Sopenharmony_ciThe "quick"
807db96d56Sopenharmony_cibrown fox
817db96d56Sopenharmony_cijumps over
827db96d56Sopenharmony_cithe 'lazy' dog.
837db96d56Sopenharmony_ci"""
847db96d56Sopenharmony_ciy = '\nThe "quick"\nbrown fox\njumps over\nthe \'lazy\' dog.\n'
857db96d56Sopenharmony_ciy = '''
867db96d56Sopenharmony_ciThe "quick"
877db96d56Sopenharmony_cibrown fox
887db96d56Sopenharmony_cijumps over
897db96d56Sopenharmony_cithe 'lazy' dog.
907db96d56Sopenharmony_ci''';
917db96d56Sopenharmony_ciy = "\n\
927db96d56Sopenharmony_ciThe \"quick\"\n\
937db96d56Sopenharmony_cibrown fox\n\
947db96d56Sopenharmony_cijumps over\n\
957db96d56Sopenharmony_cithe 'lazy' dog.\n\
967db96d56Sopenharmony_ci";
977db96d56Sopenharmony_ciy = '\n\
987db96d56Sopenharmony_ciThe \"quick\"\n\
997db96d56Sopenharmony_cibrown fox\n\
1007db96d56Sopenharmony_cijumps over\n\
1017db96d56Sopenharmony_cithe \'lazy\' dog.\n\
1027db96d56Sopenharmony_ci';
1037db96d56Sopenharmony_cix = r'\\' + R'\\'
1047db96d56Sopenharmony_cix = r'\'' + ''
1057db96d56Sopenharmony_ciy = r'''
1067db96d56Sopenharmony_cifoo bar \\
1077db96d56Sopenharmony_cibaz''' + R'''
1087db96d56Sopenharmony_cifoo'''
1097db96d56Sopenharmony_ciy = r"""foo
1107db96d56Sopenharmony_cibar \\ baz
1117db96d56Sopenharmony_ci""" + R'''spam
1127db96d56Sopenharmony_ci'''
1137db96d56Sopenharmony_cix = b'abc' + B'ABC'
1147db96d56Sopenharmony_ciy = b"abc" + B"ABC"
1157db96d56Sopenharmony_cix = br'abc' + Br'ABC' + bR'ABC' + BR'ABC'
1167db96d56Sopenharmony_ciy = br"abc" + Br"ABC" + bR"ABC" + BR"ABC"
1177db96d56Sopenharmony_cix = rb'abc' + rB'ABC' + Rb'ABC' + RB'ABC'
1187db96d56Sopenharmony_ciy = rb"abc" + rB"ABC" + Rb"ABC" + RB"ABC"
1197db96d56Sopenharmony_cix = br'\\' + BR'\\'
1207db96d56Sopenharmony_cix = rb'\\' + RB'\\'
1217db96d56Sopenharmony_cix = br'\'' + ''
1227db96d56Sopenharmony_cix = rb'\'' + ''
1237db96d56Sopenharmony_ciy = br'''
1247db96d56Sopenharmony_cifoo bar \\
1257db96d56Sopenharmony_cibaz''' + BR'''
1267db96d56Sopenharmony_cifoo'''
1277db96d56Sopenharmony_ciy = Br"""foo
1287db96d56Sopenharmony_cibar \\ baz
1297db96d56Sopenharmony_ci""" + bR'''spam
1307db96d56Sopenharmony_ci'''
1317db96d56Sopenharmony_ciy = rB"""foo
1327db96d56Sopenharmony_cibar \\ baz
1337db96d56Sopenharmony_ci""" + Rb'''spam
1347db96d56Sopenharmony_ci'''
1357db96d56Sopenharmony_ci
1367db96d56Sopenharmony_ci# Indentation
1377db96d56Sopenharmony_ciif 1:
1387db96d56Sopenharmony_ci    x = 2
1397db96d56Sopenharmony_ciif 1:
1407db96d56Sopenharmony_ci        x = 2
1417db96d56Sopenharmony_ciif 1:
1427db96d56Sopenharmony_ci    while 0:
1437db96d56Sopenharmony_ci     if 0:
1447db96d56Sopenharmony_ci           x = 2
1457db96d56Sopenharmony_ci     x = 2
1467db96d56Sopenharmony_ciif 0:
1477db96d56Sopenharmony_ci  if 2:
1487db96d56Sopenharmony_ci   while 0:
1497db96d56Sopenharmony_ci        if 1:
1507db96d56Sopenharmony_ci          x = 2
1517db96d56Sopenharmony_ci
1527db96d56Sopenharmony_ci# Operators
1537db96d56Sopenharmony_ci
1547db96d56Sopenharmony_cidef d22(a, b, c=1, d=2): pass
1557db96d56Sopenharmony_cidef d01v(a=1, *restt, **restd): pass
1567db96d56Sopenharmony_ci
1577db96d56Sopenharmony_ci(x, y) != ({'a':1}, {'b':2})
1587db96d56Sopenharmony_ci
1597db96d56Sopenharmony_ci# comparison
1607db96d56Sopenharmony_ciif 1 < 1 > 1 == 1 >= 1 <= 1 != 1 != 1 in 1 not in 1 is 1 is not 1: pass
1617db96d56Sopenharmony_ci
1627db96d56Sopenharmony_ci# binary
1637db96d56Sopenharmony_cix = 1 & 1
1647db96d56Sopenharmony_cix = 1 ^ 1
1657db96d56Sopenharmony_cix = 1 | 1
1667db96d56Sopenharmony_ci
1677db96d56Sopenharmony_ci# shift
1687db96d56Sopenharmony_cix = 1 << 1 >> 1
1697db96d56Sopenharmony_ci
1707db96d56Sopenharmony_ci# additive
1717db96d56Sopenharmony_cix = 1 - 1 + 1 - 1 + 1
1727db96d56Sopenharmony_ci
1737db96d56Sopenharmony_ci# multiplicative
1747db96d56Sopenharmony_cix = 1 / 1 * 1 % 1
1757db96d56Sopenharmony_ci
1767db96d56Sopenharmony_ci# unary
1777db96d56Sopenharmony_cix = ~1 ^ 1 & 1 | 1 & 1 ^ -1
1787db96d56Sopenharmony_cix = -1*1/1 + 1*1 - ---1*1
1797db96d56Sopenharmony_ci
1807db96d56Sopenharmony_ci# selector
1817db96d56Sopenharmony_ciimport sys, time
1827db96d56Sopenharmony_cix = sys.modules['time'].time()
1837db96d56Sopenharmony_ci
1847db96d56Sopenharmony_ci@staticmethod
1857db96d56Sopenharmony_cidef foo(): pass
1867db96d56Sopenharmony_ci
1877db96d56Sopenharmony_ci@staticmethod
1887db96d56Sopenharmony_cidef foo(x:1)->1: pass
1897db96d56Sopenharmony_ci
190