| Index: tools/json_schema_compiler/cpp_type_generator_test.py
|
| diff --git a/tools/json_schema_compiler/cpp_type_generator_test.py b/tools/json_schema_compiler/cpp_type_generator_test.py
|
| index 5e3dcff943536752e0f631f794eaa6ee531f8e80..7782b234a4ccbc74d6ba71d9540d5dc575ab33b4 100755
|
| --- a/tools/json_schema_compiler/cpp_type_generator_test.py
|
| +++ b/tools/json_schema_compiler/cpp_type_generator_test.py
|
| @@ -10,6 +10,16 @@ import unittest
|
|
|
| from collections import defaultdict
|
|
|
| +class _FakeSchemaLoader(object):
|
| + def __init__(self, model):
|
| + self._model = model
|
| +
|
| + def ResolveType(self, type_name, default):
|
| + parts = type_name.rsplit('.', 1)
|
| + if len(parts) == 1:
|
| + return default if type_name in default.types else None
|
| + return self._model.namespaces[parts[0]]
|
| +
|
| class CppTypeGeneratorTest(unittest.TestCase):
|
| def setUp(self):
|
| self.models = defaultdict(model.Model)
|
| @@ -43,7 +53,7 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| m = model.Model()
|
| m.AddNamespace(self.windows_json[0], 'path/to/windows.json')
|
| m.AddNamespace(self.tabs_json[0], 'path/to/tabs.json')
|
| - manager = CppTypeGenerator(m)
|
| + manager = CppTypeGenerator(m, _FakeSchemaLoader(m))
|
|
|
| self.assertEquals('', manager.GenerateIncludes().Render())
|
| self.assertEquals('#include "path/to/tabs.h"',
|
| @@ -52,11 +62,13 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| 'struct Tab;\n'
|
| '}',
|
| manager.GenerateForwardDeclarations().Render())
|
| - manager = CppTypeGenerator(self.models.get('permissions'))
|
| + manager = CppTypeGenerator(self.models.get('permissions'),
|
| + _FakeSchemaLoader(m))
|
| self.assertEquals('', manager.GenerateIncludes().Render())
|
| self.assertEquals('', manager.GenerateIncludes().Render())
|
| self.assertEquals('', manager.GenerateForwardDeclarations().Render())
|
| - manager = CppTypeGenerator(self.models.get('content_settings'))
|
| + manager = CppTypeGenerator(self.models.get('content_settings'),
|
| + _FakeSchemaLoader(m))
|
| self.assertEquals('', manager.GenerateIncludes().Render())
|
|
|
| def testGenerateIncludesAndForwardDeclarationsDependencies(self):
|
| @@ -67,7 +79,9 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| m.AddNamespace(self.browser_action_json[0], 'path/to/browser_action.json')
|
| dependency_tester = m.AddNamespace(self.dependency_tester_json[0],
|
| 'path/to/dependency_tester.json')
|
| - manager = CppTypeGenerator(m, default_namespace=dependency_tester)
|
| + manager = CppTypeGenerator(m,
|
| + _FakeSchemaLoader(m),
|
| + default_namespace=dependency_tester)
|
| self.assertEquals('#include "path/to/browser_action.h"\n'
|
| '#include "path/to/font_settings.h"',
|
| manager.GenerateIncludes().Render())
|
| @@ -78,7 +92,7 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| manager.GenerateForwardDeclarations().Render())
|
|
|
| def testGetCppTypeSimple(self):
|
| - manager = CppTypeGenerator(self.models.get('tabs'))
|
| + manager = CppTypeGenerator(self.models.get('tabs'), _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'int',
|
| manager.GetCppType(self.tabs.types['Tab'].properties['id'].type_))
|
| @@ -90,31 +104,35 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| manager.GetCppType(self.tabs.types['Tab'].properties['selected'].type_))
|
|
|
| def testStringAsType(self):
|
| - manager = CppTypeGenerator(self.models.get('font_settings'))
|
| + manager = CppTypeGenerator(self.models.get('font_settings'),
|
| + _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'std::string',
|
| manager.GetCppType(self.font_settings.types['FakeStringType']))
|
|
|
| def testArrayAsType(self):
|
| - manager = CppTypeGenerator(self.models.get('browser_action'))
|
| + manager = CppTypeGenerator(self.models.get('browser_action'),
|
| + _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'std::vector<int>',
|
| manager.GetCppType(self.browser_action.types['ColorArray']))
|
|
|
| def testGetCppTypeArray(self):
|
| - manager = CppTypeGenerator(self.models.get('windows'))
|
| + manager = CppTypeGenerator(self.models.get('windows'),
|
| + _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'std::vector<linked_ptr<Window> >',
|
| manager.GetCppType(
|
| self.windows.functions['getAll'].callback.params[0].type_))
|
| - manager = CppTypeGenerator(self.models.get('permissions'))
|
| + manager = CppTypeGenerator(self.models.get('permissions'),
|
| + _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'std::vector<std::string>',
|
| manager.GetCppType(
|
| self.permissions.types['Permissions'].properties['origins'].type_))
|
|
|
| def testGetCppTypeLocalRef(self):
|
| - manager = CppTypeGenerator(self.models.get('tabs'))
|
| + manager = CppTypeGenerator(self.models.get('tabs'), _FakeSchemaLoader(None))
|
| self.assertEquals(
|
| 'Tab',
|
| manager.GetCppType(self.tabs.functions['get'].callback.params[0].type_))
|
| @@ -123,14 +141,15 @@ class CppTypeGeneratorTest(unittest.TestCase):
|
| m = model.Model()
|
| m.AddNamespace(self.windows_json[0], 'path/to/windows.json')
|
| m.AddNamespace(self.tabs_json[0], 'path/to/tabs.json')
|
| - manager = CppTypeGenerator(m)
|
| + manager = CppTypeGenerator(m, _FakeSchemaLoader(m))
|
| self.assertEquals(
|
| 'std::vector<linked_ptr<tabs::Tab> >',
|
| manager.GetCppType(
|
| self.windows.types['Window'].properties['tabs'].type_))
|
|
|
| def testGetCppTypeWithPadForGeneric(self):
|
| - manager = CppTypeGenerator(self.models.get('permissions'))
|
| + manager = CppTypeGenerator(self.models.get('permissions'),
|
| + _FakeSchemaLoader(None))
|
| self.assertEquals('std::vector<std::string>',
|
| manager.GetCppType(
|
| self.permissions.types['Permissions'].properties['origins'].type_,
|
|
|