42 lines
1.2 KiB
Python
42 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]
|
|
)
|
|
|
|
@unittest.expectedFailure
|
|
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)
|