python_morsels/parse_ranges/test_parse_ranges.py

41 lines
1.2 KiB
Python

import unittest
from parse_ranges import parse_ranges
class ParseRangesTests(unittest.TestCase):
"""Tests for parse_ranges."""
def test_three_ranges(self):
self.assertEqual(list(parse_ranges("1-2,4-4,8-10")), [1, 2, 4, 8, 9, 10])
def test_with_spaces(self):
self.assertEqual(
list(parse_ranges("0-0, 4-8, 20-21, 43-45")),
[0, 4, 5, 6, 7, 8, 20, 21, 43, 44, 45],
)
def test_return_iterator(self):
numbers = parse_ranges("0-0, 4-8, 20-21, 43-45")
self.assertEqual(next(numbers), 0)
self.assertEqual(list(numbers), [4, 5, 6, 7, 8, 20, 21, 43, 44, 45])
self.assertEqual(list(numbers), [])
numbers = parse_ranges("100-1000000000000")
self.assertEqual(next(numbers), 100)
def test_with_individual_numbers(self):
self.assertEqual(
list(parse_ranges("0,4-8,20,43-45")), [0, 4, 5, 6, 7, 8, 20, 43, 44, 45]
)
def test_ignore_arrows(self):
self.assertEqual(
list(parse_ranges("0, 4-8, 20->exit, 43-45")),
[0, 4, 5, 6, 7, 8, 20, 43, 44, 45],
)
if __name__ == "__main__":
unittest.main(verbosity=2)