diff options
Diffstat (limited to 'tests/test_base_table/test_table.py')
-rw-r--r-- | tests/test_base_table/test_table.py | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/tests/test_base_table/test_table.py b/tests/test_base_table/test_table.py new file mode 100644 index 0000000..c5b5a89 --- /dev/null +++ b/tests/test_base_table/test_table.py @@ -0,0 +1,196 @@ +# 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 |