diff --git a/tests/test_all_tables_e2e/test_ascii_table.py b/tests/test_all_tables_e2e/test_ascii_table.py new file mode 100644 index 0000000..9a445b3 --- /dev/null +++ b/tests/test_all_tables_e2e/test_ascii_table.py @@ -0,0 +1,89 @@ +# coding=utf-8 +"""AsciiTable end to end testing.""" + +from terminaltables import AsciiTable + + +def test_single_line(): + """Test single-lined cells.""" + table_data = [ + ['Name', 'Color', 'Type'], + ['Avocado', 'green', 'nut'], + ['Tomato', 'red', 'fruit'], + ['Lettuce', 'green', 'vegetable'], + ['Watermelon', 'green'], + [], + ] + table = AsciiTable(table_data, 'Example') + table.inner_footing_row_border = True + table.justify_columns[0] = 'left' + table.justify_columns[1] = 'center' + table.justify_columns[2] = 'right' + actual = table.table + + expected = ( + '+Example-----+-------+-----------+\n' + '| Name | Color | Type |\n' + '+------------+-------+-----------+\n' + '| Avocado | green | nut |\n' + '| Tomato | red | fruit |\n' + '| Lettuce | green | vegetable |\n' + '| Watermelon | green | |\n' + '+------------+-------+-----------+\n' + '| | | |\n' + '+------------+-------+-----------+' + ) + assert actual == expected + + +def test_multi_line(): + """Test multi-lined cells.""" + table_data = [ + ['Show', 'Characters'], + ['Rugrats', 'Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles,\nDil Pickles'], + ['South Park', 'Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick'] + ] + table = AsciiTable(table_data) + + # Test defaults. + actual = table.table + expected = ( + '+------------+-------------------------------------------------------------------------------------+\n' + '| Show | Characters |\n' + '+------------+-------------------------------------------------------------------------------------+\n' + '| Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n' + '| | Dil Pickles |\n' + '| South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick |\n' + '+------------+-------------------------------------------------------------------------------------+' + ) + assert actual == expected + + # Test inner row border. + table.inner_row_border = True + actual = table.table + expected = ( + '+------------+-------------------------------------------------------------------------------------+\n' + '| Show | Characters |\n' + '+------------+-------------------------------------------------------------------------------------+\n' + '| Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n' + '| | Dil Pickles |\n' + '+------------+-------------------------------------------------------------------------------------+\n' + '| South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick |\n' + '+------------+-------------------------------------------------------------------------------------+' + ) + assert actual == expected + + # Justify right. + table.justify_columns = {1: 'right'} + actual = table.table + expected = ( + '+------------+-------------------------------------------------------------------------------------+\n' + '| Show | Characters |\n' + '+------------+-------------------------------------------------------------------------------------+\n' + '| Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, |\n' + '| | Dil Pickles |\n' + '+------------+-------------------------------------------------------------------------------------+\n' + '| South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick |\n' + '+------------+-------------------------------------------------------------------------------------+' + ) + assert actual == expected diff --git a/tests/test_tables_asciitable.py b/tests/test_tables_asciitable.py deleted file mode 100644 index 276e161..0000000 --- a/tests/test_tables_asciitable.py +++ /dev/null @@ -1,308 +0,0 @@ -# coding=utf-8 -"""Test end to end showing ASCII table.""" - -from textwrap import dedent - -from terminaltables.other_tables import AsciiTable - - -def test_empty(): - """Test empty table.""" - expected = dedent("""\ - ++ - ++""") - table = AsciiTable([]) - assert table.table == expected - - expected = dedent("""\ - ++ - || - ++""") - table = AsciiTable([[]]) - assert table.table == expected - - expected = dedent("""\ - +--+ - | | - +--+""") - table = AsciiTable([['']]) - assert table.table == expected - - expected = dedent("""\ - +---+ - | | - +---+""") - table = AsciiTable([[' ']]) - assert table.table == expected - - -def test_simple(): - """Test simple table.""" - table_data = [ - ['Name', 'Color', 'Type'], - ['Avocado', 'green', 'nut'], - ['Tomato', 'red', 'fruit'], - ['Lettuce', 'green', 'vegetable'], - ] - table = AsciiTable(table_data) - - expected = dedent("""\ - +---------+-------+-----------+ - | Name | Color | Type | - +---------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - +---------+-------+-----------+""") - assert table.table == expected - - table_data.append(['Watermelon', 'green']) - table_data.append([]) - expected = dedent("""\ - +------------+-------+-----------+ - | Name | Color | Type | - +------------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - | Watermelon | green | | - | | | | - +------------+-------+-----------+""") - assert table.table == expected - - -def test_title(): - """Test that table title shows up correctly.""" - table_data = [ - ['Name', 'Color', 'Type'], - ['Avocado', 'green', 'nut'], - ['Tomato', 'red', 'fruit'], - ['Lettuce', 'green', 'vegetable'], - ] - table = AsciiTable(table_data, 'Foods') - - expected = dedent("""\ - +Foods----+-------+-----------+ - | Name | Color | Type | - +---------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - +---------+-------+-----------+""") - assert table.table == expected - - table.title = 'Foooooooooooooods' - expected = dedent("""\ - +Foooooooooooooods+-----------+ - | Name | Color | Type | - +---------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - +---------+-------+-----------+""") - assert table.table == expected - - table.title = 'Foooooooooooooodsssssssssssss' - expected = dedent("""\ - +Foooooooooooooodsssssssssssss+ - | Name | Color | Type | - +---------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - +---------+-------+-----------+""") - assert table.table == expected - - table.title = 'Foooooooooooooodssssssssssssss' - expected = dedent("""\ - +---------+-------+-----------+ - | Name | Color | Type | - +---------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - +---------+-------+-----------+""") - assert table.table == expected - - -def test_attributes(): - """Test table attributes.""" - table_data = [ - ['Name', 'Color', 'Type'], - ['Avocado', 'green', 'nut'], - ['Tomato', 'red', 'fruit'], - ['Lettuce', 'green', 'vegetable'], - ['Watermelon', 'green'] - ] - table = AsciiTable(table_data) - - table.justify_columns[0] = 'right' - expected = dedent("""\ - +------------+-------+-----------+ - | Name | Color | Type | - +------------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - | Watermelon | green | | - +------------+-------+-----------+""") - assert table.table == expected - - table.justify_columns[2] = 'center' - expected = dedent("""\ - +------------+-------+-----------+ - | Name | Color | Type | - +------------+-------+-----------+ - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - | Watermelon | green | | - +------------+-------+-----------+""") - assert table.table == expected - - table.inner_heading_row_border = False - expected = dedent("""\ - +------------+-------+-----------+ - | Name | Color | Type | - | Avocado | green | nut | - | Tomato | red | fruit | - | Lettuce | green | vegetable | - | Watermelon | green | | - +------------+-------+-----------+""") - assert table.table == expected - - table.title = 'Foods' - table.inner_column_border = False - expected = dedent("""\ - +Foods-------------------------+ - | Name Color Type | - | Avocado green nut | - | Tomato red fruit | - | Lettuce green vegetable | - | Watermelon green | - +------------------------------+""") - assert table.table == expected - - table.outer_border = False - expected = ( - ' Name Color Type \n' - ' Avocado green nut \n' - ' Tomato red fruit \n' - ' Lettuce green vegetable \n' - ' Watermelon green ' - ) - assert table.table == expected - - table.outer_border = True - table.inner_row_border = True - expected = dedent("""\ - +Foods-------------------------+ - | Name Color Type | - +------------------------------+ - | Avocado green nut | - +------------------------------+ - | Tomato red fruit | - +------------------------------+ - | Lettuce green vegetable | - +------------------------------+ - | Watermelon green | - +------------------------------+""") - assert table.table == expected - - table.title = False - table.inner_column_border = True - table.inner_heading_row_border = False # Ignored due to inner_row_border. - table.inner_row_border = True - expected = dedent("""\ - +------------+-------+-----------+ - | Name | Color | Type | - +------------+-------+-----------+ - | Avocado | green | nut | - +------------+-------+-----------+ - | Tomato | red | fruit | - +------------+-------+-----------+ - | Lettuce | green | vegetable | - +------------+-------+-----------+ - | Watermelon | green | | - +------------+-------+-----------+""") - assert table.table == expected - - table.outer_border = False - expected = ( - ' Name | Color | Type \n' - '------------+-------+-----------\n' - ' Avocado | green | nut \n' - '------------+-------+-----------\n' - ' Tomato | red | fruit \n' - '------------+-------+-----------\n' - ' Lettuce | green | vegetable \n' - '------------+-------+-----------\n' - ' Watermelon | green | ' - ) - assert table.table == expected - - -def test_multi_line(): - """Test multi-line tables.""" - table_data = [ - ['Show', 'Characters'], - ['Rugrats', dedent('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'] - ] - table = AsciiTable(table_data) - - expected = dedent("""\ - +------------+-------------------------------------------------------------------------------------+ - | Show | Characters | - +------------+-------------------------------------------------------------------------------------+ - | Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, | - | | Susie Carmichael, Dil Pickles, Kimi Finster, Spike | - | South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick | - +------------+-------------------------------------------------------------------------------------+""") - assert table.table == expected - - table.inner_row_border = True - expected = dedent("""\ - +------------+-------------------------------------------------------------------------------------+ - | Show | Characters | - +------------+-------------------------------------------------------------------------------------+ - | Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, | - | | Susie Carmichael, Dil Pickles, Kimi Finster, Spike | - +------------+-------------------------------------------------------------------------------------+ - | South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick | - +------------+-------------------------------------------------------------------------------------+""") - assert table.table == expected - - table.justify_columns = {1: 'right'} - expected = dedent("""\ - +------------+-------------------------------------------------------------------------------------+ - | Show | Characters | - +------------+-------------------------------------------------------------------------------------+ - | Rugrats | Tommy Pickles, Chuckie Finster, Phillip DeVille, Lillian DeVille, Angelica Pickles, | - | | Susie Carmichael, Dil Pickles, Kimi Finster, Spike | - +------------+-------------------------------------------------------------------------------------+ - | South Park | Stan Marsh, Kyle Broflovski, Eric Cartman, Kenny McCormick | - +------------+-------------------------------------------------------------------------------------+""") - assert table.table == expected - - -def test_unicode(): - """Test Unicode characters.""" - table_data = [ - ['Name', 'Color', 'Type'], - ['Avocado', 'green', 'nut'], - [u'Cupuaçu', 'yellow', 'fruit'], - [u'äöüß', '', 'neither'], - ] - table = AsciiTable(table_data, 'Foods') - - expected = dedent(u"""\ - +Foods----+--------+---------+ - | Name | Color | Type | - +---------+--------+---------+ - | Avocado | green | nut | - | Cupuaçu | yellow | fruit | - | äöüß | | neither | - +---------+--------+---------+""") - assert table.table == expected