"""Test property in BaseTable class.""" from colorama import Fore from colorclass import Color from termcolor import colored from terminaltables3.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 = ( "+------------+-----+-------+------+\n" "| ansi | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n" "| colorclass | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n" "| colorama | \033[31mRed\033[39m | \033[32mGreen\033[39m | \033[34mBlue\033[39m |\n" "| termcolor | \033[31mRed\033[0m | \033[32mGreen\033[0m | \033[34mBlue\033[0m |\n" "+------------+-----+-------+------+" ) assert actual == expected