Files
sbp/tests/test_term.py
T

37 lines
1.1 KiB
Python

import unittest
from sbp.tui.term import display_width, pad, truncate, wrap_display
class WidthTest(unittest.TestCase):
def test_ascii_width(self) -> None:
self.assertEqual(display_width("hello"), 5)
def test_cjk_width(self) -> None:
self.assertEqual(display_width("中文"), 4)
self.assertEqual(display_width("a中"), 3)
def test_truncate_ascii(self) -> None:
self.assertEqual(truncate("abcdef", 10), "abcdef")
self.assertEqual(truncate("abcdef", 4), "abc…")
def test_truncate_cjk(self) -> None:
self.assertEqual(truncate("中文字符", 5), "中文…")
def test_pad(self) -> None:
self.assertEqual(display_width(pad("中", 5)), 5)
def test_wrap_display_keeps_long_uri_visible(self) -> None:
uri = "vless://" + "a" * 200
lines = wrap_display(uri, 40)
self.assertTrue(all(display_width(line) <= 40 for line in lines))
self.assertEqual("".join(lines), uri)
def test_wrap_display_cjk(self) -> None:
lines = wrap_display("中文字符", 4)
self.assertEqual(lines, ["中文", "字符"])
if __name__ == "__main__":
unittest.main()