diff options
author | Trevor McCasland <TM2086@att.com> | 2016-08-09 16:17:05 -0500 |
---|---|---|
committer | Alexis Lee <lxsli@hpe.com> | 2016-08-22 17:39:19 +0100 |
commit | a3c590e806b49cd15a9556dbc71f059e2c2d3962 (patch) | |
tree | f44f761e7deaa6d62c7b9a66e7e66882bbeb88a0 /oslo_config/tests/test_types.py | |
parent | 2449197425ea5a712d93191042414c540f2656e4 (diff) | |
download | oslo-config-a3c590e806b49cd15a9556dbc71f059e2c2d3962.tar.gz |
Add Range type
Add a type which accepts "1-3" to produce a range. This can be used to
EG find a free port in a range or validate that a user input is
acceptable.
It should be possible to make a ListOpt(Range) which will accept
"1-3,5-6".
Change-Id: I9a2727522f25535a25c53ac89cd5e0096c87fef9
Co-Authored-By: Alexis Lee <lxsli@hpe.com>
Diffstat (limited to 'oslo_config/tests/test_types.py')
-rw-r--r-- | oslo_config/tests/test_types.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/oslo_config/tests/test_types.py b/oslo_config/tests/test_types.py index b53817d..524aa94 100644 --- a/oslo_config/tests/test_types.py +++ b/oslo_config/tests/test_types.py @@ -16,6 +16,7 @@ import re import unittest from oslo_config import types +from six.moves import range as compat_range class ConfigTypeTests(unittest.TestCase): @@ -545,6 +546,45 @@ class ListTypeTests(TypeTestHelper, unittest.TestCase): self.assertFalse(types.List() == types.Integer()) +class RangeTypeTests(TypeTestHelper, unittest.TestCase): + type = types.Range() + + def assertRange(self, s, r1, r2, step=1): + self.assertEqual(list(compat_range(r1, r2, step)), + list(self.type_instance(s))) + + def test_range(self): + self.assertRange('0-2', 0, 3) + self.assertRange('-2-0', -2, 1) + self.assertRange('2-0', 2, -1, -1) + self.assertRange('-3--1', -3, 0) + self.assertRange('-1--3', -1, -4, -1) + self.assertRange('-1', -1, 0) + self.assertInvalid('--1') + self.assertInvalid('4-') + self.assertInvalid('--') + self.assertInvalid('1.1-1.2') + self.assertInvalid('a-b') + + def test_range_bounds(self): + self.type_instance = types.Range(1, 3) + self.assertRange('1-3', 1, 4) + self.assertRange('2-2', 2, 3) + self.assertRange('2', 2, 3) + self.assertInvalid('1-4') + self.assertInvalid('0-3') + self.assertInvalid('0-4') + + def test_range_exclusive(self): + self.type_instance = types.Range(inclusive=False) + self.assertRange('0-2', 0, 2) + self.assertRange('-2-0', -2, 0) + self.assertRange('2-0', 2, 0, -1) + self.assertRange('-3--1', -3, -1) + self.assertRange('-1--3', -1, -3, -1) + self.assertRange('-1', -1, -1) + + class DictTypeTests(TypeTestHelper, unittest.TestCase): type = types.Dict() |