Skip to content

Instantly share code, notes, and snippets.

@RyanSnodgrass
Created January 7, 2021 14:25
Show Gist options
  • Save RyanSnodgrass/3aa8db7e7b648eb85316aea2f1f7a23e to your computer and use it in GitHub Desktop.
Save RyanSnodgrass/3aa8db7e7b648eb85316aea2f1f7a23e to your computer and use it in GitHub Desktop.
Iterator that returns the next n numbers as a list.
class Pager:
"""Iterator that returns the next n numbers as a list."""
def __init__(self, set_size=10):
self.set_size = set_size
self.start = 1
def __iter__(self):
return self
def __next__(self):
end = self.start + self.set_size
page_range = range(self.start, end)
self.start = end
return list(page_range)
import unittest
from pager import Pager
class TestPager(unittest.TestCase):
def test_return_next_ten_numbers(self):
"""By default the Pager class will return the next 10 numbers"""
idder = Pager()
assertion = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
self.assertEqual(next(idder), assertion)
second_assertion = [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
self.assertEqual(next(idder), second_assertion)
third_assertion = list(range(21, 31))
self.assertEqual(next(idder), third_assertion)
def test_return_dynamic_next_numbers(self):
"""Pager class will return next set of determined size"""
idder = Pager(set_size=25)
assertion = list(range(1, 26)) # 1 - 25
self.assertEqual(next(idder), assertion)
second_assertion = list(range(26, 51)) # 26 - 50
self.assertEqual(next(idder), second_assertion)
third_assertion = list(range(51, 76)) # 51 - 75
self.assertEqual(next(idder), third_assertion)
if __name__ == '__main__':
unittest.main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment