59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
# 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
|