Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
diff 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 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/test_algpseudo.py Sun Apr 26 19:16:23 2026 +0200 @@ -0,0 +1,259 @@ +# -*- coding: utf-8 -*- +# :- +# SPDX-FileCopyrightText: © 2026 Franz Glasner +# SPDX-License-Identifier: MIT +# :- + +from _tsetup import ALGLEXERFILENAME, ALGLEXERCLASS + +import unittest + +import pygments +import pygments.lexers + +import _testhelper + + +class TestSnippets(unittest.TestCase, _testhelper.TokenAssertHelper): + + def setUp(self): + self.lexer = pygments.lexers.load_lexer_from_file( + ALGLEXERFILENAME, ALGLEXERCLASS) + + def test_lf(self): + self.assertTokenStreamEqualComplete( + [("Text.Whitespace", "\n")], + pygments.lex("\n", self.lexer)) + + def test_protected_lf(self): + self.assertTokenStreamEqualComplete( + [("Text", "\\\n")], + pygments.lex("\\\n", self.lexer)) + + def test_number_int(self): + self.assertTokenStreamEqualComplete( + [("Number.Integer", "10"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("10", self.lexer)) + + def test_number_float_1(self): + self.assertTokenStreamEqualComplete( + [("Number.Float", "3.1415926"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("3.1415926", self.lexer)) + + def test_number_float_2(self): + self.assertTokenStreamEqualComplete( + [("Number.Float", "3.14e-12"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("3.14e-12", self.lexer)) + + def test_string_s_1(self): + self.assertTokenStreamEqualComplete( + [("String.Single", "'"), + ("String.Single", "HU"), + ("String.Single", '"'), + ("String.Single", "HE HA"), + ("String.Escape", "\\'"), + ("String.Single", "HO"), + ("String.Single", "'"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("""'HU"HE HA\\'HO'""", self.lexer)) + + def test_string_s_2(self): + self.assertTokenStreamEqual( + [("String.Single", "'"), + ("String.Single", "HUHU"), + ("Error", "\n"), + ], + pygments.lex("'HUHU\nHEHE'", self.lexer)) + + def test_string_ts_1(self): + self.assertTokenStreamEqualComplete( + [("String.Single", "'''"), + ("String.Single", "HUHU HEHE"), + ("String.Single", "'''"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("'''HUHU HEHE'''", self.lexer)) + + def test_string_ts_2(self): + self.assertTokenStreamEqualComplete( + [("String.Single", "'''"), + ("String.Single", "HI"), + ("String.Single", "'"), + ("String.Single", "HU"), + ("String.Single", "\n"), + ("String.Single", "HE"), + ("String.Single", '"'), + ("String.Single", "HA"), + ("String.Single", "'''"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("""'''HI'HU\nHE"HA'''""", self.lexer)) + + def test_string_d_1(self): + self.assertTokenStreamEqualComplete( + [("String.Double", '"'), + ("String.Double", 'HU'), + ("String.Double", "'"), + ("String.Double", 'HE HA'), + ("String.Escape", '\\"'), + ("String.Double", 'HO'), + ("String.Double", '"'), + ("Text.Whitespace", "\n"), + ], + pygments.lex('''"HU'HE HA\\"HO"''', self.lexer)) + + def test_string_d_2(self): + self.assertTokenStreamEqual( + [("String.Double", '"'), + ("String.Double", "HUHU"), + ("Error", "\n"), + ], + pygments.lex('"HUHU\nHEHE"', self.lexer)) + + def test_string_td_1(self): + self.assertTokenStreamEqualComplete( + [("String.Double", '"""'), + ("String.Double", 'HUHU HAHA'), + ("String.Double", '"""'), + ("Text.Whitespace", "\n"), + ], + pygments.lex('"""HUHU HAHA"""', self.lexer)) + + def test_string_td_2(self): + self.assertTokenStreamEqualComplete( + [("String.Double", '"""'), + ("String.Double", 'HU'), + ("String.Double", '"'), + ("String.Double", "HO"), + ("String.Double", "\n"), + ("String.Double", "HE"), + ("String.Double", "'"), + ("String.Double", "HA"), + ("String.Double", '"""'), + ("Text.Whitespace", "\n"), + ], + pygments.lex('''"""HU"HO\nHE'HA"""''', self.lexer)) + + def test_proc(self): + self.assertTokenStreamEqualComplete( + [("Keyword", "PROCEDURE"), + ("Text.Whitespace", " "), + ("Name.Entity", "{"), + ("Name.Entity", "the name"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\PROC {the name}", self.lexer)) + + def test_proc_de(self): + lexer = pygments.lexers.load_lexer_from_file( + ALGLEXERFILENAME, "AlgPseudocodeLexer_DE") + self.assertTokenStreamEqualComplete( + [("Keyword", "PROZEDUR"), + ("Text.Whitespace", " "), + ("Name.Entity", "{"), + ("Name.Entity", " also {nichtxs"), + ("Name.Entity", "\\}"), + ("Name.Entity", " hier"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\PROC { also {nichtxs\\} hier}", lexer)) + + def test_function_1(self): + self.assertTokenStreamEqualComplete( + [("Keyword", "FUNCTION"), + ("Name.Entity", "{"), + ("Name.Entity", "1"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\FUNC{1}", self.lexer)) + + def test_function_2(self): + self.assertTokenStreamEqualComplete( + [("Keyword", "FUNCTION"), + ("Name.Entity", "{"), + ("Name.Entity", "line 1\nline 2\n"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\FUNCTION{line 1\nline 2\n}", self.lexer)) + + def test_function_3(self): + self.assertTokenStreamEqualComplete( + [("Keyword", "FUNCTION"), + ("Text.Whitespace", " "), + ("Name.Entity", "{"), + ("Name.Entity", "\\"), + ("Name.Entity", "n"), + ("Name.Entity", "\\}"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\FN {\\n\\}}", self.lexer)) + + def test_class(self): + self.assertTokenStreamEqualComplete( + [("Keyword", "CLASS"), + ("Text.Whitespace", " "), + ("Name.Entity", "{"), + ("Name.Entity", "\\"), + ("Name.Entity", "n"), + ("Name.Entity", "\\}"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\CLASS {\\n\\}}", self.lexer)) + + def test_class_fr(self): + lexer = pygments.lexers.load_lexer_from_file( + ALGLEXERFILENAME, "AlgPseudocodeLexer_FR") + self.assertTokenStreamEqualComplete( + [("Keyword", "CLASSE"), + ("Text.Whitespace", " "), + ("Name.Entity", "{"), + ("Name.Entity", "\\"), + ("Name.Entity", "n"), + ("Name.Entity", "\\}"), + ("Name.Entity", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\CLASS {\\n\\}}", lexer)) + + def test_remark_1(self): + self.assertTokenStreamEqualComplete( + [("Comment.Single", "▷"), + ("Comment.Single", " the remark"), + ("Text.Whitespace", "\n"), + ], + pygments.lex("\\REMARK the remark\n", self.lexer)) + + def test_remark_2(self): + self.assertTokenStreamEqualComplete( + [("Comment.Single", "▷"), + ("Comment.Single", " the remark 1"), + ("Text.Whitespace", "\n"), + ("Comment.Single", "▷"), + ("Comment.Single", " the remark 2"), + ("Text.Whitespace", "\n"), + ("Comment.Single", "▷"), + ("Comment.Single", " the remark 3"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + """\\REMARK the remark 1 +\\Rem the remark 2 +\\r the remark 3 +""", self.lexer)) + + +if __name__ == "__main__": + unittest.main()
