# Test PaginationInfo
info = PaginationInfo(total_items=100, items_per_page=24, current_page=1)
# Test basic properties
assert info.total_pages == 5 # 100/24 = 4.16, rounds up to 5
assert info.has_prev == False
assert info.has_next == True
assert info.start_index == 0
assert info.end_index == 24
assert info.items_on_page == 24
# Test middle page
info = PaginationInfo(total_items=100, items_per_page=24, current_page=3)
assert info.has_prev == True
assert info.has_next == True
assert info.start_index == 48
assert info.end_index == 72
# Test last page
info = PaginationInfo(total_items=100, items_per_page=24, current_page=5)
assert info.has_prev == True
assert info.has_next == False
assert info.start_index == 96
assert info.end_index == 100
assert info.items_on_page == 4
# Test visible pages
info = PaginationInfo(total_items=100, items_per_page=10, current_page=5)
visible = info.get_visible_pages(5)
assert len(visible) == 5
assert 5 in visible # Current page
# Test empty
info = PaginationInfo(total_items=0, items_per_page=24, current_page=1)
assert info.total_pages == 1
assert info.items_on_page == 0
print("PaginationInfo tests passed!")PaginationInfo tests passed!