from boltons.tableutils import Table def test_table_lists(): data_lists = [['id', 'name'], [1, 'John Doe'], [2, 'Dale Simmons']] t1 = Table(data_lists) assert set(t1.headers) == {'id', 'name'} assert len(t1) == 2 assert 'John Doe' in repr(t1) T2_REF_HTML = """
id1
nameJohn Doe
""" T3_REF_HTML = """
idname
1John Doe
2Dale Simmons
3Kurt Rose
4None
""" def test_table_dicts(): data_dicts = [{'id': 1, 'name': 'John Doe'}, {'id': 2, 'name': 'Dale Simmons'}] t2 = Table.from_dict(data_dicts[0]) t3 = Table.from_dict(data_dicts) t3.extend([[3, 'Kurt Rose'], [4]]) assert set(t2.headers) == {'id', 'name'} assert len(t2) == 1 # the sorted() stuff handles ordering differences between versions # TODO: should maybe change Table to sort the headers of dicts and such? assert sorted(t2.to_html()) == sorted(T2_REF_HTML) assert sorted(t3.to_html()) == sorted(T3_REF_HTML) assert t3.to_text() def test_table_obj(): class TestType: def __init__(self): self.greeting = 'hi' t4 = Table.from_object(TestType()) assert len(t4) == 1 assert 'greeting' in t4.headers