OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/env python | |
2 # Copyright 2013 The Chromium Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 import unittest | |
7 | |
8 from api_schema_map import APISchemaMap | |
9 | |
10 | |
11 API_SCHEMA = [{ | |
12 'namespace': 'tabs', | |
13 'properties': { | |
14 'lowercase': { | |
15 'properties': { | |
16 'one': { 'value': 1 }, | |
17 'two': { 'description': 'just as bad as one' } | |
18 } | |
19 }, | |
20 'TAB_PROPERTY_ONE': { 'value': 'magic' }, | |
21 'TAB_PROPERTY_TWO': {} | |
22 }, | |
23 'types': [ | |
24 { | |
25 'id': 'Tab', | |
26 'properties': { | |
27 'id': {}, | |
28 'url': {} | |
29 } | |
30 } | |
31 ], | |
32 'functions': [ | |
33 { | |
34 'name': 'get', | |
35 'parameters': [ { 'name': 'tab', | |
36 'type': 'object', | |
37 'description': 'gets stuff, never complains' | |
38 }, | |
39 { 'name': 'tabId' } | |
40 ] | |
41 } | |
42 ], | |
43 'events': [ | |
44 { | |
45 'name': 'onActivated', | |
46 'parameters': [ {'name': 'activeInfo'} ] | |
47 }, | |
48 { | |
49 'name': 'onUpdated', | |
50 'parameters': [ {'name': 'updateInfo'} ] | |
51 } | |
52 ] | |
53 }] | |
54 | |
55 | |
56 class APISchemaMapTest(unittest.TestCase): | |
57 | |
58 def testLookup(self): | |
59 api_schema_map = APISchemaMap(API_SCHEMA) | |
60 | |
61 self.assertTrue(api_schema_map.Lookup('tabs', 'properties', | |
62 'TAB_PROPERTY_ONE')) | |
63 self.assertTrue(api_schema_map.Lookup('tabs', 'types', 'Tab')) | |
64 self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get', | |
65 'parameters', 'tab')) | |
66 self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get', | |
67 'parameters', 'tabId')) | |
68 self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get', | |
69 'parameters', 'tab', 'type')) | |
70 self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onActivated', | |
71 'parameters', 'activeInfo')) | |
72 self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onUpdated', | |
73 'parameters', 'updateInfo')) | |
74 self.assertTrue(api_schema_map.Lookup('tabs', 'properties', 'lowercase', | |
75 'properties', 'one', 'value')) | |
76 self.assertTrue(api_schema_map.Lookup('tabs', 'properties', 'lowercase', | |
77 'properties', 'two', 'description')) | |
78 | |
79 self.assertFalse(api_schema_map.Lookup('windows')) | |
80 self.assertFalse(api_schema_map.Lookup('tabs', 'properties', | |
81 'TAB_PROPERTY_DEUX')) | |
82 self.assertFalse(api_schema_map.Lookup('tabs', 'events', 'onActivated', | |
83 'parameters', 'callback')) | |
84 self.assertFalse(api_schema_map.Lookup('tabs', 'functions', 'getById', | |
85 'parameters', 'tab')) | |
86 self.assertFalse(api_schema_map.Lookup('tabs', 'functions', 'get', | |
87 'parameters', 'type')) | |
88 self.assertFalse(api_schema_map.Lookup('tabs', 'properties', 'lowercase', | |
89 'properties', 'two', 'value')) | |
not at google - send to devlin
2013/09/16 14:06:24
Pull all of these assertions into a different func
epeterson
2013/09/16 17:47:23
Done.
| |
90 | |
91 def testSubtract(self): | |
92 api_schema_map = APISchemaMap(API_SCHEMA) | |
93 | |
94 # Test the empty set. | |
95 to_subtract = APISchemaMap({}) | |
96 difference = api_schema_map.Subtract(to_subtract) | |
97 self.assertTrue(difference.Lookup('tabs', 'properties', | |
98 'TAB_PROPERTY_ONE')) | |
99 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
100 'parameters', 'tab')) | |
101 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
102 'parameters', 'tabId')) | |
103 self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated', | |
104 'parameters', 'activeInfo')) | |
105 self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated', | |
106 'parameters', 'updateInfo')) | |
107 | |
108 self.assertFalse(difference.Lookup('windows')) | |
109 self.assertFalse(difference.Lookup('tabs', 'properties', | |
110 'TAB_PROPERTY_DEUX')) | |
111 self.assertFalse(difference.Lookup('tabs', 'events', 'onActivated', | |
112 'parameters', 'callback')) | |
113 self.assertFalse(difference.Lookup('tabs', 'functions', 'getById', | |
114 'parameters', 'tab')) | |
not at google - send to devlin
2013/09/16 14:06:24
... then call it from here.
def testSubtractEmpty
epeterson
2013/09/16 17:47:23
Done.
| |
115 | |
116 # Test the same set. | |
117 to_subtract = APISchemaMap(API_SCHEMA) | |
not at google - send to devlin
2013/09/16 14:06:24
... and pull the rest into a different test (testS
epeterson
2013/09/16 17:47:23
Done.
| |
118 difference = api_schema_map.Subtract(to_subtract) | |
119 self.assertFalse(difference.Lookup('tabs')) | |
not at google - send to devlin
2013/09/16 14:06:24
Also this is one case where adding a specific meth
epeterson
2013/09/16 17:47:23
Done.
| |
120 self.assertFalse(difference.Lookup('tabs', 'properties', | |
121 'TAB_PROPERTY_ONE')) | |
122 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
123 'parameters', 'tab')) | |
124 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
125 'parameters', 'updateInfo')) | |
126 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
127 'parameters', 'tabId')) | |
128 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab')) | |
129 | |
130 # Test a disjoint set. | |
not at google - send to devlin
2013/09/16 14:06:24
separate test (testSubtractDisjointSet)
epeterson
2013/09/16 17:47:23
Done.
| |
131 to_subtract = APISchemaMap({ | |
132 'contextMenus': { | |
133 'properties': { | |
134 'CONTEXT_MENU_PROPERTY_ONE': {} | |
135 }, | |
136 'types': { | |
137 'Menu': { | |
138 'properties': { | |
139 'id': {}, | |
140 'width': {} | |
141 } | |
142 } | |
143 }, | |
144 'functions': { | |
145 'get': { | |
146 'parameters': { | |
147 'callback': {} | |
148 } | |
149 } | |
150 }, | |
151 'events': { | |
152 'onClicked': { | |
153 'parameters': { | |
154 'clickInfo': {} | |
155 } | |
156 }, | |
157 'onUpdated': { | |
158 'parameters': { | |
159 'updateInfo': {} | |
160 } | |
161 } | |
162 } | |
163 } | |
164 }) | |
165 difference = api_schema_map.Subtract(to_subtract) | |
166 self.assertTrue(difference.Lookup('tabs', 'properties', | |
167 'TAB_PROPERTY_ONE')) | |
168 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
169 'parameters', 'tab')) | |
170 self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated', | |
171 'parameters', 'updateInfo')) | |
172 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
173 'parameters', 'tabId')) | |
174 self.assertFalse(difference.Lookup('contextMenus', 'properties', | |
175 'CONTEXT_MENU_PROPERTY_ONE')) | |
176 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu')) | |
177 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu', | |
178 'properties', 'id')) | |
179 self.assertFalse(difference.Lookup('contextMenus', 'functions')) | |
180 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onClicked', | |
181 'parameters', 'clickInfo')) | |
182 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onUpdated', | |
183 'parameters', 'updateInfo')) | |
184 | |
185 # Test a subset. | |
186 to_subtract = APISchemaMap({ | |
not at google - send to devlin
2013/09/16 14:06:24
separate test (testSubtractSubset)
epeterson
2013/09/16 17:47:23
Done.
| |
187 'tabs': { | |
188 'properties': { | |
189 'TAB_PROPERTY_ONE': { 'value': {} } | |
190 }, | |
191 'functions': { | |
192 'get': { | |
193 'parameters': { | |
194 'tab': { 'name': {}, | |
195 'type': {}, | |
196 'description': {} | |
197 } | |
198 } | |
199 } | |
200 }, | |
201 'events': { | |
202 'onUpdated': { | |
203 'parameters': { | |
204 'updateInfo': { | |
205 'name': {}, | |
206 'properties': { | |
207 'tabId': {} | |
208 } | |
209 } | |
210 } | |
211 } | |
212 } | |
213 } | |
214 }) | |
215 difference = api_schema_map.Subtract(to_subtract) | |
216 self.assertTrue(difference.Lookup('tabs')) | |
217 self.assertTrue(difference.Lookup('tabs', 'properties', | |
218 'TAB_PROPERTY_TWO')) | |
219 self.assertTrue(difference.Lookup('tabs', 'properties', 'lowercase', | |
220 'properties', 'two', 'description')) | |
221 self.assertTrue(difference.Lookup('tabs', 'types', 'Tab', 'properties', | |
222 'url')) | |
223 self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated', | |
224 'parameters', 'activeInfo')) | |
225 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
226 'parameters', 'updateInfo')) | |
227 self.assertFalse(difference.Lookup('tabs', 'properties', | |
228 'TAB_PROPERTY_ONE')) | |
229 self.assertFalse(difference.Lookup('tabs', 'properties', | |
230 'TAB_PROPERTY_ONE', 'value')) | |
231 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
232 'parameters', 'tab')) | |
233 | |
234 # Test a superset. | |
235 to_subtract = APISchemaMap({ | |
not at google - send to devlin
2013/09/16 14:06:24
separate test (testSubtractSuperset)
epeterson
2013/09/16 17:47:23
Done.
| |
236 'tabs': { | |
237 'namespace': {}, | |
238 'properties': { | |
239 'lowercase': { | |
240 'properties': { | |
241 'one': { 'value': {} }, | |
242 'two': { 'description': {} } | |
243 } | |
244 }, | |
245 'TAB_PROPERTY_ONE': { 'value': {} }, | |
246 'TAB_PROPERTY_TWO': {}, | |
247 'TAB_PROPERTY_THREE': {} | |
248 }, | |
249 'types': { | |
250 'Tab': { | |
251 'id': {}, | |
252 'properties': { | |
253 'id': {}, | |
254 'url': {} | |
255 } | |
256 }, | |
257 'UpdateInfo': {} | |
258 }, | |
259 'functions': { | |
260 'get': { | |
261 'name': {}, | |
262 'parameters': { | |
263 'tab': { 'name': {}, | |
264 'type': {}, | |
265 'description': {} | |
266 }, | |
267 'tabId': { 'name': {} } | |
268 } | |
269 }, | |
270 'getById': { | |
271 'parameters': { | |
272 'tabId': {} | |
273 } | |
274 } | |
275 }, | |
276 'events': { | |
277 'onActivated': { | |
278 'name': {}, | |
279 'parameters': { | |
280 'activeInfo': { 'name': {} } | |
281 } | |
282 }, | |
283 'onUpdated': { | |
284 'name': {}, | |
285 'parameters': { | |
286 'updateInfo': { 'name': {} } | |
287 } | |
288 }, | |
289 'onClicked': { | |
290 'name': {}, | |
291 'parameters': { | |
292 'clickInfo': {} | |
293 } | |
294 } | |
295 } | |
296 } | |
297 }) | |
298 difference = api_schema_map.Subtract(to_subtract) | |
299 self.assertFalse(difference.Lookup('tabs')) | |
300 self.assertFalse(difference.Lookup('tabs', 'properties', | |
301 'TAB_PROPERTY_TWO')) | |
302 self.assertFalse(difference.Lookup('tabs', 'properties')) | |
303 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties', | |
304 'url')) | |
305 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties', | |
306 'id')) | |
307 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
308 'parameters', 'updateInfo')) | |
309 self.assertFalse(difference.Lookup('tabs', 'properties', | |
310 'TAB_PROPERTY_ONE')) | |
311 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
312 'parameters', 'tabId')) | |
313 self.assertFalse(difference.Lookup('events', 'onUpdated', 'parameters', | |
314 'updateInfo')) | |
315 | |
316 | |
317 if __name__ == '__main__': | |
318 unittest.main() | |
OLD | NEW |