def test_ObjectType(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'object', 'properties': [ {'name': 'p1', 'type': 'number'}, {'name': 'p2', 'type': 'integer'}, {'name': 'p3', 'type': 'boolean'}, {'name': 'p4', 'type': 'string'}, {'name': 'p5', 'type': 'any'}, {'name': 'p6', 'type': 'object', '$ref': 'TestType'}, ], 'returns': [ {'name': 'r1', 'type': 'number'}, {'name': 'r2', 'type': 'integer'}, {'name': 'r3', 'type': 'boolean'}, {'name': 'r4', 'type': 'string'}, {'name': 'r5', 'type': 'any'}, {'name': 'r6', 'type': 'object', '$ref': 'TestType'}, ], }, ] }, ] } client_api_generator.CreateTypeDefinitions(json_api) type = json_api['domains'][0]['types'][0] resolved = client_api_generator.ResolveType(type) self.assertEqual('TestType', resolved['raw_type'])
def test_IntegerType(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'integer', }, ] }, ] } client_api_generator.CreateTypeDefinitions(json_api) type = json_api['domains'][0]['types'][0] resolved = client_api_generator.ResolveType(type) self.assertEqual('int', resolved['raw_type'])
def test_EnumType(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'string', 'enum': ['a', 'b', 'c'] }, ] }, ] } client_api_generator.CreateTypeDefinitions(json_api) type = json_api['domains'][0]['types'][0] resolved = client_api_generator.ResolveType(type) self.assertEqual('headless::domain::TestType', resolved['raw_type'])
def test_ArrayType(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'array', 'items': {'type': 'integer'} }, ] }, ] } client_api_generator.CreateTypeDefinitions(json_api) type = json_api['domains'][0]['types'][0] resolved = client_api_generator.ResolveType(type) self.assertEqual('std::vector<int>', resolved['raw_type'])
def test_StringType(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'string', }, ] }, ] } client_api_generator.CreateTypeDefinitions(json_api) type = json_api['domains'][0]['types'][0] resolved = client_api_generator.ResolveType(type) self.assertEqual('std::string', resolved['raw_type']) self.assertEqual('const std::string&', resolved['pass_type'])
def test_Generate(self): json_api = { 'domains': [ { 'domain': 'domain', 'types': [ { 'id': 'TestType', 'type': 'object', 'properties': [ {'name': 'p1', 'type': 'number'}, {'name': 'p2', 'type': 'integer'}, {'name': 'p3', 'type': 'boolean'}, {'name': 'p4', 'type': 'string'}, {'name': 'p5', 'type': 'any'}, {'name': 'p6', 'type': 'object', '$ref': 'domain.TestType'}, ], 'returns': [ {'name': 'r1', 'type': 'number'}, {'name': 'r2', 'type': 'integer'}, {'name': 'r3', 'type': 'boolean'}, {'name': 'r4', 'type': 'string'}, {'name': 'r5', 'type': 'any'}, {'name': 'r6', 'type': 'object', '$ref': 'domain.TestType'}, ], }, ] }, ] } try: dirname = tempfile.mkdtemp() jinja_env = client_api_generator.InitializeJinjaEnv(dirname) client_api_generator.CreateTypeDefinitions(json_api) client_api_generator.Generate(jinja_env, dirname, json_api, 'deprecated_types', ['h']) # This is just a smoke test; we don't actually verify the generated output # here. finally: shutil.rmtree(dirname)