diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-27 21:20:19 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-27 21:20:19 +0000 |
commit | 89ea3acd0add73049a9ff7e73a0fdd646c7c9894 (patch) | |
tree | aa7e6c5e69e4f3657fe9aa3bf46332991c92d6be /ipalib/ipa_types.py | |
parent | 6b214cbccf5211078e3c2b3386c036d50c262f94 (diff) | |
download | freeipa-89ea3acd0add73049a9ff7e73a0fdd646c7c9894.tar.gz freeipa-89ea3acd0add73049a9ff7e73a0fdd646c7c9894.tar.xz freeipa-89ea3acd0add73049a9ff7e73a0fdd646c7c9894.zip |
203: Finished ipa_types.check_min_max() function; added corresponding unit tests; ipa_types.Int now uses check_min_max()
Diffstat (limited to 'ipalib/ipa_types.py')
-rw-r--r-- | ipalib/ipa_types.py | 47 |
1 files changed, 21 insertions, 26 deletions
diff --git a/ipalib/ipa_types.py b/ipalib/ipa_types.py index 9a34a6b63..a03b88227 100644 --- a/ipalib/ipa_types.py +++ b/ipalib/ipa_types.py @@ -25,6 +25,26 @@ from plugable import ReadOnly, lock import errors +def check_min_max(min_value, max_value, min_name, max_name): + assert type(min_name) is str, 'min_name must be an str' + assert type(max_name) is str, 'max_name must be an str' + for (name, value) in [(min_name, min_value), (max_name, max_value)]: + if not (value is None or type(value) is int): + raise TypeError( + '`%s` must be an int or None, got: %r' % (name, value) + ) + if None not in (min_value, max_value) and min_value >= max_value: + d = dict( + k0=min_name, + v0=min_value, + k1=max_name, + v1=max_value, + ) + raise ValueError( + '%(k1)s > %(k0)s: %(k0)s=%(v0)r, %(k1)s=%(v1)r' % d + ) + + class Type(ReadOnly): """ Base class for all IPA types. @@ -47,16 +67,7 @@ class Int(Type): type = int def __init__(self, min_value=None, max_value=None): - args = (min_value, max_value) - for arg in args: - if not (arg is None or type(arg) is int): - raise TypeError('Must be an int or None: %r' % arg) - if None not in args and min_value >= max_value: - raise ValueError( - 'min_value not less than max_value: %r, %r' % ( - min_value, max_value - ) - ) + check_min_max(min_value, max_value, 'min_value', 'max_value') self.min_value = min_value self.max_value = max_value lock(self) @@ -70,22 +81,6 @@ class Int(Type): return 'Cannot be larger than %d' % self.max_value -def check_min_max(min_name, min_value, max_name, max_value): - assert type(min_name) is str, 'min_name must be an str' - assert type(max_name) is str, 'max_name must be an str' - for (name, value) in [(min_name, min_value), (max_name, max_value)]: - if not (value is None or type(value) is int): - raise TypeError( - '%s must be an int or None, got: %r' % (name, value) - ) -# if None not in (min_value, max_value) and min_value >= max_value: -# raise ValueError( -# 'min_value not less than max_value: %r, %r' % ( -# min_value, max_value -# ) -# ) - - class Unicode(Type): def __init__(self, min_length=None, max_length=None, pattern=None): integers = (min_length, max_length) |