Spaces:
Runtime error
Runtime error
| import pytest | |
| from src.markdown_table_parser import parse_markdown_table | |
| def test_simple_table(): | |
| md_table = """ | |
| | Name | Age | City | | |
| |-------|-----|-----------| | |
| | Alice | 30 | New York | | |
| | Bob | 24 | Paris | | |
| """ | |
| expected = { | |
| 'Name': ['Alice', 'Bob'], | |
| 'Age': ['30', '24'], | |
| 'City': ['New York', 'Paris'] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_gaia_question_table(): | |
| md_table = """ | |
| |*|a|b|c|d|e| | |
| |---|---|---|---|---|---| | |
| |a|a|b|c|b|d| | |
| |b|b|c|a|e|c| | |
| |c|c|a|b|b|a| | |
| |d|b|e|b|e|d| | |
| |e|d|b|a|d|c| | |
| """ | |
| expected = { | |
| '*': ['a', 'b', 'c', 'd', 'e'], | |
| 'a': ['a', 'b', 'c', 'b', 'd'], | |
| 'b': ['b', 'c', 'a', 'e', 'b'], | |
| 'c': ['c', 'a', 'b', 'b', 'a'], | |
| 'd': ['b', 'e', 'b', 'e', 'd'], | |
| 'e': ['d', 'c', 'a', 'd', 'c'] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_table_with_empty_cells(): | |
| md_table = """ | |
| | Header1 | Header2 | Header3 | | |
| |---------|---------|---------| | |
| | A | | C | | |
| | D | E | | | |
| """ | |
| expected = { | |
| 'Header1': ['A', 'D'], | |
| 'Header2': ['', 'E'], | |
| 'Header3': ['C', ''] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_no_data_rows(): | |
| md_table = """ | |
| | Col1 | Col2 | | |
| |------|------| | |
| """ | |
| expected = { | |
| 'Col1': [], | |
| 'Col2': [] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_malformed_table_missing_separator(): | |
| md_table = """ | |
| | HeaderA | HeaderB | | |
| | Val1 | Val2 | | |
| """ | |
| assert parse_markdown_table(md_table) is None | |
| def test_malformed_table_column_mismatch(): | |
| md_table = """ | |
| | H1 | H2 | | |
| |----|----| | |
| | C1 | C2 | C3 | | |
| """ | |
| # Current implementation skips rows with mismatched column counts | |
| expected = { | |
| 'H1': [], | |
| 'H2': [] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_not_a_table(): | |
| text = "This is just some plain text, not a table." | |
| assert parse_markdown_table(text) is None | |
| def test_empty_string(): | |
| assert parse_markdown_table("") is None | |
| def test_table_with_extra_spacing(): | |
| md_table = """ | |
| | Name | Age | City | | |
| |---------|-------|-------------| | |
| | Alice | 30 | New York | | |
| | Bob | 24 | Paris | | |
| """ | |
| expected = { | |
| 'Name': ['Alice', 'Bob'], | |
| 'Age': ['30', '24'], | |
| 'City': ['New York', 'Paris'] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |
| def test_table_in_larger_text(): | |
| text_with_table = """ | |
| Some text before the table. | |
| | Key | Value | | |
| |-----|-------| | |
| | K1 | V1 | | |
| | K2 | V2 | | |
| Some text after the table. | |
| """ | |
| expected = { | |
| 'Key': ['K1', 'K2'], | |
| 'Value': ['V1', 'V2'] | |
| } | |
| assert parse_markdown_table(text_with_table) == expected | |
| def test_table_with_different_separator_styles(): | |
| md_table = """ | |
| | Syntax | Description | | |
| | :-------- | :-----------: | | |
| | Header | Title | | |
| | Paragraph | Text | | |
| """ | |
| expected = { | |
| 'Syntax': ['Header', 'Paragraph'], | |
| 'Description': ['Title', 'Text'] | |
| } | |
| assert parse_markdown_table(md_table) == expected | |