197 lines
5.1 KiB
Python
197 lines
5.1 KiB
Python
|
# coding: utf-8
|
||
|
"""Test property in BaseTable class."""
|
||
|
|
||
|
from colorama import Fore
|
||
|
from colorclass import Color
|
||
|
from termcolor import colored
|
||
|
|
||
|
from terminaltables.base_table import BaseTable
|
||
|
|
||
|
|
||
|
def test_ascii():
|
||
|
"""Test with ASCII characters."""
|
||
|
table_data = [
|
||
|
['Name', 'Color', 'Type'],
|
||
|
['Avocado', 'green', 'nut'],
|
||
|
['Tomato', 'red', 'fruit'],
|
||
|
['Lettuce', 'green', 'vegetable'],
|
||
|
]
|
||
|
table = BaseTable(table_data)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+---------+-------+-----------+\n'
|
||
|
'| Name | Color | Type |\n'
|
||
|
'+---------+-------+-----------+\n'
|
||
|
'| Avocado | green | nut |\n'
|
||
|
'| Tomato | red | fruit |\n'
|
||
|
'| Lettuce | green | vegetable |\n'
|
||
|
'+---------+-------+-----------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_int():
|
||
|
"""Test with integers instead of strings."""
|
||
|
table_data = [
|
||
|
[100, 10, 1],
|
||
|
[0, 3, 6],
|
||
|
[1, 4, 7],
|
||
|
[2, 5, 8],
|
||
|
]
|
||
|
table = BaseTable(table_data, 1234567890)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+1234567890+---+\n'
|
||
|
'| 100 | 10 | 1 |\n'
|
||
|
'+-----+----+---+\n'
|
||
|
'| 0 | 3 | 6 |\n'
|
||
|
'| 1 | 4 | 7 |\n'
|
||
|
'| 2 | 5 | 8 |\n'
|
||
|
'+-----+----+---+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_float():
|
||
|
"""Test with floats instead of strings."""
|
||
|
table_data = [
|
||
|
[1.0, 22.0, 333.0],
|
||
|
[0.1, 3.1, 6.1],
|
||
|
[1.1, 4.1, 7.1],
|
||
|
[2.1, 5.1, 8.1],
|
||
|
]
|
||
|
table = BaseTable(table_data, 0.12345678)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+0.12345678--+-------+\n'
|
||
|
'| 1.0 | 22.0 | 333.0 |\n'
|
||
|
'+-----+------+-------+\n'
|
||
|
'| 0.1 | 3.1 | 6.1 |\n'
|
||
|
'| 1.1 | 4.1 | 7.1 |\n'
|
||
|
'| 2.1 | 5.1 | 8.1 |\n'
|
||
|
'+-----+------+-------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_bool_none():
|
||
|
"""Test with NoneType/boolean instead of strings."""
|
||
|
table_data = [
|
||
|
[True, False, None],
|
||
|
[True, False, None],
|
||
|
[False, None, True],
|
||
|
[None, True, False],
|
||
|
]
|
||
|
table = BaseTable(table_data, True)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+True---+-------+-------+\n'
|
||
|
'| True | False | None |\n'
|
||
|
'+-------+-------+-------+\n'
|
||
|
'| True | False | None |\n'
|
||
|
'| False | None | True |\n'
|
||
|
'| None | True | False |\n'
|
||
|
'+-------+-------+-------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_cjk():
|
||
|
"""Test with CJK characters."""
|
||
|
table_data = [
|
||
|
['CJK'],
|
||
|
['蓝色'],
|
||
|
['世界你好'],
|
||
|
]
|
||
|
table = BaseTable(table_data)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+----------+\n'
|
||
|
'| CJK |\n'
|
||
|
'+----------+\n'
|
||
|
'| 蓝色 |\n'
|
||
|
'| 世界你好 |\n'
|
||
|
'+----------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_rtl():
|
||
|
"""Test with RTL characters."""
|
||
|
table_data = [
|
||
|
['RTL'],
|
||
|
['שלום'],
|
||
|
['معرب'],
|
||
|
]
|
||
|
table = BaseTable(table_data)
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+------+\n'
|
||
|
'| RTL |\n'
|
||
|
'+------+\n'
|
||
|
'| שלום |\n'
|
||
|
'| معرب |\n'
|
||
|
'+------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_rtl_large():
|
||
|
"""Test large table of RTL characters."""
|
||
|
table_data = [
|
||
|
['اكتب', 'اللون', 'اسم'],
|
||
|
['البندق', 'أخضر', 'أفوكادو'],
|
||
|
['ثمرة', 'أحمر', 'بندورة'],
|
||
|
['الخضروات', 'أخضر', 'الخس'],
|
||
|
]
|
||
|
table = BaseTable(table_data, 'جوجل المترجم')
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
'+جوجل المترجم------+---------+\n'
|
||
|
'| اكتب | اللون | اسم |\n'
|
||
|
'+----------+-------+---------+\n'
|
||
|
'| البندق | أخضر | أفوكادو |\n'
|
||
|
'| ثمرة | أحمر | بندورة |\n'
|
||
|
'| الخضروات | أخضر | الخس |\n'
|
||
|
'+----------+-------+---------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|
||
|
|
||
|
|
||
|
def test_color():
|
||
|
"""Test with color characters."""
|
||
|
table_data = [
|
||
|
['ansi', '\033[31mRed\033[39m', '\033[32mGreen\033[39m', '\033[34mBlue\033[39m'],
|
||
|
['colorclass', Color('{red}Red{/red}'), Color('{green}Green{/green}'), Color('{blue}Blue{/blue}')],
|
||
|
['colorama', Fore.RED + 'Red' + Fore.RESET, Fore.GREEN + 'Green' + Fore.RESET, Fore.BLUE + 'Blue' + Fore.RESET],
|
||
|
['termcolor', colored('Red', 'red'), colored('Green', 'green'), colored('Blue', 'blue')],
|
||
|
]
|
||
|
table = BaseTable(table_data)
|
||
|
table.inner_heading_row_border = False
|
||
|
actual = table.table
|
||
|
|
||
|
expected = (
|
||
|
u'+------------+-----+-------+------+\n'
|
||
|
u'| ansi | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n'
|
||
|
u'| colorclass | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n'
|
||
|
u'| colorama | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n'
|
||
|
u'| termcolor | \033[31mRed\033[0m | \033[32mGreen\033[0m | \033[34mBlue\033[0m |\n'
|
||
|
u'+------------+-----+-------+------+'
|
||
|
)
|
||
|
|
||
|
assert actual == expected
|