summaryrefslogtreecommitdiff
path: root/tests/test_table_creator.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_table_creator.py')
-rw-r--r--tests/test_table_creator.py298
1 files changed, 170 insertions, 128 deletions
diff --git a/tests/test_table_creator.py b/tests/test_table_creator.py
index 0d2edfb2..c83aee2c 100644
--- a/tests/test_table_creator.py
+++ b/tests/test_table_creator.py
@@ -46,15 +46,30 @@ def test_column_creation():
def test_column_alignment():
- column_1 = Column("Col 1", width=10,
- header_horiz_align=HorizontalAlignment.LEFT, header_vert_align=VerticalAlignment.TOP,
- data_horiz_align=HorizontalAlignment.LEFT, data_vert_align=VerticalAlignment.TOP)
- column_2 = Column("Col 2", width=10,
- header_horiz_align=HorizontalAlignment.CENTER, header_vert_align=VerticalAlignment.MIDDLE,
- data_horiz_align=HorizontalAlignment.CENTER, data_vert_align=VerticalAlignment.MIDDLE)
- column_3 = Column("Col 3", width=10,
- header_horiz_align=HorizontalAlignment.RIGHT, header_vert_align=VerticalAlignment.BOTTOM,
- data_horiz_align=HorizontalAlignment.RIGHT, data_vert_align=VerticalAlignment.BOTTOM)
+ column_1 = Column(
+ "Col 1",
+ width=10,
+ header_horiz_align=HorizontalAlignment.LEFT,
+ header_vert_align=VerticalAlignment.TOP,
+ data_horiz_align=HorizontalAlignment.LEFT,
+ data_vert_align=VerticalAlignment.TOP,
+ )
+ column_2 = Column(
+ "Col 2",
+ width=10,
+ header_horiz_align=HorizontalAlignment.CENTER,
+ header_vert_align=VerticalAlignment.MIDDLE,
+ data_horiz_align=HorizontalAlignment.CENTER,
+ data_vert_align=VerticalAlignment.MIDDLE,
+ )
+ column_3 = Column(
+ "Col 3",
+ width=10,
+ header_horiz_align=HorizontalAlignment.RIGHT,
+ header_vert_align=VerticalAlignment.BOTTOM,
+ data_horiz_align=HorizontalAlignment.RIGHT,
+ data_vert_align=VerticalAlignment.BOTTOM,
+ )
column_4 = Column("Three\nline\nheader", width=10)
columns = [column_1, column_2, column_3, column_4]
@@ -68,16 +83,20 @@ def test_column_alignment():
# Create a header row
header = tc.generate_row()
- assert header == ('Col 1 Three \n'
- ' Col 2 line \n'
- ' Col 3 header ')
+ assert header == (
+ 'Col 1 Three \n'
+ ' Col 2 line \n'
+ ' Col 3 header '
+ )
# Create a data row
row_data = ["Val 1", "Val 2", "Val 3", "Three\nline\ndata"]
row = tc.generate_row(row_data=row_data)
- assert row == ('Val 1 Three \n'
- ' Val 2 line \n'
- ' Val 3 data ')
+ assert row == (
+ 'Val 1 Three \n'
+ ' Val 2 line \n'
+ ' Val 3 data '
+ )
def test_wrap_text():
@@ -87,19 +106,12 @@ def test_wrap_text():
# Test normal wrapping
row_data = ['Some text to wrap\nA new line that will wrap\nNot wrap\n 1 2 3']
row = tc.generate_row(row_data=row_data)
- assert row == ('Some text \n'
- 'to wrap \n'
- 'A new line\n'
- 'that will \n'
- 'wrap \n'
- 'Not wrap \n'
- ' 1 2 3 ')
+ assert row == ('Some text \n' 'to wrap \n' 'A new line\n' 'that will \n' 'wrap \n' 'Not wrap \n' ' 1 2 3 ')
# Test preserving a multiple space sequence across a line break
row_data = ['First last one']
row = tc.generate_row(row_data=row_data)
- assert row == ('First \n'
- ' last one ')
+ assert row == ('First \n' ' last one ')
def test_wrap_text_max_lines():
@@ -109,32 +121,27 @@ def test_wrap_text_max_lines():
# Test not needing to truncate the final line
row_data = ['First line last line']
row = tc.generate_row(row_data=row_data)
- assert row == ('First line\n'
- 'last line ')
+ assert row == ('First line\n' 'last line ')
# Test having to truncate the last word because it's too long for the final line
row_data = ['First line last lineextratext']
row = tc.generate_row(row_data=row_data)
- assert row == ('First line\n'
- 'last line…')
+ assert row == ('First line\n' 'last line…')
# Test having to truncate the last word because it fits the final line but there is more text not being included
row_data = ['First line thistxtfit extra']
row = tc.generate_row(row_data=row_data)
- assert row == ('First line\n'
- 'thistxtfi…')
+ assert row == ('First line\n' 'thistxtfi…')
# Test having to truncate the last word because it fits the final line but there are more lines not being included
row_data = ['First line thistxtfit\nextra']
row = tc.generate_row(row_data=row_data)
- assert row == ('First line\n'
- 'thistxtfi…')
+ assert row == ('First line\n' 'thistxtfi…')
# Test having space left on the final line and adding an ellipsis because there are more lines not being included
row_data = ['First line last line\nextra line']
row = tc.generate_row(row_data=row_data)
- assert row == ('First line\n'
- 'last line…')
+ assert row == ('First line\n' 'last line…')
def test_wrap_long_word():
@@ -147,8 +154,7 @@ def test_wrap_long_word():
# Test header row
header = tc.generate_row()
- assert header == ('LongColumn \n'
- 'Name Col 2 ')
+ assert header == ('LongColumn \n' 'Name Col 2 ')
# Test data row
row_data = list()
@@ -160,9 +166,22 @@ def test_wrap_long_word():
row_data.append("Word LongerThan10")
row = tc.generate_row(row_data=row_data)
- expected = (ansi.RESET_ALL + ansi.fg.green + "LongerThan" + ansi.RESET_ALL + " Word \n"
- + ansi.RESET_ALL + ansi.fg.green + "10" + ansi.fg.reset + ansi.RESET_ALL + ' ' + ansi.RESET_ALL + ' LongerThan\n'
- ' 10 ')
+ expected = (
+ ansi.RESET_ALL
+ + ansi.fg.green
+ + "LongerThan"
+ + ansi.RESET_ALL
+ + " Word \n"
+ + ansi.RESET_ALL
+ + ansi.fg.green
+ + "10"
+ + ansi.fg.reset
+ + ansi.RESET_ALL
+ + ' '
+ + ansi.RESET_ALL
+ + ' LongerThan\n'
+ ' 10 '
+ )
assert row == expected
@@ -191,8 +210,7 @@ def test_wrap_long_word_max_data_lines():
row_data.append("A LongerThan10RunsOverLast")
row = tc.generate_row(row_data=row_data)
- assert row == ('LongerThan LongerThan LongerThan A LongerT…\n'
- '10FitsLast 10FitsLas… 10RunsOve… ')
+ assert row == ('LongerThan LongerThan LongerThan A LongerT…\n' '10FitsLast 10FitsLas… 10RunsOve… ')
def test_wrap_long_char_wider_than_max_width():
@@ -235,8 +253,7 @@ def test_tabs():
column_2 = Column("Col 2")
tc = TableCreator([column_1, column_2], tab_width=2)
- row = tc.generate_row(fill_char='\t', pre_line='\t',
- inter_cell='\t', post_line='\t')
+ row = tc.generate_row(fill_char='\t', pre_line='\t', inter_cell='\t', post_line='\t')
assert row == ' Col 1 Col 2 '
@@ -252,67 +269,74 @@ def test_simple_table_creation():
st = SimpleTable([column_1, column_2])
table = st.generate_table(row_data)
- assert table == ('Col 1 Col 2 \n'
- '----------------------------------\n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n'
+ '----------------------------------\n'
+ 'Col 1 Row 1 Col 2 Row 1 \n'
+ '\n'
+ 'Col 1 Row 2 Col 2 Row 2 '
+ )
# Custom divider
st = SimpleTable([column_1, column_2], divider_char='─')
table = st.generate_table(row_data)
- assert table == ('Col 1 Col 2 \n'
- '──────────────────────────────────\n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n'
+ '──────────────────────────────────\n'
+ 'Col 1 Row 1 Col 2 Row 1 \n'
+ '\n'
+ 'Col 1 Row 2 Col 2 Row 2 '
+ )
# No divider
st = SimpleTable([column_1, column_2], divider_char=None)
table = st.generate_table(row_data)
- assert table == ('Col 1 Col 2 \n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n' 'Col 1 Row 1 Col 2 Row 1 \n' '\n' 'Col 1 Row 2 Col 2 Row 2 '
+ )
# No row spacing
st = SimpleTable([column_1, column_2])
table = st.generate_table(row_data, row_spacing=0)
- assert table == ('Col 1 Col 2 \n'
- '----------------------------------\n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n'
+ '----------------------------------\n'
+ 'Col 1 Row 1 Col 2 Row 1 \n'
+ 'Col 1 Row 2 Col 2 Row 2 '
+ )
# No header
st = SimpleTable([column_1, column_2])
table = st.generate_table(row_data, include_header=False)
- assert table == ('Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == ('Col 1 Row 1 Col 2 Row 1 \n' '\n' 'Col 1 Row 2 Col 2 Row 2 ')
# Wide custom divider (divider needs no padding)
st = SimpleTable([column_1, column_2], divider_char='深')
table = st.generate_table(row_data)
- assert table == ('Col 1 Col 2 \n'
- '深深深深深深深深深深深深深深深深深\n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n'
+ '深深深深深深深深深深深深深深深深深\n'
+ 'Col 1 Row 1 Col 2 Row 1 \n'
+ '\n'
+ 'Col 1 Row 2 Col 2 Row 2 '
+ )
# Wide custom divider (divider needs padding)
column_2 = Column("Col 2", width=17)
st = SimpleTable([column_1, column_2], divider_char='深')
table = st.generate_table(row_data)
- assert table == ('Col 1 Col 2 \n'
- '深深深深深深深深深深深深深深深深深 \n'
- 'Col 1 Row 1 Col 2 Row 1 \n'
- '\n'
- 'Col 1 Row 2 Col 2 Row 2 ')
+ assert table == (
+ 'Col 1 Col 2 \n'
+ '深深深深深深深深深深深深深深深深深 \n'
+ 'Col 1 Row 1 Col 2 Row 1 \n'
+ '\n'
+ 'Col 1 Row 2 Col 2 Row 2 '
+ )
# Invalid divider character
with pytest.raises(TypeError) as excinfo:
@@ -363,44 +387,52 @@ def test_bordered_table_creation():
# Default options
bt = BorderedTable([column_1, column_2])
table = bt.generate_table(row_data)
- assert table == ('╔═════════════════╤═════════════════╗\n'
- '║ Col 1 │ Col 2 ║\n'
- '╠═════════════════╪═════════════════╣\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '╟─────────────────┼─────────────────╢\n'
- '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
- '╚═════════════════╧═════════════════╝')
+ assert table == (
+ '╔═════════════════╤═════════════════╗\n'
+ '║ Col 1 │ Col 2 ║\n'
+ '╠═════════════════╪═════════════════╣\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '╟─────────────────┼─────────────────╢\n'
+ '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
+ '╚═════════════════╧═════════════════╝'
+ )
# No column borders
bt = BorderedTable([column_1, column_2], column_borders=False)
table = bt.generate_table(row_data)
- assert table == ('╔══════════════════════════════════╗\n'
- '║ Col 1 Col 2 ║\n'
- '╠══════════════════════════════════╣\n'
- '║ Col 1 Row 1 Col 2 Row 1 ║\n'
- '╟──────────────────────────────────╢\n'
- '║ Col 1 Row 2 Col 2 Row 2 ║\n'
- '╚══════════════════════════════════╝')
+ assert table == (
+ '╔══════════════════════════════════╗\n'
+ '║ Col 1 Col 2 ║\n'
+ '╠══════════════════════════════════╣\n'
+ '║ Col 1 Row 1 Col 2 Row 1 ║\n'
+ '╟──────────────────────────────────╢\n'
+ '║ Col 1 Row 2 Col 2 Row 2 ║\n'
+ '╚══════════════════════════════════╝'
+ )
# No header
bt = BorderedTable([column_1, column_2])
table = bt.generate_table(row_data, include_header=False)
- assert table == ('╔═════════════════╤═════════════════╗\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '╟─────────────────┼─────────────────╢\n'
- '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
- '╚═════════════════╧═════════════════╝')
+ assert table == (
+ '╔═════════════════╤═════════════════╗\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '╟─────────────────┼─────────────────╢\n'
+ '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
+ '╚═════════════════╧═════════════════╝'
+ )
# Non-default padding
bt = BorderedTable([column_1, column_2], padding=2)
table = bt.generate_table(row_data)
- assert table == ('╔═══════════════════╤═══════════════════╗\n'
- '║ Col 1 │ Col 2 ║\n'
- '╠═══════════════════╪═══════════════════╣\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '╟───────────────────┼───────────────────╢\n'
- '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
- '╚═══════════════════╧═══════════════════╝')
+ assert table == (
+ '╔═══════════════════╤═══════════════════╗\n'
+ '║ Col 1 │ Col 2 ║\n'
+ '╠═══════════════════╪═══════════════════╣\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '╟───────────────────┼───────────────────╢\n'
+ '║ Col 1 Row 2 │ Col 2 Row 2 ║\n'
+ '╚═══════════════════╧═══════════════════╝'
+ )
# Invalid padding
with pytest.raises(ValueError) as excinfo:
@@ -457,50 +489,60 @@ def test_alternating_table_creation():
# Default options
at = AlternatingTable([column_1, column_2])
table = at.generate_table(row_data)
- assert table == ('╔═════════════════╤═════════════════╗\n'
- '║ Col 1 │ Col 2 ║\n'
- '╠═════════════════╪═════════════════╣\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
- '╚═════════════════╧═════════════════╝')
+ assert table == (
+ '╔═════════════════╤═════════════════╗\n'
+ '║ Col 1 │ Col 2 ║\n'
+ '╠═════════════════╪═════════════════╣\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
+ '╚═════════════════╧═════════════════╝'
+ )
# Other bg colors
at = AlternatingTable([column_1, column_2], bg_odd=ansi.bg.bright_blue, bg_even=ansi.bg.green)
table = at.generate_table(row_data)
- assert table == ('╔═════════════════╤═════════════════╗\n'
- '║ Col 1 │ Col 2 ║\n'
- '╠═════════════════╪═════════════════╣\n'
- '\x1b[104m║ \x1b[49m\x1b[0m\x1b[104mCol 1 Row 1\x1b[49m\x1b[0m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[0m\x1b[104m │ \x1b[49m\x1b[0m\x1b[104mCol 2 Row 1\x1b[49m\x1b[0m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[0m\x1b[104m ║\x1b[49m\n'
- '\x1b[42m║ \x1b[49m\x1b[0m\x1b[42mCol 1 Row 2\x1b[49m\x1b[0m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[0m\x1b[42m │ \x1b[49m\x1b[0m\x1b[42mCol 2 Row 2\x1b[49m\x1b[0m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[0m\x1b[42m ║\x1b[49m\n'
- '╚═════════════════╧═════════════════╝')
+ assert table == (
+ '╔═════════════════╤═════════════════╗\n'
+ '║ Col 1 │ Col 2 ║\n'
+ '╠═════════════════╪═════════════════╣\n'
+ '\x1b[104m║ \x1b[49m\x1b[0m\x1b[104mCol 1 Row 1\x1b[49m\x1b[0m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[0m\x1b[104m │ \x1b[49m\x1b[0m\x1b[104mCol 2 Row 1\x1b[49m\x1b[0m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[104m \x1b[49m\x1b[0m\x1b[104m ║\x1b[49m\n'
+ '\x1b[42m║ \x1b[49m\x1b[0m\x1b[42mCol 1 Row 2\x1b[49m\x1b[0m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[0m\x1b[42m │ \x1b[49m\x1b[0m\x1b[42mCol 2 Row 2\x1b[49m\x1b[0m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[42m \x1b[49m\x1b[0m\x1b[42m ║\x1b[49m\n'
+ '╚═════════════════╧═════════════════╝'
+ )
# No column borders
at = AlternatingTable([column_1, column_2], column_borders=False)
table = at.generate_table(row_data)
- assert table == ('╔══════════════════════════════════╗\n'
- '║ Col 1 Col 2 ║\n'
- '╠══════════════════════════════════╣\n'
- '║ Col 1 Row 1 Col 2 Row 1 ║\n'
- '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
- '╚══════════════════════════════════╝')
+ assert table == (
+ '╔══════════════════════════════════╗\n'
+ '║ Col 1 Col 2 ║\n'
+ '╠══════════════════════════════════╣\n'
+ '║ Col 1 Row 1 Col 2 Row 1 ║\n'
+ '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
+ '╚══════════════════════════════════╝'
+ )
# No header
at = AlternatingTable([column_1, column_2])
table = at.generate_table(row_data, include_header=False)
- assert table == ('╔═════════════════╤═════════════════╗\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
- '╚═════════════════╧═════════════════╝')
+ assert table == (
+ '╔═════════════════╤═════════════════╗\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
+ '╚═════════════════╧═════════════════╝'
+ )
# Non-default padding
at = AlternatingTable([column_1, column_2], padding=2)
table = at.generate_table(row_data)
- assert table == ('╔═══════════════════╤═══════════════════╗\n'
- '║ Col 1 │ Col 2 ║\n'
- '╠═══════════════════╪═══════════════════╣\n'
- '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
- '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
- '╚═══════════════════╧═══════════════════╝')
+ assert table == (
+ '╔═══════════════════╤═══════════════════╗\n'
+ '║ Col 1 │ Col 2 ║\n'
+ '╠═══════════════════╪═══════════════════╣\n'
+ '║ Col 1 Row 1 │ Col 2 Row 1 ║\n'
+ '\x1b[100m║ \x1b[49m\x1b[0m\x1b[100mCol 1 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m │ \x1b[49m\x1b[0m\x1b[100mCol 2 Row 2\x1b[49m\x1b[0m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[100m \x1b[49m\x1b[0m\x1b[100m ║\x1b[49m\n'
+ '╚═══════════════════╧═══════════════════╝'
+ )
# Invalid padding
with pytest.raises(ValueError) as excinfo: