diff tests/_testhelper.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
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/_testhelper.py	Mon Apr 20 14:12:35 2026 +0200
@@ -0,0 +1,33 @@
+# -*- coding: utf-8 -*-
+# :-
+# SPDX-FileCopyrightText: © 2026 Franz Glasner
+# SPDX-License-Identifier: MIT
+# :-
+"""Test helper"""
+
+__all__ = ["TokenAssertHelper"]
+
+
+from pygments.token import Token, is_token_subtype, string_to_tokentype
+
+
+class TokenAssertHelper(object):
+    """Mixin to test for token stream equality"""
+
+    def assertTokenEqual(self, tok_or_str, txt, token):
+        if is_token_subtype(tok_or_str, Token):
+            t = tok_or_str
+        else:
+            t = string_to_tokentype(tok_or_str)
+        self.assertEqual((t, txt), token)
+
+    def assertNextTokenEqual(self, tok_or_str, txt, tokens):
+        self.assertTokenEqual(tok_or_str, txt, next(tokens))
+
+    def assertTokenStreamEqual(self, expected_tokens, given_tokens):
+        for tok, txt in expected_tokens:
+            self.assertNextTokenEqual(tok, txt, given_tokens)
+
+    def assertTokenStreamEqualComplete(self, expected_tokens, given_tokens):
+        self.assertTokenStreamEqual(expected_tokens, given_tokens)
+        self.assertRaises(StopIteration, next, given_tokens)