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

Side by Side Diff: chrome/common/extensions/docs/server2/api_schema_map_test.py

Issue 23503039: Adding APISchemaGraph class to Extensions Docserver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Changes. Created 7 years, 3 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 #!/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()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698