summaryrefslogtreecommitdiffstats
path: root/tests/test_width_and_alignment/test_max_dimensions.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_width_and_alignment/test_max_dimensions.py')
-rw-r--r--tests/test_width_and_alignment/test_max_dimensions.py100
1 files changed, 100 insertions, 0 deletions
diff --git a/tests/test_width_and_alignment/test_max_dimensions.py b/tests/test_width_and_alignment/test_max_dimensions.py
new file mode 100644
index 0000000..fc97883
--- /dev/null
+++ b/tests/test_width_and_alignment/test_max_dimensions.py
@@ -0,0 +1,100 @@
+# 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 max_dimensions
+
+
+@pytest.mark.parametrize('table_data,expected_w,expected_h', [
+ ([[]], [], [0]),
+ ([['']], [0], [0]),
+ ([['', '']], [0, 0], [0]),
+
+ ([[], []], [], [0, 0]),
+ ([[''], ['']], [0], [0, 0]),
+ ([['', ''], ['', '']], [0, 0], [0, 0]),
+])
+def test_zero_length(table_data, expected_w, expected_h):
+ """Test zero-length or empty tables.
+
+ :param list table_data: Input table data to test.
+ :param list expected_w: Expected widths.
+ :param list expected_h: Expected heights.
+ """
+ actual = max_dimensions(table_data)
+ assert actual == (expected_w, expected_h, expected_w, expected_h)
+
+
+def test_single_line():
+ """Test widths."""
+ table_data = [
+ ['Name', 'Color', 'Type'],
+ ['Avocado', 'green', 'nut'],
+ ['Tomato', 'red', 'fruit'],
+ ['Lettuce', 'green', 'vegetable'],
+ ]
+ assert max_dimensions(table_data, 1, 1) == ([7, 5, 9], [1, 1, 1, 1], [9, 7, 11], [1, 1, 1, 1])
+
+ table_data.append(['Watermelon', 'green', 'fruit'])
+ assert max_dimensions(table_data, 2, 2) == ([10, 5, 9], [1, 1, 1, 1, 1], [14, 9, 13], [1, 1, 1, 1, 1])
+
+
+def test_multi_line():
+ """Test heights."""
+ table_data = [
+ ['One\nTwo', 'Buckle\nMy\nShoe'],
+ ]
+ assert max_dimensions(table_data, 0, 0, 1, 1) == ([3, 6], [3], [3, 6], [5])
+
+ table_data = [
+ ['Show', 'Characters'],
+ ['Rugrats', ('Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles,\n'
+ 'Susie Carmichael, Dil Pickles, Kimi Finster, Spike')],
+ ['South Park', 'Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick']
+ ]
+ assert max_dimensions(table_data, 0, 0, 2, 2) == ([10, 83], [1, 2, 1], [10, 83], [5, 6, 5])
+
+
+def test_trailing_newline():
+ r"""Test with trailing \n."""
+ table_data = [
+ ['Row One\n<blank>'],
+ ['<blank>\nRow Two'],
+ ['Row Three\n'],
+ ['\nRow Four'],
+ ]
+ assert max_dimensions(table_data) == ([9], [2, 2, 2, 2], [9], [2, 2, 2, 2])
+
+
+def test_colors_cjk_rtl():
+ """Test color text, CJK characters, and RTL characters."""
+ table_data = [
+ [Color('{blue}Test{/blue}')],
+ [Fore.BLUE + 'Test' + Fore.RESET],
+ [colored('Test', 'blue')],
+ ]
+ assert max_dimensions(table_data) == ([4], [1, 1, 1], [4], [1, 1, 1])
+
+ table_data = [
+ ['蓝色'],
+ ['世界你好'],
+ ]
+ assert max_dimensions(table_data) == ([8], [1, 1], [8], [1, 1])
+
+ table_data = [
+ ['שלום'],
+ ['معرب'],
+ ]
+ assert max_dimensions(table_data) == ([4], [1, 1], [4], [1, 1])
+
+
+def test_non_string():
+ """Test with non-string values."""
+ table_data = [
+ [123, 0.9, None, True, False],
+ ]
+ assert max_dimensions(table_data) == ([3, 3, 4, 4, 5], [1], [3, 3, 4, 4, 5], [1])