Chromium Code Reviews| Index: tools/json_schema_compiler/type_manager_test.py |
| diff --git a/tools/json_schema_compiler/type_manager_test.py b/tools/json_schema_compiler/type_manager_test.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..3a34da99c7dc6218510ae5d12ac7b01a1527b90d |
| --- /dev/null |
| +++ b/tools/json_schema_compiler/type_manager_test.py |
| @@ -0,0 +1,92 @@ |
| +# Copyright (c) 2012 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 unittest |
| +import model |
| +import json |
| +import cpp_type_manager |
|
not at google - send to devlin
2012/01/17 05:42:32
from cpp_type_manager import CppTypeManager
|
| + |
| +class TestCppTypeManager(unittest.TestCase): |
|
not at google - send to devlin
2012/01/17 05:42:32
file name should be "cpp_type_manager_test.py", an
|
| + def setUp(self): |
| + self.model = model.Model() |
| + self.permissions_json = json.loads(open('test/permissions.json').read()) |
| + self.model.add_namespace(self.permissions_json[0], 'extensions', |
| + 'path/to/permissions.json', '_api') |
| + self.permissions = self.model.namespaces.get('permissions') |
| + self.windows_json = json.loads(open('test/windows.json').read()) |
| + self.model.add_namespace(self.windows_json[0], 'extensions', |
| + 'path/to/window.json', '_api') |
| + self.windows = self.model.namespaces.get('windows') |
| + self.tabs_json = json.loads(open('test/tabs.json').read()) |
| + self.model.add_namespace(self.tabs_json[0], 'extensions', |
| + 'path/to/tabs.json', '_api') |
| + self.tabs = self.model.namespaces.get('tabs') |
| + |
| + def test_generate_cpp_includes(self): |
| + manager = cpp_type_manager.CppTypeManager(self.windows, self.model) |
| + self.assertEquals(manager.generate_cpp_includes().render(), |
| + '#include "path/to/tabs_api.h"') |
| + manager = cpp_type_manager.CppTypeManager(self.permissions, self.model) |
| + self.assertEquals(manager.generate_cpp_includes().render(), |
| + '') |
| + |
| + def test_get_type_simple(self): |
| + manager = cpp_type_manager.CppTypeManager(self.tabs, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.tabs.types['Tab'].properties['id']), |
| + 'int') |
| + self.assertEquals(manager.get_type( |
| + self.tabs.types['Tab'].properties['status']), |
| + 'std::string') |
| + self.assertEquals(manager.get_type( |
| + self.tabs.types['Tab'].properties['selected']), |
| + 'bool') |
| + |
| + def test_get_type_array(self): |
| + manager = cpp_type_manager.CppTypeManager(self.windows, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.windows.functions['getAll'].callback.param), |
| + 'std::vector<Window>') |
| + manager = cpp_type_manager.CppTypeManager(self.permissions, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.permissions.types['Permissions'].properties['origins']), |
| + 'std::vector<std::string>') |
| + |
| + def test_get_type_local_ref(self): |
| + manager = cpp_type_manager.CppTypeManager(self.tabs, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.tabs.functions['get'].callback.param), |
| + 'Tab') |
| + |
| + def test_get_type_included_ref(self): |
| + manager = cpp_type_manager.CppTypeManager(self.windows, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.windows.types['Window'].properties['tabs']), |
| + 'std::vector<tabs_api::Tab>') |
| + |
| + def test_get_type_notfound(self): |
| + prop = self.windows.types['Window'].properties['tabs'].item_type |
| + prop.json_type = 'Something' |
| + manager = cpp_type_manager.CppTypeManager(self.windows, self.model) |
| + self.assertRaises(KeyError, manager.get_type, prop) |
| + |
| + def test_get_type_notimplemented(self): |
| + prop = self.windows.types['Window'].properties['tabs'].item_type |
| + prop.type = 10 |
| + manager = cpp_type_manager.CppTypeManager(self.windows, self.model) |
| + self.assertRaises(NotImplementedError, manager.get_type, prop) |
| + |
| + def test_get_type_with_pad_for_generic(self): |
| + manager = cpp_type_manager.CppTypeManager(self.permissions, self.model) |
| + self.assertEquals(manager.get_type( |
| + self.permissions.types['Permissions'].properties['origins'], |
| + pad_for_generics=True), |
| + 'std::vector<std::string> ') |
| + self.assertEquals(manager.get_type( |
| + self.permissions.functions['contains'].callback.param, |
| + pad_for_generics=True), |
| + 'bool') |
| + |
| +if __name__ == '__main__': |
| + unittest.main() |