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)