"""Test function in module.""" import pytest from colorama import Fore from colorclass import Color from termcolor import colored from terminaltables3.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"], ["\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])