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 'TAB_PROPERTY_ONE': {}, | |
15 'TAB_PROPERTY_TWO': {} | |
16 }, | |
17 'types': [ | |
18 { | |
19 'id': 'Tab', | |
20 'properties': { | |
21 'id': {}, | |
22 'url': {} | |
23 } | |
24 } | |
25 ], | |
26 'functions': [ | |
27 { | |
28 'name': 'get', | |
29 'parameters': [ | |
30 { | |
31 'name': 'callback', | |
32 'parameters': [ | |
33 { | |
34 'name': 'tab' | |
35 } | |
36 ] | |
37 }, | |
38 { | |
39 'name': 'tabId' | |
40 } | |
41 ] | |
42 } | |
43 ], | |
44 'events': [ | |
45 { | |
46 'name': 'onActivated', | |
47 'parameters': [ | |
48 { | |
49 'name': 'activeInfo', | |
50 'properties': { | |
51 'tabId': {}, | |
52 'windowId': {} | |
53 } | |
54 } | |
55 ] | |
56 }, | |
57 { | |
58 'name': 'onUpdated', | |
59 'parameters': [ | |
60 { | |
61 'name': 'updateInfo', | |
62 'properties': { | |
63 'tabId': {} | |
64 } | |
65 } | |
66 ] | |
67 } | |
68 ] | |
69 }] | |
not at google - send to devlin
2013/09/12 20:34:23
the structure is a little more complicated than it
epeterson
2013/09/12 22:39:10
Done.
| |
70 | |
71 | |
72 class APISchemaMapTest(unittest.TestCase): | |
73 | |
74 def testLookup(self): | |
75 api_schema_map = APISchemaMap(API_SCHEMA) | |
76 | |
77 self.assertTrue(api_schema_map.Lookup('tabs')) | |
not at google - send to devlin
2013/09/12 20:34:23
Lookup should probably return the value there, or
epeterson
2013/09/12 22:39:10
Done. Most of these checks have Lookup() traverse
| |
78 self.assertTrue(api_schema_map.Lookup('tabs', 'properties', | |
79 'TAB_PROPERTY_ONE')) | |
80 self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get', | |
81 'parameters', 'callback', | |
82 'parameters', 'tab')) | |
83 self.assertTrue(api_schema_map.Lookup('tabs', 'events', 'onUpdated', | |
84 'parameters', 'updateInfo', | |
85 'properties', 'tabId')) | |
86 self.assertTrue(api_schema_map.Lookup('tabs', 'functions', 'get', | |
87 'parameters', 'callback', | |
88 'parameters')) | |
89 | |
90 self.assertFalse(api_schema_map.Lookup('windows')) | |
91 self.assertFalse(api_schema_map.Lookup('tabs', 'properties', | |
92 'TAB_PROPERTY_DEUX')) | |
93 self.assertFalse(api_schema_map.Lookup('tabs', 'events', 'onActivated', | |
94 'parameters', 'callback')) | |
95 self.assertFalse(api_schema_map.Lookup('tabs', 'functions', 'getById', | |
96 'parameters', 'tab')) | |
97 | |
98 def testSubtract(self): | |
99 api_schema_map = APISchemaMap(API_SCHEMA) | |
100 | |
101 # Test the empty set. | |
102 to_subtract = {} | |
103 difference = api_schema_map.Subtract(to_subtract) | |
104 self.assertTrue(difference.Lookup('tabs')) | |
105 self.assertTrue(difference.Lookup('tabs', 'properties', | |
106 'TAB_PROPERTY_ONE')) | |
107 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
108 'parameters', 'callback', | |
109 'parameters', 'tab')) | |
110 self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated', | |
111 'parameters', 'updateInfo', | |
112 'properties', 'tabId')) | |
113 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', | |
114 'parameters', 'callback', | |
115 'parameters')) | |
116 | |
117 # Test the same set. | |
not at google - send to devlin
2013/09/12 20:34:23
if it's the same set can't you subtract API_SCHEMA
epeterson
2013/09/12 22:39:10
Done. Changes made in APISchemaMap allow this now.
| |
118 to_subtract = { | |
119 'tabs': { | |
120 'properties': { | |
121 'TAB_PROPERTY_ONE': {}, | |
122 'TAB_PROPERTY_TWO': {} | |
123 }, | |
124 'types': { | |
125 'Tab': { | |
126 'properties': { | |
127 'id': {}, | |
128 'url': {} | |
129 } | |
130 } | |
131 }, | |
132 'functions': { | |
133 'get': { | |
134 'parameters': { | |
135 'callback': { | |
136 'parameters': { | |
137 'tab': {} | |
138 } | |
139 }, | |
140 'tabId': {} | |
141 } | |
142 } | |
143 }, | |
144 'events': { | |
145 'onActivated': { | |
146 'parameters': { | |
147 'activeInfo': { | |
148 'properties': { | |
149 'tabId': {}, | |
150 'windowId': {}, | |
151 } | |
152 } | |
153 } | |
154 }, | |
155 'onUpdated': { | |
156 'parameters': { | |
157 'updateInfo': { | |
158 'properties': { | |
159 'tabId': {} | |
160 } | |
161 } | |
162 } | |
163 } | |
164 } | |
165 } | |
166 } | |
167 difference = api_schema_map.Subtract(to_subtract) | |
168 self.assertFalse(difference.Lookup('tabs')) | |
169 self.assertFalse(difference.Lookup('tabs', 'properties', | |
170 'TAB_PROPERTY_ONE')) | |
171 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
172 'parameters', 'callback', | |
173 'parameters', 'tab')) | |
174 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
175 'parameters', 'updateInfo', | |
176 'properties', 'tabId')) | |
177 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', | |
178 'parameters', 'callback', | |
179 'parameters')) | |
180 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab')) | |
181 | |
182 # Test a disjoint set. | |
183 to_subtract = { | |
184 'contextMenus': { | |
185 'properties': { | |
186 'CONTEXT_MENU_PROPERTY_ONE': {} | |
187 }, | |
188 'types': { | |
189 'Menu': { | |
190 'properties': { | |
191 'id': {}, | |
192 'width': {} | |
193 } | |
194 } | |
195 }, | |
196 'functions': { | |
197 'get': { | |
198 'parameters': { | |
199 'callback': { | |
200 'parameters': { | |
201 'menu': {} | |
202 } | |
203 } | |
204 } | |
205 } | |
206 }, | |
207 'events': { | |
208 'onClicked': { | |
209 'parameters': { | |
210 'clickInfo': { | |
211 'properties': { | |
212 'menuId': {} | |
213 } | |
214 } | |
215 } | |
216 }, | |
217 'onUpdated': { | |
218 'parameters': { | |
219 'updateInfo': { | |
220 'properties': { | |
221 'menuId': {} | |
222 } | |
223 } | |
224 } | |
225 } | |
226 } | |
227 } | |
228 } | |
229 difference = api_schema_map.Subtract(to_subtract) | |
230 self.assertTrue(difference.Lookup('tabs')) | |
231 self.assertTrue(difference.Lookup('tabs', 'properties', | |
232 'TAB_PROPERTY_ONE')) | |
233 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', 'parameters', | |
234 'callback', 'parameters', 'tab')) | |
235 self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated', | |
236 'parameters', 'updateInfo', | |
237 'properties', 'tabId')) | |
238 self.assertTrue(difference.Lookup('tabs', 'functions', 'get', 'parameters', | |
239 'callback', 'parameters')) | |
240 self.assertFalse(difference.Lookup('contextMenus', 'properties', | |
241 'CONTEXT_MENU_PROPERTY_ONE')) | |
242 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu')) | |
243 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu', | |
244 'properties', 'id')) | |
245 self.assertFalse(difference.Lookup('contextMenus', 'functions')) | |
246 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onClicked', | |
247 'parameters', 'clickInfo', 'properties')) | |
248 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onUpdated', | |
249 'parameters', 'updateInfo')) | |
250 | |
251 # Test a subset. | |
252 to_subtract = { | |
253 'tabs': { | |
254 'properties': { | |
255 'TAB_PROPERTY_ONE': {} | |
256 }, | |
257 'functions': { | |
258 'get': { | |
259 'parameters': { | |
260 'callback': { | |
261 'parameters': { | |
262 'tab': {} | |
263 } | |
264 } | |
265 } | |
266 } | |
267 }, | |
268 'events': { | |
269 'onUpdated': { | |
270 'parameters': { | |
271 'updateInfo': { | |
272 'properties': { | |
273 'tabId': {} | |
274 } | |
275 } | |
276 } | |
277 } | |
278 } | |
279 } | |
280 } | |
281 difference = api_schema_map.Subtract(to_subtract) | |
282 self.assertTrue(difference.Lookup('tabs')) | |
283 self.assertTrue(difference.Lookup('tabs', 'properties', | |
284 'TAB_PROPERTY_TWO')) | |
285 self.assertTrue(difference.Lookup('tabs', 'types', 'Tab', 'properties', | |
286 'url')) | |
287 self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated', | |
288 'parameters', 'activeInfo')) | |
289 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
290 'parameters', 'updateInfo', 'properties', | |
291 'tabId')) | |
292 self.assertFalse(difference.Lookup('tabs', 'properties', | |
293 'TAB_PROPERTY_ONE')) | |
294 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', 'parameters', | |
295 'callback', 'parameters', 'tab')) | |
296 | |
297 | |
298 # Test a superset. | |
299 to_subtract = { | |
300 'tabs': { | |
301 'properties': { | |
302 'TAB_PROPERTY_ONE': {}, | |
303 'TAB_PROPERTY_TWO': {}, | |
304 'TAB_PROPERTY_THREE': {} | |
305 }, | |
306 'types': { | |
307 'Tab': { | |
308 'properties': { | |
309 'id': {}, | |
310 'url': {} | |
311 } | |
312 }, | |
313 'UpdateInfo': { | |
314 'properties': { | |
315 'tabId': {} | |
316 } | |
317 } | |
318 }, | |
319 'functions': { | |
320 'get': { | |
321 'parameters': { | |
322 'callback': { | |
323 'parameters': { | |
324 'tab': {} | |
325 } | |
326 }, | |
327 'tabId': {} | |
328 } | |
329 }, | |
330 'getById': { | |
331 'parameters': { | |
332 'tabId': {}, | |
333 'callback': { | |
334 'parameters': { | |
335 'tab': {} | |
336 } | |
337 } | |
338 } | |
339 } | |
340 }, | |
341 'events': { | |
342 'onActivated': { | |
343 'parameters': { | |
344 'activeInfo': { | |
345 'properties': { | |
346 'tabId': {}, | |
347 'windowId': {}, | |
348 } | |
349 } | |
350 } | |
351 }, | |
352 'onUpdated': { | |
353 'parameters': { | |
354 'updateInfo': { | |
355 'properties': { | |
356 'tabId': {} | |
357 } | |
358 } | |
359 } | |
360 }, | |
361 'onClicked': { | |
362 'parameters': { | |
363 'clickInfo': { | |
364 'properties': { | |
365 'tabId': {} | |
366 } | |
367 } | |
368 } | |
369 } | |
370 } | |
371 } | |
372 } | |
373 difference = api_schema_map.Subtract(to_subtract) | |
374 self.assertFalse(difference.Lookup('tabs')) | |
375 self.assertFalse(difference.Lookup('tabs', 'properties', | |
376 'TAB_PROPERTY_TWO')) | |
377 self.assertFalse(difference.Lookup('tabs', 'properties')) | |
378 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties', | |
379 'url')) | |
380 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated', | |
381 'parameters', 'updateInfo', 'properties', | |
382 'tabId')) | |
383 self.assertFalse(difference.Lookup('tabs', 'properties', | |
384 'TAB_PROPERTY_ONE')) | |
385 self.assertFalse(difference.Lookup('tabs', 'functions', 'get', 'parameters', | |
386 'callback', 'parameters', 'tab')) | |
387 self.assertFalse(difference.Lookup('events', 'onUpdated', 'parameters', | |
388 'updateInfo', 'properties', 'tabId')) | |
389 | |
not at google - send to devlin
2013/09/12 20:34:23
great tests
| |
390 | |
391 if __name__ == '__main__': | |
392 unittest.main() | |
OLD | NEW |