def test_attributes():
    """Test with different attributes."""
    table_data = [
        ['Name', 'Color', 'Type'],
        ['Avocado', 'green', 'nut'],
        ['Tomato', 'red', 'fruit'],
        ['Lettuce', 'green', 'vegetable'],
    ]
    table = AsciiTable(table_data)

    assert 31 == max(len(r) for r in table.table.splitlines())
    assert 31 == table.table_width

    table.outer_border = False
    assert 29 == max(len(r) for r in table.table.splitlines())
    assert 29 == table.table_width

    table.inner_column_border = False
    assert 27 == max(len(r) for r in table.table.splitlines())
    assert 27 == table.table_width

    table.padding_left = 0
    assert 24 == max(len(r) for r in table.table.splitlines())
    assert 24 == table.table_width

    table.padding_right = 0
    assert 21 == max(len(r) for r in table.table.splitlines())
    assert 21 == table.table_width
Exemple #2
0
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
Exemple #3
0
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
Exemple #4
0
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_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
Exemple #6
0
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_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
Exemple #8
0
def test_attributes():
    """Test with different attributes."""
    table_data = [
        ['Name', 'Color', 'Type'],
        ['Avocado', 'green', 'nut'],
        ['Tomato', 'red', 'fruit'],
        ['Lettuce', 'green', 'vegetable'],
    ]
    table = AsciiTable(table_data)

    assert 31 == max(len(r) for r in table.table.splitlines())
    assert 31 == table.table_width

    table.outer_border = False
    assert 29 == max(len(r) for r in table.table.splitlines())
    assert 29 == table.table_width

    table.inner_column_border = False
    assert 27 == max(len(r) for r in table.table.splitlines())
    assert 27 == table.table_width

    table.padding_left = 0
    assert 24 == max(len(r) for r in table.table.splitlines())
    assert 24 == table.table_width

    table.padding_right = 0
    assert 21 == max(len(r) for r in table.table.splitlines())
    assert 21 == table.table_width
Exemple #9
0
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
def test_unicode():
    """Test colors and Unicode characters."""
    table_data = [
        [Color('{b}Name{/b}'), Color('{b}Color{/b}'), Color('{b}Type{/b}')],
        ['Avocado', Color('{autogreen}green{/autogreen}'), 'nut'],
        [Color(u'{u}Cupuaçu{/u}'), Color('{autoyellow}yellow{/autoyellow}'), 'fruit'],
        [Color(u'{u}äöüß{/u}'), '', 'neither'],
    ]
    table = AsciiTable(table_data)

    expected = dedent(u"""\
        +---------+--------+---------+
        | Name    | Color  | Type    |
        +---------+--------+---------+
        | Avocado | green  | nut     |
        | Cupuaçu | yellow | fruit   |
        | äöüß    |        | neither |
        +---------+--------+---------+""")
    assert Color(table.table).value_no_colors == expected
def test_ascii():
    """Test colors and ASCII characters."""
    table_data = [
        [Color('{b}Name{/b}'), Color('{b}Color{/b}'), Color('{b}Type{/b}')],
        ['Avocado', Color('{autogreen}green{/autogreen}'), 'nut'],
        ['Tomato', Color('{autored}red{/autored}'), 'fruit'],
        ['Lettuce', Color('{autogreen}green{/autogreen}'), 'vegetable'],
    ]
    table = AsciiTable(table_data, Color('{autocyan}Foods{/autocyan}'))

    expected = dedent("""\
        +Foods----+-------+-----------+
        | Name    | Color | Type      |
        +---------+-------+-----------+
        | Avocado | green | nut       |
        | Tomato  | red   | fruit     |
        | Lettuce | green | vegetable |
        +---------+-------+-----------+""")
    assert Color(table.table).value_no_colors == expected
Exemple #12
0
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_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