def test_can_convert_scalar_types_from_string(self): m = model.DenormalizedStructureBuilder().with_members({ 'A': { 'type': 'integer' }, 'B': { 'type': 'string' }, 'C': { 'type': 'float' }, 'D': { 'type': 'boolean' }, 'E': { 'type': 'boolean' }, }).build_model() b = shorthand.BackCompatVisitor() params = { 'A': '24', 'B': '24', 'C': '24.12345', 'D': 'true', 'E': 'false' } b.visit(params, m) self.assertEqual(params, { 'A': 24, 'B': '24', 'C': float('24.12345'), 'D': True, 'E': False })
def test_empty_values_not_added(self): m = model.DenormalizedStructureBuilder().with_members({ 'A': {'type': 'boolean'}, }).build_model() b = shorthand.BackCompatVisitor() params = {} b.visit(params, m) self.assertEqual(params, {})
def test_promote_to_list_of_ints(self): m = model.DenormalizedStructureBuilder().with_members({ 'A': { 'type': 'list', 'member': {'type': 'string'} }, }).build_model() b = shorthand.BackCompatVisitor() params = {'A': 'foo'} b.visit(params, m) self.assertEqual(params, {'A': ['foo']})
def test_can_convert_list_of_integers(self): m = model.DenormalizedStructureBuilder().with_members({ 'A': { 'type': 'list', 'member': { 'type': 'integer', }, }, }).build_model() b = shorthand.BackCompatVisitor() params = {'A': ['1', '2']} b.visit(params, m) # We should have converted each list element to an integer # because the type of the list member is integer. self.assertEqual(params, {'A': [1, 2]})
def test_dont_promote_list_if_none_value(self): m = model.DenormalizedStructureBuilder().with_members({ 'A': { 'type': 'list', 'member': { 'type': 'structure', 'members': { 'Single': {'type': 'string'} }, }, }, }).build_model() b = shorthand.BackCompatVisitor() params = {} b.visit(params, m) self.assertEqual(params, {})
def __init__(self): self._parser = shorthand.ShorthandParser() self._visitor = shorthand.BackCompatVisitor()