1
0
Fork 0
terminaltables3/tests/test_width_and_alignment/test_visible_width.py

60 lines
1.8 KiB
Python
Raw Normal View History

# coding: utf-8
"""Test function in module."""
import pytest
from colorama import Fore
from colorclass import Color
from termcolor import colored
from terminaltables.width_and_alignment import visible_width
@pytest.mark.parametrize('string,expected', [
# str
('hello, world', 12),
('世界你好', 8),
('蓝色', 4),
('שלום', 4),
('معرب', 4),
('hello 世界', 10),
# str+ansi
('\x1b[34mhello, world\x1b[39m', 12),
('\x1b[34m世界你好\x1b[39m', 8),
('\x1b[34m蓝色\x1b[39m', 4),
('\x1b[34mשלום\x1b[39m', 4),
('\x1b[34mمعرب\x1b[39m', 4),
('\x1b[34mhello 世界\x1b[39m', 10),
# colorclass
(Color(u'{blue}hello, world{/blue}'), 12),
(Color(u'{blue}世界你好{/blue}'), 8),
(Color(u'{blue}蓝色{/blue}'), 4),
(Color(u'{blue}שלום{/blue}'), 4),
(Color(u'{blue}معرب{/blue}'), 4),
(Color(u'{blue}hello 世界{/blue}'), 10),
# colorama
(Fore.BLUE + 'hello, world' + Fore.RESET, 12),
(Fore.BLUE + '世界你好' + Fore.RESET, 8),
(Fore.BLUE + '蓝色' + Fore.RESET, 4),
(Fore.BLUE + 'שלום' + Fore.RESET, 4),
(Fore.BLUE + 'معرب' + Fore.RESET, 4),
(Fore.BLUE + 'hello 世界' + Fore.RESET, 10),
# termcolor
(colored('hello, world', 'blue'), 12),
(colored('世界你好', 'blue'), 8),
(colored('蓝色', 'blue'), 4),
(colored('שלום', 'blue'), 4),
(colored('معرب', 'blue'), 4),
(colored('hello 世界', 'blue'), 10),
])
def test(string, expected):
"""Test function with different color libraries.
:param str string: Input string to measure.
:param int expected: Expected visible width of string (some characters are len() == 1 but take up 2 spaces).
"""
assert visible_width(string) == expected