diff options
author | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-05-28 14:48:52 -0400 |
---|---|---|
committer | Kevin Van Brunt <kmvanbrunt@gmail.com> | 2020-05-28 14:48:52 -0400 |
commit | 72b8a873d70f1c550b5e448d657b732f9a2d7cdb (patch) | |
tree | f91f63c7e1b97244aa715b10b61331814f78c66b /tests | |
parent | d4653e6fccf0bc15d04075110769c11befb22819 (diff) | |
download | cmd2-git-72b8a873d70f1c550b5e448d657b732f9a2d7cdb.tar.gz |
Updated argparse_completer to use TableCreator for the hint table
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_table_creator.py | 94 |
1 files changed, 52 insertions, 42 deletions
diff --git a/tests/test_table_creator.py b/tests/test_table_creator.py index ed53efa6..65cb8472 100644 --- a/tests/test_table_creator.py +++ b/tests/test_table_creator.py @@ -70,14 +70,14 @@ def test_column_alignment(): header = tc.generate_row() assert header == ('Col 1 Three \n' ' Col 2 line \n' - ' Col 3 header \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 \n') + ' Val 3 data ') def test_wrap_text(): @@ -93,13 +93,13 @@ def test_wrap_text(): 'that will \n' 'wrap \n' 'Not wrap \n' - ' 1 2 3 \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 \n') + ' last one ') def test_wrap_text_max_lines(): @@ -110,31 +110,31 @@ def test_wrap_text_max_lines(): row_data = ['First line last line'] row = tc.generate_row(row_data=row_data) assert row == ('First line\n' - 'last 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…\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…\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…\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…\n') + 'last line…') def test_wrap_long_word(): @@ -148,7 +148,7 @@ def test_wrap_long_word(): # Test header row header = tc.generate_row() assert header == ('LongColumn \n' - 'Name Col 2 \n') + 'Name Col 2 ') # Test data row row_data = list() @@ -162,7 +162,7 @@ def test_wrap_long_word(): 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 \n') + ' 10 ') assert row == expected @@ -192,7 +192,7 @@ def test_wrap_long_word_max_data_lines(): row = tc.generate_row(row_data=row_data) assert row == ('LongerThan LongerThan LongerThan A LongerT…\n' - '10FitsLast 10FitsLas… 10RunsOve… \n') + '10FitsLast 10FitsLas… 10RunsOve… ') def test_wrap_long_char_wider_than_max_width(): @@ -203,7 +203,7 @@ def test_wrap_long_char_wider_than_max_width(): column_1 = Column("Col 1", width=1) tc = TableCreator([column_1]) row = tc.generate_row(row_data=['深']) - assert row == '…\n' + assert row == '…' def test_generate_row_exceptions(): @@ -237,12 +237,12 @@ def test_tabs(): row = tc.generate_row(fill_char='\t', pre_line='\t', inter_cell='\t', post_line='\t') - assert row == ' Col 1 Col 2 \n' + assert row == ' Col 1 Col 2 ' def test_simple_table(): - column_1 = Column("Col 1", width=15) - column_2 = Column("Col 2", width=15) + column_1 = Column("Col 1", width=16) + column_2 = Column("Col 2", width=16) row_data = list() row_data.append(["Col 1 Row 1", "Col 2 Row 1"]) @@ -252,46 +252,56 @@ def test_simple_table(): 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' + 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 \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' + 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 + 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 \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' + 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 \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 \n') + 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' + assert table == ('Col 1 Row 1 Col 2 Row 1 \n' '\n' - 'Col 1 Row 2 Col 2 Row 2 \n') + 'Col 1 Row 2 Col 2 Row 2 ') # Invalid row spacing st = SimpleTable([column_1, column_2]) @@ -317,7 +327,7 @@ def test_bordered_table(): '║ Col 1 Row 1 │ Col 2 Row 1 ║\n' '╟─────────────────┼─────────────────╢\n' '║ Col 1 Row 2 │ Col 2 Row 2 ║\n' - '╚═════════════════╧═════════════════╝\n') + '╚═════════════════╧═════════════════╝') # No column borders bt = BorderedTable([column_1, column_2], column_borders=False) @@ -328,7 +338,7 @@ def test_bordered_table(): '║ Col 1 Row 1 Col 2 Row 1 ║\n' '╟──────────────────────────────────╢\n' '║ Col 1 Row 2 Col 2 Row 2 ║\n' - '╚══════════════════════════════════╝\n') + '╚══════════════════════════════════╝') # No header bt = BorderedTable([column_1, column_2]) @@ -337,7 +347,7 @@ def test_bordered_table(): '║ Col 1 Row 1 │ Col 2 Row 1 ║\n' '╟─────────────────┼─────────────────╢\n' '║ Col 1 Row 2 │ Col 2 Row 2 ║\n' - '╚═════════════════╧═════════════════╝\n') + '╚═════════════════╧═════════════════╝') # Non-default padding bt = BorderedTable([column_1, column_2], padding=2) @@ -348,7 +358,7 @@ def test_bordered_table(): '║ Col 1 Row 1 │ Col 2 Row 1 ║\n' '╟───────────────────┼───────────────────╢\n' '║ Col 1 Row 2 │ Col 2 Row 2 ║\n' - '╚═══════════════════╧═══════════════════╝\n') + '╚═══════════════════╧═══════════════════╝') # Invalid padding with pytest.raises(ValueError) as excinfo: @@ -372,7 +382,7 @@ def test_alternating_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' - '╚═════════════════╧═════════════════╝\n') + '╚═════════════════╧═════════════════╝') # Other bg colors at = AlternatingTable([column_1, column_2], bg_odd=ansi.bg.bright_blue, bg_even=ansi.bg.green) @@ -382,7 +392,7 @@ def test_alternating_table(): '╠═════════════════╪═════════════════╣\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' - '╚═════════════════╧═════════════════╝\n') + '╚═════════════════╧═════════════════╝') # No column borders at = AlternatingTable([column_1, column_2], column_borders=False) @@ -392,7 +402,7 @@ def test_alternating_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' - '╚══════════════════════════════════╝\n') + '╚══════════════════════════════════╝') # No header at = AlternatingTable([column_1, column_2]) @@ -400,7 +410,7 @@ def test_alternating_table(): 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' - '╚═════════════════╧═════════════════╝\n') + '╚═════════════════╧═════════════════╝') # Non-default padding at = AlternatingTable([column_1, column_2], padding=2) @@ -410,7 +420,7 @@ def test_alternating_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' - '╚═══════════════════╧═══════════════════╝\n') + '╚═══════════════════╧═══════════════════╝') # Invalid padding with pytest.raises(ValueError) as excinfo: |