diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-01-30 08:13:47 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2021-02-07 10:48:06 +0000 |
commit | 57bc0d56d7e741e1e99d96f14e7ab93232440a16 (patch) | |
tree | 0d4631d7416ba98b7a414dc825419afd5b177be0 /tests/tabular_output/test_tabulate_adapter.py | |
parent | Initial commit. (diff) | |
download | cli-helpers-upstream/2.1.0.tar.xz cli-helpers-upstream/2.1.0.zip |
Adding upstream version 2.1.0.upstream/2.1.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'tests/tabular_output/test_tabulate_adapter.py')
-rw-r--r-- | tests/tabular_output/test_tabulate_adapter.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/tests/tabular_output/test_tabulate_adapter.py b/tests/tabular_output/test_tabulate_adapter.py new file mode 100644 index 0000000..e0dd5a8 --- /dev/null +++ b/tests/tabular_output/test_tabulate_adapter.py @@ -0,0 +1,96 @@ +# -*- coding: utf-8 -*- +"""Test the tabulate output adapter.""" + +from __future__ import unicode_literals +from textwrap import dedent + +import pytest + +from cli_helpers.compat import HAS_PYGMENTS +from cli_helpers.tabular_output import tabulate_adapter + +if HAS_PYGMENTS: + from pygments.style import Style + from pygments.token import Token + + +def test_tabulate_wrapper(): + """Test the *output_formatter.tabulate_wrapper()* function.""" + data = [['abc', 1], ['d', 456]] + headers = ['letters', 'number'] + output = tabulate_adapter.adapter(iter(data), headers, table_format='psql') + assert "\n".join(output) == dedent('''\ + +-----------+----------+ + | letters | number | + |-----------+----------| + | abc | 1 | + | d | 456 | + +-----------+----------+''') + + data = [['{1,2,3}', '{{1,2},{3,4}}', '{å,魚,текст}'], ['{}', '<null>', '{<null>}']] + headers = ['bigint_array', 'nested_numeric_array', '配列'] + output = tabulate_adapter.adapter(iter(data), headers, table_format='psql') + assert "\n".join(output) == dedent('''\ + +----------------+------------------------+--------------+ + | bigint_array | nested_numeric_array | 配列 | + |----------------+------------------------+--------------| + | {1,2,3} | {{1,2},{3,4}} | {å,魚,текст} | + | {} | <null> | {<null>} | + +----------------+------------------------+--------------+''') + + +def test_markup_format(): + """Test that markup formats do not have number align or string align.""" + data = [['abc', 1], ['d', 456]] + headers = ['letters', 'number'] + output = tabulate_adapter.adapter(iter(data), headers, table_format='mediawiki') + assert "\n".join(output) == dedent('''\ + {| class="wikitable" style="text-align: left;" + |+ <!-- caption --> + |- + ! letters !! number + |- + | abc || 1 + |- + | d || 456 + |}''') + + +@pytest.mark.skipif(not HAS_PYGMENTS, reason='requires the Pygments library') +def test_style_output_table(): + """Test that *style_output_table()* styles the output table.""" + + class CliStyle(Style): + default_style = "" + styles = { + Token.Output.TableSeparator: 'ansibrightred', + } + headers = ['h1', 'h2'] + data = [['观音', '2'], ['Ποσειδῶν', 'b']] + style_output_table = tabulate_adapter.style_output_table('psql') + + style_output_table(data, headers, style=CliStyle) + output = tabulate_adapter.adapter(iter(data), headers, table_format='psql') + + assert "\n".join(output) == dedent('''\ + \x1b[91m+\x1b[39m''' + ( + ('\x1b[91m-\x1b[39m' * 10) + + '\x1b[91m+\x1b[39m' + + ('\x1b[91m-\x1b[39m' * 6)) + + '''\x1b[91m+\x1b[39m + \x1b[91m|\x1b[39m h1 \x1b[91m|\x1b[39m''' + + ''' h2 \x1b[91m|\x1b[39m + ''' + '\x1b[91m|\x1b[39m' + ( + ('\x1b[91m-\x1b[39m' * 10) + + '\x1b[91m+\x1b[39m' + + ('\x1b[91m-\x1b[39m' * 6)) + + '''\x1b[91m|\x1b[39m + \x1b[91m|\x1b[39m 观音 \x1b[91m|\x1b[39m''' + + ''' 2 \x1b[91m|\x1b[39m + \x1b[91m|\x1b[39m Ποσειδῶν \x1b[91m|\x1b[39m''' + + ''' b \x1b[91m|\x1b[39m + ''' + '\x1b[91m+\x1b[39m' + ( + ('\x1b[91m-\x1b[39m' * 10) + + '\x1b[91m+\x1b[39m' + + ('\x1b[91m-\x1b[39m' * 6)) + + '\x1b[91m+\x1b[39m') |