wsme.types is now 100% covered by unit tests

This commit is contained in:
Christophe de Vienne
2012-04-19 14:11:53 +02:00
parent f85ec8f5b2
commit f111d608c4

View File

@@ -9,6 +9,21 @@ def gen_class():
class TestTypes(unittest.TestCase):
def test_default_usertype(self):
class MyType(types.UserType):
basetype = str
My = MyType()
assert My.validate('a') is None
assert My.tobasetype('a') == 'a'
assert My.frombasetype('a') == 'a'
def test_unset(self):
u = types.Unset
assert not u
def test_flat_type(self):
class Flat(object):
aint = int
@@ -195,3 +210,59 @@ class TestTypes(unittest.TestCase):
assert attrs[0].name == 'a.list', attrs[0].name
assert attrs[1].key == 'astr', attrs[1].key
assert attrs[1].name == 'astr', attrs[1].name
def test_wsattr_del(self):
class MyType(object):
a = types.wsattr(int)
types.register_type(MyType)
value = MyType()
value.a = 5
assert value.a == 5
del value.a
assert value.a is types.Unset
def test_validate_dict(self):
types.validate_value({int: str}, {1: '1', 5: '5'})
try:
types.validate_value({int: str}, [])
assert False, "No ValueError raised"
except ValueError:
pass
try:
types.validate_value({int: str}, {'1': '1', 5: '5'})
assert False, "No ValueError raised"
except ValueError:
pass
try:
types.validate_value({int: str}, {1: 1, 5: '5'})
assert False, "No ValueError raised"
except ValueError:
pass
def test_register_invalid_array(self):
self.assertRaises(ValueError, types.register_type, [])
self.assertRaises(ValueError, types.register_type, [int, str])
self.assertRaises(AttributeError, types.register_type, [1])
def test_register_invalid_dict(self):
self.assertRaises(ValueError, types.register_type, {})
self.assertRaises(ValueError, types.register_type,
{int: str, str: int})
self.assertRaises(ValueError, types.register_type,
{types.Unset: str})
def test_list_attribute_auto_register(self):
class MyType(object):
aint = int
assert not hasattr(MyType, '_wsme_attributes')
types.list_attributes(MyType)
assert hasattr(MyType, '_wsme_attributes')