212: Type.__init__() now can also raise TypeError; added unit tests for Type.__init__()

This commit is contained in:
Jason Gerard DeRose 2008-08-28 02:45:04 +00:00
parent 81d0726f5e
commit d121a729aa
2 changed files with 21 additions and 3 deletions

View File

@ -52,11 +52,11 @@ class Type(ReadOnly):
"""
def __init__(self, type_):
if type(type_) is not type:
raise TypeError('%r is not %r' % (type(type_), type))
allowed = (bool, int, float, unicode)
if type_ not in allowed:
raise ValueError(
'type_ must be in %r, got %r' % (type_, allowed)
)
raise ValueError('not an allowed type: %r' % type_)
self.type = type_
lock(self)

View File

@ -69,6 +69,24 @@ class test_Type(ClassChecker):
def test_class(self):
assert self.cls.__bases__ == (plugable.ReadOnly,)
def test_init(self):
okay = (bool, int, float, unicode)
for t in okay:
o = self.cls(t)
assert o.__islocked__() is True
assert read_only(o, 'type') is t
assert read_only(o, 'name') is 'Type'
type_errors = (None, True, 8, 8.0, u'hello')
for t in type_errors:
e = raises(TypeError, self.cls, t)
assert str(e) == '%r is not %r' % (type(t), type)
value_errors = (long, complex, str, tuple, list, dict, set, frozenset)
for t in value_errors:
e = raises(ValueError, self.cls, t)
assert str(e) == 'not an allowed type: %r' % t
class test_Int(ClassChecker):
_cls = ipa_types.Int