diff options
author | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-28 02:02:03 +0000 |
---|---|---|
committer | Jason Gerard DeRose <jderose@redhat.com> | 2008-08-28 02:02:03 +0000 |
commit | 039b9a2a9b8e4a5a81d338b642869cefa6a6d8e4 (patch) | |
tree | 466e7349087892020d00522c6b6119f6bd9b6fdc | |
parent | 2b01bdc1121bf7dee1296bc3b8bdf8443d54d202 (diff) | |
download | freeipa.git-039b9a2a9b8e4a5a81d338b642869cefa6a6d8e4.tar.gz freeipa.git-039b9a2a9b8e4a5a81d338b642869cefa6a6d8e4.tar.xz freeipa.git-039b9a2a9b8e4a5a81d338b642869cefa6a6d8e4.zip |
210: Type.__init__() now takes the type as the first argument, does not use subclass attribute; updated Int, Unicode, and their unit tests accordingly
-rw-r--r-- | ipalib/ipa_types.py | 17 | ||||
-rw-r--r-- | ipalib/tests/test_ipa_types.py | 21 |
2 files changed, 21 insertions, 17 deletions
diff --git a/ipalib/ipa_types.py b/ipalib/ipa_types.py index 5bcea534..8d30aaa4 100644 --- a/ipalib/ipa_types.py +++ b/ipalib/ipa_types.py @@ -51,7 +51,14 @@ class Type(ReadOnly): Base class for all IPA types. """ - type = None # Override in base class + def __init__(self, type_): + allowed = (bool, int, float, unicode) + if type_ not in allowed: + raise ValueError( + 'type_ must be in %r, got %r' % (type_, allowed) + ) + self.type = type_ + lock(self) def __get_name(self): """ @@ -75,13 +82,11 @@ class Type(ReadOnly): class Int(Type): - type = int - def __init__(self, min_value=None, max_value=None): check_min_max(min_value, max_value, 'min_value', 'max_value') self.min_value = min_value self.max_value = max_value - lock(self) + super(Int, self).__init__(int) def validate(self, value): if type(value) is not self.type: @@ -93,8 +98,6 @@ class Int(Type): class Unicode(Type): - type = unicode - def __init__(self, min_length=None, max_length=None, pattern=None): check_min_max(min_length, max_length, 'min_length', 'max_length') if min_length is not None and min_length < 0: @@ -112,7 +115,7 @@ class Unicode(Type): self.regex = None else: self.regex = re.compile(pattern) - lock(self) + super(Unicode, self).__init__(unicode) def validate(self, value): if type(value) is not self.type: diff --git a/ipalib/tests/test_ipa_types.py b/ipalib/tests/test_ipa_types.py index 657a99bd..4ca44121 100644 --- a/ipalib/tests/test_ipa_types.py +++ b/ipalib/tests/test_ipa_types.py @@ -75,13 +75,14 @@ class test_Int(ClassChecker): def test_class(self): assert self.cls.__bases__ == (ipa_types.Type,) - assert self.cls.type is int def test_init(self): o = self.cls() - assert o.name == 'Int' - assert o.min_value is None - assert o.max_value is None + assert o.__islocked__() is True + assert read_only(o, 'type') is int + assert read_only(o, 'name') == 'Int' + assert read_only(o, 'min_value') is None + assert read_only(o, 'max_value') is None okay = [ (None, -5), @@ -122,7 +123,6 @@ class test_Int(ClassChecker): 'min_value > max_value: min_value=%d, max_value=%d' % (l, h) ) - def test_call(self): o = self.cls() @@ -168,15 +168,16 @@ class test_Unicode(ClassChecker): def test_class(self): assert self.cls.__bases__ == (ipa_types.Type,) - assert self.cls.type is unicode def test_init(self): o = self.cls() + assert o.__islocked__() is True + assert read_only(o, 'type') is unicode assert read_only(o, 'name') == 'Unicode' - assert o.min_length is None - assert o.max_length is None - assert o.pattern is None - assert o.regex is None + assert read_only(o, 'min_length') is None + assert read_only(o, 'max_length') is None + assert read_only(o, 'pattern') is None + assert read_only(o, 'regex') is None # Test min_length, max_length: okay = ( |