| Index: headless/lib/browser/client_api_generator_unittest.py
|
| diff --git a/headless/lib/browser/client_api_generator_unittest.py b/headless/lib/browser/client_api_generator_unittest.py
|
| deleted file mode 100755
|
| index 93eb9e6e906a42fd3af1f0e9abc864ae59046b4a..0000000000000000000000000000000000000000
|
| --- a/headless/lib/browser/client_api_generator_unittest.py
|
| +++ /dev/null
|
| @@ -1,502 +0,0 @@
|
| -#!/usr/bin/env python
|
| -
|
| -# Copyright 2016 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import client_api_generator
|
| -import shutil
|
| -import sys
|
| -import tempfile
|
| -import unittest
|
| -
|
| -
|
| -class ClientApiGeneratorTest(unittest.TestCase):
|
| -
|
| - def test_ArgumentParsing(self):
|
| - with tempfile.NamedTemporaryFile() as f:
|
| - f.write('{"foo": true}')
|
| - f.flush()
|
| - json_api, output_dir = client_api_generator.ParseArguments([
|
| - '--protocol', f.name, '--output_dir', 'out'])
|
| - self.assertEqual({'foo': True}, json_api)
|
| - self.assertEqual('out', output_dir)
|
| -
|
| - def test_ToTitleCase(self):
|
| - self.assertEqual(client_api_generator.ToTitleCase('fooBar'), 'FooBar')
|
| -
|
| - def test_DashToCamelCase(self):
|
| - self.assertEqual(client_api_generator.DashToCamelCase('foo-bar'), 'FooBar')
|
| - self.assertEqual(client_api_generator.DashToCamelCase('foo-'), 'Foo')
|
| - self.assertEqual(client_api_generator.DashToCamelCase('-bar'), 'Bar')
|
| -
|
| - def test_CamelCaseToHackerStyle(self):
|
| - self.assertEqual(client_api_generator.CamelCaseToHackerStyle('FooBar'),
|
| - 'foo_bar')
|
| - self.assertEqual(client_api_generator.CamelCaseToHackerStyle('LoLoLoL'),
|
| - 'lo_lo_lol')
|
| -
|
| - def test_SanitizeLiteralEnum(self):
|
| - self.assertEqual(client_api_generator.SanitizeLiteral('foo'), 'foo')
|
| - self.assertEqual(client_api_generator.SanitizeLiteral('null'), 'none')
|
| - self.assertEqual(client_api_generator.SanitizeLiteral('Infinity'),
|
| - 'InfinityValue')
|
| -
|
| - def test_PatchFullQualifiedRefs(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain0',
|
| - '$ref': 'reference',
|
| - },
|
| - {
|
| - 'domain': 'domain1',
|
| - '$ref': 'reference',
|
| - 'more': [{'$ref': 'domain0.thing'}],
|
| - }
|
| - ]
|
| - }
|
| - expected_json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain0',
|
| - '$ref': 'domain0.reference',
|
| - },
|
| - {
|
| - 'domain': 'domain1',
|
| - '$ref': 'domain1.reference',
|
| - 'more': [{'$ref': 'domain0.thing'}],
|
| - }
|
| - ]
|
| - }
|
| - client_api_generator.PatchFullQualifiedRefs(json_api)
|
| - self.assertDictEqual(json_api, expected_json_api)
|
| -
|
| - def test_NumberType(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'types': [
|
| - {
|
| - 'id': 'TestType',
|
| - 'type': 'number',
|
| - },
|
| - ]
|
| - },
|
| - ]
|
| - }
|
| - client_api_generator.CreateTypeDefinitions(json_api)
|
| - type = json_api['domains'][0]['types'][0]
|
| - resolved = client_api_generator.ResolveType(type)
|
| - self.assertEqual('double', 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_BooleanType(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'types': [
|
| - {
|
| - 'id': 'TestType',
|
| - 'type': 'boolean',
|
| - },
|
| - ]
|
| - },
|
| - ]
|
| - }
|
| - client_api_generator.CreateTypeDefinitions(json_api)
|
| - type = json_api['domains'][0]['types'][0]
|
| - resolved = client_api_generator.ResolveType(type)
|
| - self.assertEqual('bool', 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'])
|
| -
|
| - 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_AnyType(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'types': [
|
| - {
|
| - 'id': 'TestType',
|
| - 'type': 'any',
|
| - },
|
| - ]
|
| - },
|
| - ]
|
| - }
|
| - client_api_generator.CreateTypeDefinitions(json_api)
|
| - type = json_api['domains'][0]['types'][0]
|
| - resolved = client_api_generator.ResolveType(type)
|
| - self.assertEqual('base::Value', 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_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_SynthesizeCommandTypes(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'commands': [
|
| - {
|
| - 'name': 'TestCommand',
|
| - 'parameters': [
|
| - {'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'},
|
| - ],
|
| - },
|
| - ]
|
| - },
|
| - ]
|
| - }
|
| - expected_types = [
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'TestCommandParams',
|
| - 'description': 'Parameters for the TestCommand command.',
|
| - 'properties': [
|
| - {'type': 'number', 'name': 'p1'},
|
| - {'type': 'integer', 'name': 'p2'},
|
| - {'type': 'boolean', 'name': 'p3'},
|
| - {'type': 'string', 'name': 'p4'},
|
| - {'type': 'any', 'name': 'p5'},
|
| - {'type': 'object', 'name': 'p6', '$ref': 'TestType'}
|
| - ],
|
| - },
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'TestCommandResult',
|
| - 'description': 'Result for the TestCommand command.',
|
| - 'properties': [
|
| - {'type': 'number', 'name': 'r1'},
|
| - {'type': 'integer', 'name': 'r2'},
|
| - {'type': 'boolean', 'name': 'r3'},
|
| - {'type': 'string', 'name': 'r4'},
|
| - {'type': 'any', 'name': 'r5'},
|
| - {'type': 'object', 'name': 'r6', '$ref': 'TestType'}
|
| - ],
|
| - }
|
| - ]
|
| - client_api_generator.SynthesizeCommandTypes(json_api)
|
| - types = json_api['domains'][0]['types']
|
| - self.assertListEqual(types, expected_types)
|
| -
|
| - def test_SynthesizeEventTypes(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'events': [
|
| - {
|
| - 'name': 'TestEvent',
|
| - 'parameters': [
|
| - {'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'},
|
| - ]
|
| - },
|
| - {
|
| - 'name': 'TestEventWithNoParams',
|
| - }
|
| - ]
|
| - }
|
| - ]
|
| - }
|
| - expected_types = [
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'TestEventParams',
|
| - 'description': 'Parameters for the TestEvent event.',
|
| - 'properties': [
|
| - {'type': 'number', 'name': 'p1'},
|
| - {'type': 'integer', 'name': 'p2'},
|
| - {'type': 'boolean', 'name': 'p3'},
|
| - {'type': 'string', 'name': 'p4'},
|
| - {'type': 'any', 'name': 'p5'},
|
| - {'type': 'object', 'name': 'p6', '$ref': 'TestType'}
|
| - ]
|
| - },
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'TestEventWithNoParamsParams',
|
| - 'description': 'Parameters for the TestEventWithNoParams event.',
|
| - 'properties': [],
|
| - }
|
| - ]
|
| - client_api_generator.SynthesizeEventTypes(json_api)
|
| - types = json_api['domains'][0]['types']
|
| - self.assertListEqual(types, expected_types)
|
| -
|
| - def test_PatchExperimentalDomains(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'experimental': True,
|
| - 'commands': [
|
| - {
|
| - 'name': 'FooCommand',
|
| - }
|
| - ],
|
| - 'events': [
|
| - {
|
| - 'name': 'BarEvent',
|
| - }
|
| - ]
|
| - }
|
| - ]
|
| - }
|
| - client_api_generator.PatchExperimentalCommandsAndEvents(json_api)
|
| - for command in json_api['domains'][0]['commands']:
|
| - self.assertTrue(command['experimental'])
|
| - for event in json_api['domains'][0]['events']:
|
| - self.assertTrue(command['experimental'])
|
| -
|
| - def test_EnsureCommandsHaveParametersAndReturnTypes(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain',
|
| - 'commands': [
|
| - {
|
| - 'name': 'FooCommand',
|
| - }
|
| - ],
|
| - 'events': [
|
| - {
|
| - 'name': 'BarEvent',
|
| - }
|
| - ]
|
| - }
|
| - ]
|
| - }
|
| - expected_types = [
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'FooCommandParams',
|
| - 'description': 'Parameters for the FooCommand command.',
|
| - 'properties': [],
|
| - },
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'FooCommandResult',
|
| - 'description': 'Result for the FooCommand command.',
|
| - 'properties': [],
|
| - },
|
| - {
|
| - 'type': 'object',
|
| - 'id': 'BarEventParams',
|
| - 'description': 'Parameters for the BarEvent event.',
|
| - 'properties': [],
|
| - }
|
| - ]
|
| - client_api_generator.EnsureCommandsHaveParametersAndReturnTypes(json_api)
|
| - client_api_generator.SynthesizeCommandTypes(json_api)
|
| - client_api_generator.SynthesizeEventTypes(json_api)
|
| - types = json_api['domains'][0]['types']
|
| - self.assertListEqual(types, expected_types)
|
| -
|
| - 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, 'types',
|
| - ['cc'])
|
| - client_api_generator.Generate(jinja_env, dirname, json_api, 'types',
|
| - ['h'])
|
| - # This is just a smoke test; we don't actually verify the generated output
|
| - # here.
|
| - finally:
|
| - shutil.rmtree(dirname)
|
| -
|
| - def test_GenerateDomains(self):
|
| - json_api = {
|
| - 'domains': [
|
| - {
|
| - 'domain': 'domain0',
|
| - 'types': [
|
| - {
|
| - 'id': 'TestType',
|
| - 'type': 'object',
|
| - },
|
| - ]
|
| - },
|
| - {
|
| - 'domain': 'domain1',
|
| - 'types': [
|
| - {
|
| - 'id': 'TestType',
|
| - 'type': 'object',
|
| - },
|
| - ]
|
| - },
|
| - ]
|
| - }
|
| - try:
|
| - dirname = tempfile.mkdtemp()
|
| - jinja_env = client_api_generator.InitializeJinjaEnv(dirname)
|
| - client_api_generator.GenerateDomains(jinja_env, dirname, json_api,
|
| - 'domain', ['cc', 'h'])
|
| - # This is just a smoke test; we don't actually verify the generated output
|
| - # here.
|
| - finally:
|
| - shutil.rmtree(dirname)
|
| -
|
| -
|
| -if __name__ == '__main__':
|
| - unittest.main(verbosity=2, exit=False, argv=sys.argv)
|
|
|