Created
January 7, 2021 14:25
-
-
Save RyanSnodgrass/3aa8db7e7b648eb85316aea2f1f7a23e to your computer and use it in GitHub Desktop.
Iterator that returns the next n numbers as a list.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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