From 20e2186b57c8e58f66837b5c3726b74546b41d16 Mon Sep 17 00:00:00 2001 From: Pieter Eendebak Date: Fri, 21 Feb 2025 17:10:13 +0100 Subject: [PATCH] gh-126332: Add tests for _pyrepl.utils (GH-129325) (cherry picked from commit 0c4248f88e279df3254d62b34dfa3204a92c56a0) Co-authored-by: Pieter Eendebak --- Lib/test/test_pyrepl/test_utils.py | 27 +++++++++++++++++++ ...-01-26-20-17-58.gh-issue-126332.c0wUS-.rst | 1 + 2 files changed, 28 insertions(+) create mode 100644 Lib/test/test_pyrepl/test_utils.py create mode 100644 Misc/NEWS.d/next/Tests/2025-01-26-20-17-58.gh-issue-126332.c0wUS-.rst diff --git a/Lib/test/test_pyrepl/test_utils.py b/Lib/test/test_pyrepl/test_utils.py new file mode 100644 index 00000000000000..0d59968206a613 --- /dev/null +++ b/Lib/test/test_pyrepl/test_utils.py @@ -0,0 +1,27 @@ +from unittest import TestCase + +from _pyrepl.utils import str_width, wlen + + +class TestUtils(TestCase): + def test_str_width(self): + characters = ['a', '1', '_', '!', '\x1a', '\u263A', '\uffb9'] + for c in characters: + self.assertEqual(str_width(c), 1) + + characters = [chr(99989), chr(99999)] + for c in characters: + self.assertEqual(str_width(c), 2) + + def test_wlen(self): + for c in ['a', 'b', '1', '!', '_']: + self.assertEqual(wlen(c), 1) + self.assertEqual(wlen('\x1a'), 2) + + char_east_asian_width_N = chr(3800) + self.assertEqual(wlen(char_east_asian_width_N), 1) + char_east_asian_width_W = chr(4352) + self.assertEqual(wlen(char_east_asian_width_W), 2) + + self.assertEqual(wlen('hello'), 5) + self.assertEqual(wlen('hello' + '\x1a'), 7) diff --git a/Misc/NEWS.d/next/Tests/2025-01-26-20-17-58.gh-issue-126332.c0wUS-.rst b/Misc/NEWS.d/next/Tests/2025-01-26-20-17-58.gh-issue-126332.c0wUS-.rst new file mode 100644 index 00000000000000..09a301faec47ef --- /dev/null +++ b/Misc/NEWS.d/next/Tests/2025-01-26-20-17-58.gh-issue-126332.c0wUS-.rst @@ -0,0 +1 @@ +Add unit tests for pyrepl.