Merge "Add dict as basic type"

This commit is contained in:
Jenkins 2017-01-16 08:52:36 +00:00 committed by Gerrit Code Review
commit 1fcc1563e2
2 changed files with 31 additions and 0 deletions

View File

@ -125,3 +125,17 @@ class List(object):
return [self.type.validate(v) for v in value]
except Exception:
raise ValueError("Failed to validate received value")
class Dict(object):
type_name = 'Dict'
@classmethod
def validate(cls, value, default={}):
if value is None:
value = default
if not isinstance(value, dict):
raise ValueError("Failed to validate received value")
return value

View File

@ -145,3 +145,20 @@ class TestTypes(TestCase):
self.assertIsInstance(value, list)
self.assertIsInstance(value[0], TestAPI)
self.assertEqual({'test': 'test_value'}, value[0].as_dict())
def test_dict_type(self):
# Test default value
self.assertEqual({}, types.Dict.validate(None))
self.assertEqual({}, types.Dict.validate(None, default={}))
# Test validate successfully
self.assertEqual({"abc": "xyz"}, types.Dict.validate({"abc": "xyz"}))
self.assertEqual({}, types.Dict.validate({}))
# Test validate failed
self.assertRaises(ValueError,
types.Dict.validate, "test")
self.assertRaises(ValueError,
types.Dict.validate, 123)
self.assertRaises(ValueError,
types.Dict.validate, [])