1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
# -*- coding: utf-8 -*-
"""
Python Tests
~~~~~~~~~~~~
:copyright: Copyright 2006-2015 by the Pygments team, see AUTHORS.
:license: BSD, see LICENSE for details.
"""
import unittest
from pygments.lexers import PythonLexer, Python3Lexer
from pygments.token import Token
class PythonTest(unittest.TestCase):
def setUp(self):
self.lexer = PythonLexer()
def test_cls_builtin(self):
"""
Tests that a cls token gets interpreted as a Token.Name.Builtin.Pseudo
"""
fragment = 'class TestClass():\n @classmethod\n def hello(cls):\n pass\n'
tokens = [
(Token.Keyword, 'class'),
(Token.Text, ' '),
(Token.Name.Class, 'TestClass'),
(Token.Punctuation, '('),
(Token.Punctuation, ')'),
(Token.Punctuation, ':'),
(Token.Text, '\n'),
(Token.Text, ' '),
(Token.Name.Decorator, '@classmethod'),
(Token.Text, '\n'),
(Token.Text, ' '),
(Token.Keyword, 'def'),
(Token.Text, ' '),
(Token.Name.Function, 'hello'),
(Token.Punctuation, '('),
(Token.Name.Builtin.Pseudo, 'cls'),
(Token.Punctuation, ')'),
(Token.Punctuation, ':'),
(Token.Text, '\n'),
(Token.Text, ' '),
(Token.Keyword, 'pass'),
(Token.Text, '\n'),
]
self.assertEqual(tokens, list(self.lexer.get_tokens(fragment)))
class Python3Test(unittest.TestCase):
def setUp(self):
self.lexer = Python3Lexer()
def testNeedsName(self):
"""
Tests that '@' is recognized as an Operator
"""
fragment = u'S = (H @ beta - r).T @ inv(H @ V @ H.T) @ (H @ beta - r)\n'
tokens = [
(Token.Name, u'S'),
(Token.Text, u' '),
(Token.Operator, u'='),
(Token.Text, u' '),
(Token.Punctuation, u'('),
(Token.Name, u'H'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Name, u'beta'),
(Token.Text, u' '),
(Token.Operator, u'-'),
(Token.Text, u' '),
(Token.Name, u'r'),
(Token.Punctuation, u')'),
(Token.Operator, u'.'),
(Token.Name, u'T'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Name, u'inv'),
(Token.Punctuation, u'('),
(Token.Name, u'H'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Name, u'V'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Name, u'H'),
(Token.Operator, u'.'),
(Token.Name, u'T'),
(Token.Punctuation, u')'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Punctuation, u'('),
(Token.Name, u'H'),
(Token.Text, u' '),
(Token.Operator, u'@'),
(Token.Text, u' '),
(Token.Name, u'beta'),
(Token.Text, u' '),
(Token.Operator, u'-'),
(Token.Text, u' '),
(Token.Name, u'r'),
(Token.Punctuation, u')'),
(Token.Text, u'\n'),
]
self.assertEqual(tokens, list(self.lexer.get_tokens(fragment)))
|