From 141cf1e1b9be37edbfb184ea56049f83c1386951 Mon Sep 17 00:00:00 2001 From: quality Date: Sat, 10 Oct 2026 20:04:05 -0400 Subject: [PATCH] test: cover fullwidth, enclosing-mark and format-character widths display_width() counts east-asian width F as two columns and skips categories Me and Cf, but only W and Mn were exercised, so dropping F, Me or Cf left every test green. Co-Authored-By: Claude Opus 5.5 Signed-off-by: quality --- tests/test_format_markdown_tables.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/test_format_markdown_tables.py b/tests/test_format_markdown_tables.py index 87c3ac1..4393c7a 100644 --- a/tests/test_format_markdown_tables.py +++ b/tests/test_format_markdown_tables.py @@ -75,6 +75,20 @@ def test_wide_characters_take_two_columns_and_marks_none(self) -> None: self.assertEqual(display_width("日本語"), 6) self.assertEqual(display_width("e\u0301"), 1) + def test_fullwidth_forms_take_two_columns(self) -> None: + # East Asian width "F", not "W": fullwidth Latin letters and digits. + self.assertEqual(display_width("\uff21\uff11"), 4) + + def test_enclosing_marks_take_no_columns(self) -> None: + # Category Me, e.g. a combining enclosing circle drawn around a digit. + self.assertEqual(display_width("1\u20dd"), 1) + + def test_format_characters_take_no_columns(self) -> None: + # Category Cf: a zero-width joiner inside an emoji sequence and a + # zero-width space occupy nothing in a fixed-width viewer. + self.assertEqual(display_width("\u2705\u200d\u2705"), 4) + self.assertEqual(display_width("a\u200bb"), 2) + def test_a_table_with_wide_cells_is_padded_by_columns(self) -> None: self.assertEqual( format_text("| Name | Meaning |\n| --- | --- |\n| 日本語 | Japanese |\n| a | b |\n"),