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 | |