comparison tests/test_algpseudo.py @ 53:39151225fb84

Rename the new pseudocode implementation to AlgPseudocode. Because it is modelled after CTAN's algpseudocode(x).
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 26 Apr 2026 19:16:23 +0200
parents tests/test_pseudo.py@bbef0ac6cfcf
children e8f4af9e20a8
comparison
equal deleted inserted replaced
52:5bfa9113d3c4 53:39151225fb84
1 # -*- coding: utf-8 -*-
2 # :-
3 # SPDX-FileCopyrightText: © 2026 Franz Glasner
4 # SPDX-License-Identifier: MIT
5 # :-
6
7 from _tsetup import ALGLEXERFILENAME, ALGLEXERCLASS
8
9 import unittest
10
11 import pygments
12 import pygments.lexers
13
14 import _testhelper
15
16
17 class TestSnippets(unittest.TestCase, _testhelper.TokenAssertHelper):
18
19 def setUp(self):
20 self.lexer = pygments.lexers.load_lexer_from_file(
21 ALGLEXERFILENAME, ALGLEXERCLASS)
22
23 def test_lf(self):
24 self.assertTokenStreamEqualComplete(
25 [("Text.Whitespace", "\n")],
26 pygments.lex("\n", self.lexer))
27
28 def test_protected_lf(self):
29 self.assertTokenStreamEqualComplete(
30 [("Text", "\\\n")],
31 pygments.lex("\\\n", self.lexer))
32
33 def test_number_int(self):
34 self.assertTokenStreamEqualComplete(
35 [("Number.Integer", "10"),
36 ("Text.Whitespace", "\n"),
37 ],
38 pygments.lex("10", self.lexer))
39
40 def test_number_float_1(self):
41 self.assertTokenStreamEqualComplete(
42 [("Number.Float", "3.1415926"),
43 ("Text.Whitespace", "\n"),
44 ],
45 pygments.lex("3.1415926", self.lexer))
46
47 def test_number_float_2(self):
48 self.assertTokenStreamEqualComplete(
49 [("Number.Float", "3.14e-12"),
50 ("Text.Whitespace", "\n"),
51 ],
52 pygments.lex("3.14e-12", self.lexer))
53
54 def test_string_s_1(self):
55 self.assertTokenStreamEqualComplete(
56 [("String.Single", "'"),
57 ("String.Single", "HU"),
58 ("String.Single", '"'),
59 ("String.Single", "HE HA"),
60 ("String.Escape", "\\'"),
61 ("String.Single", "HO"),
62 ("String.Single", "'"),
63 ("Text.Whitespace", "\n"),
64 ],
65 pygments.lex("""'HU"HE HA\\'HO'""", self.lexer))
66
67 def test_string_s_2(self):
68 self.assertTokenStreamEqual(
69 [("String.Single", "'"),
70 ("String.Single", "HUHU"),
71 ("Error", "\n"),
72 ],
73 pygments.lex("'HUHU\nHEHE'", self.lexer))
74
75 def test_string_ts_1(self):
76 self.assertTokenStreamEqualComplete(
77 [("String.Single", "'''"),
78 ("String.Single", "HUHU HEHE"),
79 ("String.Single", "'''"),
80 ("Text.Whitespace", "\n"),
81 ],
82 pygments.lex("'''HUHU HEHE'''", self.lexer))
83
84 def test_string_ts_2(self):
85 self.assertTokenStreamEqualComplete(
86 [("String.Single", "'''"),
87 ("String.Single", "HI"),
88 ("String.Single", "'"),
89 ("String.Single", "HU"),
90 ("String.Single", "\n"),
91 ("String.Single", "HE"),
92 ("String.Single", '"'),
93 ("String.Single", "HA"),
94 ("String.Single", "'''"),
95 ("Text.Whitespace", "\n"),
96 ],
97 pygments.lex("""'''HI'HU\nHE"HA'''""", self.lexer))
98
99 def test_string_d_1(self):
100 self.assertTokenStreamEqualComplete(
101 [("String.Double", '"'),
102 ("String.Double", 'HU'),
103 ("String.Double", "'"),
104 ("String.Double", 'HE HA'),
105 ("String.Escape", '\\"'),
106 ("String.Double", 'HO'),
107 ("String.Double", '"'),
108 ("Text.Whitespace", "\n"),
109 ],
110 pygments.lex('''"HU'HE HA\\"HO"''', self.lexer))
111
112 def test_string_d_2(self):
113 self.assertTokenStreamEqual(
114 [("String.Double", '"'),
115 ("String.Double", "HUHU"),
116 ("Error", "\n"),
117 ],
118 pygments.lex('"HUHU\nHEHE"', self.lexer))
119
120 def test_string_td_1(self):
121 self.assertTokenStreamEqualComplete(
122 [("String.Double", '"""'),
123 ("String.Double", 'HUHU HAHA'),
124 ("String.Double", '"""'),
125 ("Text.Whitespace", "\n"),
126 ],
127 pygments.lex('"""HUHU HAHA"""', self.lexer))
128
129 def test_string_td_2(self):
130 self.assertTokenStreamEqualComplete(
131 [("String.Double", '"""'),
132 ("String.Double", 'HU'),
133 ("String.Double", '"'),
134 ("String.Double", "HO"),
135 ("String.Double", "\n"),
136 ("String.Double", "HE"),
137 ("String.Double", "'"),
138 ("String.Double", "HA"),
139 ("String.Double", '"""'),
140 ("Text.Whitespace", "\n"),
141 ],
142 pygments.lex('''"""HU"HO\nHE'HA"""''', self.lexer))
143
144 def test_proc(self):
145 self.assertTokenStreamEqualComplete(
146 [("Keyword", "PROCEDURE"),
147 ("Text.Whitespace", " "),
148 ("Name.Entity", "{"),
149 ("Name.Entity", "the name"),
150 ("Name.Entity", "}"),
151 ("Text.Whitespace", "\n"),
152 ],
153 pygments.lex("\\PROC {the name}", self.lexer))
154
155 def test_proc_de(self):
156 lexer = pygments.lexers.load_lexer_from_file(
157 ALGLEXERFILENAME, "AlgPseudocodeLexer_DE")
158 self.assertTokenStreamEqualComplete(
159 [("Keyword", "PROZEDUR"),
160 ("Text.Whitespace", " "),
161 ("Name.Entity", "{"),
162 ("Name.Entity", " also {nichtxs"),
163 ("Name.Entity", "\\}"),
164 ("Name.Entity", " hier"),
165 ("Name.Entity", "}"),
166 ("Text.Whitespace", "\n"),
167 ],
168 pygments.lex("\\PROC { also {nichtxs\\} hier}", lexer))
169
170 def test_function_1(self):
171 self.assertTokenStreamEqualComplete(
172 [("Keyword", "FUNCTION"),
173 ("Name.Entity", "{"),
174 ("Name.Entity", "1"),
175 ("Name.Entity", "}"),
176 ("Text.Whitespace", "\n"),
177 ],
178 pygments.lex("\\FUNC{1}", self.lexer))
179
180 def test_function_2(self):
181 self.assertTokenStreamEqualComplete(
182 [("Keyword", "FUNCTION"),
183 ("Name.Entity", "{"),
184 ("Name.Entity", "line 1\nline 2\n"),
185 ("Name.Entity", "}"),
186 ("Text.Whitespace", "\n"),
187 ],
188 pygments.lex("\\FUNCTION{line 1\nline 2\n}", self.lexer))
189
190 def test_function_3(self):
191 self.assertTokenStreamEqualComplete(
192 [("Keyword", "FUNCTION"),
193 ("Text.Whitespace", " "),
194 ("Name.Entity", "{"),
195 ("Name.Entity", "\\"),
196 ("Name.Entity", "n"),
197 ("Name.Entity", "\\}"),
198 ("Name.Entity", "}"),
199 ("Text.Whitespace", "\n"),
200 ],
201 pygments.lex("\\FN {\\n\\}}", self.lexer))
202
203 def test_class(self):
204 self.assertTokenStreamEqualComplete(
205 [("Keyword", "CLASS"),
206 ("Text.Whitespace", " "),
207 ("Name.Entity", "{"),
208 ("Name.Entity", "\\"),
209 ("Name.Entity", "n"),
210 ("Name.Entity", "\\}"),
211 ("Name.Entity", "}"),
212 ("Text.Whitespace", "\n"),
213 ],
214 pygments.lex("\\CLASS {\\n\\}}", self.lexer))
215
216 def test_class_fr(self):
217 lexer = pygments.lexers.load_lexer_from_file(
218 ALGLEXERFILENAME, "AlgPseudocodeLexer_FR")
219 self.assertTokenStreamEqualComplete(
220 [("Keyword", "CLASSE"),
221 ("Text.Whitespace", " "),
222 ("Name.Entity", "{"),
223 ("Name.Entity", "\\"),
224 ("Name.Entity", "n"),
225 ("Name.Entity", "\\}"),
226 ("Name.Entity", "}"),
227 ("Text.Whitespace", "\n"),
228 ],
229 pygments.lex("\\CLASS {\\n\\}}", lexer))
230
231 def test_remark_1(self):
232 self.assertTokenStreamEqualComplete(
233 [("Comment.Single", "▷"),
234 ("Comment.Single", " the remark"),
235 ("Text.Whitespace", "\n"),
236 ],
237 pygments.lex("\\REMARK the remark\n", self.lexer))
238
239 def test_remark_2(self):
240 self.assertTokenStreamEqualComplete(
241 [("Comment.Single", "▷"),
242 ("Comment.Single", " the remark 1"),
243 ("Text.Whitespace", "\n"),
244 ("Comment.Single", "▷"),
245 ("Comment.Single", " the remark 2"),
246 ("Text.Whitespace", "\n"),
247 ("Comment.Single", "▷"),
248 ("Comment.Single", " the remark 3"),
249 ("Text.Whitespace", "\n"),
250 ],
251 pygments.lex(
252 """\\REMARK the remark 1
253 \\Rem the remark 2
254 \\r the remark 3
255 """, self.lexer))
256
257
258 if __name__ == "__main__":
259 unittest.main()