Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(272)

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom_tests/generate/data_unittest.py

Issue 1466733002: Google OAuth Device Flow support for FNL (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Removed data_unittest.py Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import imp
6 import os.path
7 import sys
8 import unittest
9
10 def _GetDirAbove(dirname):
11 """Returns the directory "above" this file containing |dirname| (which must
12 also be "above" this file)."""
13 path = os.path.abspath(__file__)
14 while True:
15 path, tail = os.path.split(path)
16 assert tail
17 if tail == dirname:
18 return path
19
20 try:
21 imp.find_module("mojom")
22 except ImportError:
23 sys.path.append(os.path.join(_GetDirAbove("pylib"), "pylib"))
24 from mojom.generate import data
25 from mojom.generate import module as mojom
26
27
28 class DataTest(unittest.TestCase):
29
30 def testStructDataConversion(self):
31 """Tests that a struct can be converted from data."""
32 module = mojom.Module('test_module', 'test_namespace')
33 struct_data = {
34 'name': 'SomeStruct',
35 'enums': [],
36 'constants': [],
37 'fields': [
38 {'name': 'field1', 'kind': 'i32'},
39 {'name': 'field2', 'kind': 'i32', 'ordinal': 10},
40 {'name': 'field3', 'kind': 'i32', 'default': 15}]}
41
42 struct = data.StructFromData(module, struct_data)
43 struct.fields = map(lambda field:
44 data.StructFieldFromData(module, field, struct), struct.fields_data)
45 self.assertEquals(struct_data, data.StructToData(struct))
46
47 def testUnionDataConversion(self):
48 """Tests that a union can be converted from data."""
49 module = mojom.Module('test_module', 'test_namespace')
50 union_data = {
51 'name': 'SomeUnion',
52 'fields': [
53 {'name': 'field1', 'kind': 'i32'},
54 {'name': 'field2', 'kind': 'i32', 'ordinal': 10}]}
55
56 union = data.UnionFromData(module, union_data)
57 union.fields = map(lambda field:
58 data.UnionFieldFromData(module, field, union), union.fields_data)
59 self.assertEquals(union_data, data.UnionToData(union))
60
61 def testImportFromDataNoMissingImports(self):
62 """Tests that unions, structs, interfaces and enums are imported."""
63 module = mojom.Module('test_module', 'test_namespace')
64 imported_module = mojom.Module('import_module', 'import_namespace')
65 #TODO(azani): Init values in module.py.
66 #TODO(azani): Test that values are imported.
67 imported_module.values = {}
68 imported_data = {'module' : imported_module}
69
70
71 struct = mojom.Struct('TestStruct', module=module)
72 imported_module.kinds[struct.spec] = struct
73
74 union = mojom.Union('TestUnion', module=module)
75 imported_module.kinds[union.spec] = union
76
77 interface = mojom.Interface('TestInterface', module=module)
78 imported_module.kinds[interface.spec] = interface
79
80 enum = mojom.Enum('TestEnum', module=module)
81 imported_module.kinds[enum.spec] = enum
82
83 data.ImportFromData(module, imported_data)
84
85 # Test that the kind was imported.
86 self.assertIn(struct.spec, module.kinds)
87 self.assertEquals(struct.name, module.kinds[struct.spec].name)
88
89 self.assertIn(union.spec, module.kinds)
90 self.assertEquals(union.name, module.kinds[union.spec].name)
91
92 self.assertIn(interface.spec, module.kinds)
93 self.assertEquals(interface.name, module.kinds[interface.spec].name)
94
95 self.assertIn(enum.spec, module.kinds)
96 self.assertEquals(enum.name, module.kinds[enum.spec].name)
97
98 # Test that the imported kind is a copy and not the original.
99 self.assertIsNot(struct, module.kinds[struct.spec])
100 self.assertIsNot(union, module.kinds[union.spec])
101 self.assertIsNot(interface, module.kinds[interface.spec])
102 self.assertIsNot(enum, module.kinds[enum.spec])
103
104 def testImportFromDataNoExtraneousImports(self):
105 """Tests that arrays, maps and interface requests are not imported."""
106 module = mojom.Module('test_module', 'test_namespace')
107 imported_module = mojom.Module('import_module', 'import_namespace')
108 #TODO(azani): Init values in module.py.
109 imported_module.values = {}
110 imported_data = {'module' : imported_module}
111
112 array = mojom.Array(mojom.INT16, length=20)
113 imported_module.kinds[array.spec] = array
114
115 map_kind = mojom.Map(mojom.INT16, mojom.INT16)
116 imported_module.kinds[map_kind.spec] = map_kind
117
118 interface = mojom.Interface('TestInterface', module=module)
119 imported_module.kinds[interface.spec] = interface
120
121 interface_req = mojom.InterfaceRequest(interface)
122 imported_module.kinds[interface_req.spec] = interface_req
123
124 data.ImportFromData(module, imported_data)
125
126 self.assertNotIn(array.spec, module.kinds)
127 self.assertNotIn(map_kind.spec, module.kinds)
128 self.assertNotIn(interface_req.spec, module.kinds)
129
130 def testNonInterfaceAsInterfaceRequest(self):
131 """Tests that a non-interface cannot be used for interface requests."""
132 module = mojom.Module('test_module', 'test_namespace')
133 interface = mojom.Interface('TestInterface', module=module)
134 method_dict = {
135 'name': 'Foo',
136 'parameters': [{'name': 'foo', 'kind': 'r:i32'}],
137 }
138 with self.assertRaises(Exception) as e:
139 data.MethodFromData(module, method_dict, interface)
140 self.assertEquals(e.exception.__str__(),
141 'Interface request requires \'i32\' to be an interface.')
OLDNEW
« no previous file with comments | « mojo/data_pipe_utils/data_pipe_utils.cc ('k') | mojo/services/authentication/interfaces/authentication.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698