# -*- coding: utf-8 -*- """Test the delimited output adapter.""" from __future__ import unicode_literals from textwrap import dedent import pytest from cli_helpers.tabular_output import delimited_output_adapter def test_csv_wrapper(): """Test the delimited output adapter.""" # Test comma-delimited output. data = [['abc', '1'], ['d', '456']] headers = ['letters', 'number'] output = delimited_output_adapter.adapter(iter(data), headers, dialect='unix') assert "\n".join(output) == dedent('''\ "letters","number"\n\ "abc","1"\n\ "d","456"''') # Test tab-delimited output. data = [['abc', '1'], ['d', '456']] headers = ['letters', 'number'] output = delimited_output_adapter.adapter( iter(data), headers, table_format='csv-tab', dialect='unix') assert "\n".join(output) == dedent('''\ "letters"\t"number"\n\ "abc"\t"1"\n\ "d"\t"456"''') with pytest.raises(ValueError): output = delimited_output_adapter.adapter( iter(data), headers, table_format='foobar') list(output) def test_unicode_with_csv(): """Test that the csv wrapper can handle non-ascii characters.""" data = [['观音', '1'], ['Ποσειδῶν', '456']] headers = ['letters', 'number'] output = delimited_output_adapter.adapter(data, headers) assert "\n".join(output) == dedent('''\ letters,number\n\ 观音,1\n\ Ποσειδῶν,456''')