comparison tests/test_fr.py @ 18:859ab8abce0a

The first real tests about lexing with the Pygments API for the tests. Also implemented a simple helper to compare token streams with shorter code.
author Franz Glasner <fzglas.hg@dom66.de>
date Mon, 20 Apr 2026 14:12:35 +0200
parents b92f660f2461
children 2e67c4eae6d9
comparison
equal deleted inserted replaced
17:251898f2f0c7 18:859ab8abce0a
2 # :- 2 # :-
3 # SPDX-FileCopyrightText: © 2026 Franz Glasner 3 # SPDX-FileCopyrightText: © 2026 Franz Glasner
4 # SPDX-License-Identifier: MIT 4 # SPDX-License-Identifier: MIT
5 # :- 5 # :-
6 6
7 import _tsetup # noqa:F401 (imported but unused) 7 from _tsetup import LEXERFILENAME, LEXERCLASS
8 8
9 import unittest 9 import unittest
10
11 import pygments
12 import pygments.lexers
13 from pygments.token import Token
14
15 import _testhelper
16
17
18 class TestLoading(unittest.TestCase):
19
20 def test_load(self):
21 pygments.lexers.load_lexer_from_file(LEXERFILENAME, LEXERCLASS)
22
23
24 class TestFrLexer(unittest.TestCase, _testhelper.TokenAssertHelper):
25
26 def setUp(self):
27 self.lexer = pygments.lexers.load_lexer_from_file(
28 LEXERFILENAME, LEXERCLASS)
29
30 def test_types(self):
31 tokens = pygments.lex("huhu", self.lexer)
32 self.assertEqual((Token.Name.Variable, "huhu"), next(tokens))
33 self.assertEqual((Token.Text, "\n"), next(tokens))
34 self.assertRaises(StopIteration, next, tokens)
35
36 def test_op_replace(self):
37 tokens = pygments.lex("<= >= <> <- ^", self.lexer)
38 self.assertEqual((Token.Operator, "≤"), next(tokens))
39 self.assertEqual((Token.Text, " "), next(tokens))
40 self.assertEqual((Token.Operator, "≥"), next(tokens))
41 self.assertEqual((Token.Text, " "), next(tokens))
42 self.assertEqual((Token.Operator, "≠"), next(tokens))
43 self.assertEqual((Token.Text, " "), next(tokens))
44 self.assertEqual((Token.Operator, "←"), next(tokens))
45 self.assertEqual((Token.Text, " "), next(tokens))
46 self.assertEqual((Token.Operator, "↑"), next(tokens))
47 self.assertEqual((Token.Text, "\n"), next(tokens))
48 self.assertRaises(StopIteration, next, tokens)
49
50 def test_op_replace_list(self):
51 tokens = pygments.lex("<= >= <> <- ^", self.lexer)
52 self.assertTokenStreamEqual(
53 [("Token.Operator", "≤"),
54 ("Token.Text", " "),
55 ("Token.Operator", "≥"),
56 ("Token.Text", " "),
57 ("Token.Operator", "≠"),
58 ("Token.Text", " "),
59 ("Token.Operator", "←"),
60 ("Token.Text", " "),
61 ("Token.Operator", "↑"),
62 ("Token.Text", "\n"),
63 ],
64 tokens)
65 self.assertRaises(StopIteration, next, tokens)
66
67 def test_op_replace_list_with_short_names(self):
68 tokens = pygments.lex("<= >= <> <- ^", self.lexer)
69 self.assertTokenStreamEqual(
70 [("Operator", "≤"),
71 ("Text", " "),
72 ("Operator", "≥"),
73 ("Text", " "),
74 ("Operator", "≠"),
75 ("Text", " "),
76 ("Operator", "←"),
77 ("Text", " "),
78 ("Operator", "↑"),
79 ("Text", "\n"),
80 ],
81 tokens)
82 self.assertRaises(StopIteration, next, tokens)
83
84 def test_op_replace_complete(self):
85 tokens = pygments.lex("<= >= <> <- ^", self.lexer)
86 self.assertTokenStreamEqualComplete(
87 [("Operator", "≤"),
88 ("Text", " "),
89 ("Operator", "≥"),
90 ("Text", " "),
91 ("Operator", "≠"),
92 ("Text", " "),
93 ("Operator", "←"),
94 ("Text", " "),
95 ("Operator", "↑"),
96 ("Text", "\n"),
97 ],
98 tokens)
10 99
11 100
12 if __name__ == "__main__": 101 if __name__ == "__main__":
13 unittest.main() 102 unittest.main()
14
15