test_intranges.py 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. #!/usr/bin/env python
  2. import unittest
  3. from idna.intranges import _encode_range, intranges_contain, intranges_from_list
  4. class IntrangeTests(unittest.TestCase):
  5. def test_ranging(self):
  6. self.assertEqual(
  7. intranges_from_list(list(range(293, 499)) + list(range(4888, 9876))),
  8. (
  9. _encode_range(293, 499),
  10. _encode_range(4888, 9876),
  11. ),
  12. )
  13. def test_ranging_2(self):
  14. self.assertEqual(intranges_from_list([111]), (_encode_range(111, 112),))
  15. def test_skips(self):
  16. self.assertEqual(
  17. intranges_from_list(
  18. [
  19. 0,
  20. 2,
  21. 4,
  22. 6,
  23. 9,
  24. 10,
  25. 11,
  26. 13,
  27. 15,
  28. ]
  29. ),
  30. (
  31. _encode_range(0, 1),
  32. _encode_range(2, 3),
  33. _encode_range(4, 5),
  34. _encode_range(6, 7),
  35. _encode_range(9, 12),
  36. _encode_range(13, 14),
  37. _encode_range(15, 16),
  38. ),
  39. )
  40. def test_empty_range(self):
  41. self.assertEqual(intranges_from_list([]), ())
  42. class IntrangeContainsTests(unittest.TestCase):
  43. def _test_containment(self, ints, disjoint_ints):
  44. ranges = intranges_from_list(ints)
  45. for int_ in ints:
  46. assert intranges_contain(int_, ranges)
  47. for int_ in disjoint_ints:
  48. assert not intranges_contain(int_, ranges)
  49. def test_simple(self):
  50. self._test_containment(range(10, 20), [2, 3, 68, 3893])
  51. def test_skips(self):
  52. self._test_containment(
  53. [
  54. 0,
  55. 2,
  56. 4,
  57. 6,
  58. 9,
  59. 10,
  60. 11,
  61. 13,
  62. 15,
  63. ],
  64. [-1, 1, 3, 5, 7, 4898],
  65. )
  66. def test_singleton(self):
  67. self._test_containment([111], [110, 112])
  68. def test_empty(self):
  69. self._test_containment([], range(100))