summaryrefslogtreecommitdiffstats
path: root/tests/test_base_table/test_table.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_base_table/test_table.py')
-rw-r--r--tests/test_base_table/test_table.py196
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