init: company-haness 설계
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
"""Pagination helper — contains an off-by-one bug that drops the last item of a page.
|
||||
|
||||
The bug: `end = start + size - 1` and slicing `items[start:end]` excludes the last
|
||||
element of each page. A correct implementation returns exactly `size` items per page
|
||||
(and the remainder on the final page).
|
||||
"""
|
||||
|
||||
|
||||
def paginate(items, page, size):
|
||||
"""Return the `page`-th (1-indexed) slice of `items` with `size` per page."""
|
||||
start = (page - 1) * size
|
||||
end = start + size - 1 # BUG: off-by-one — drops the last item of the page
|
||||
return items[start:end]
|
||||
@@ -0,0 +1,22 @@
|
||||
"""Objective acceptance test for GT-01 (held as the verify command).
|
||||
|
||||
This test currently FAILS against the buggy paginate() (off-by-one drops the last
|
||||
item). A correct fix makes it pass. The benchmark runner runs `pytest -q` after each
|
||||
arm and grades first-pass-acceptance on the exit code.
|
||||
"""
|
||||
from paginate import paginate
|
||||
|
||||
|
||||
def test_full_page_returns_size_items():
|
||||
items = list(range(10))
|
||||
assert paginate(items, 1, 5) == [0, 1, 2, 3, 4]
|
||||
assert paginate(items, 2, 5) == [5, 6, 7, 8, 9]
|
||||
|
||||
|
||||
def test_last_item_not_dropped():
|
||||
assert paginate([1, 2, 3], 1, 3) == [1, 2, 3]
|
||||
|
||||
|
||||
def test_partial_last_page():
|
||||
assert paginate([1, 2, 3, 4, 5], 1, 2) == [1, 2]
|
||||
assert paginate([1, 2, 3, 4, 5], 3, 2) == [5]
|
||||
Reference in New Issue
Block a user