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

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

Issue 23503039: Adding APISchemaGraph class to Extensions Docserver. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test Restructuring. 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_graph import APISchemaGraph
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 APISchemaGraphTest(unittest.TestCase):
57
58 def testLookup(self):
59 self._testApiSchema(APISchemaGraph(API_SCHEMA))
60
61 def testIsEmpty(self):
62 # A few assertions to make sure that Lookup works on empty sets.
63 empty_graph = APISchemaGraph({})
64 self.assertTrue(empty_graph.IsEmpty())
65 self.assertFalse(empty_graph.Lookup('tabs', 'properties',
66 'TAB_PROPERTY_ONE'))
67 self.assertFalse(empty_graph.Lookup('tabs', 'functions', 'get',
68 'parameters', 'tab'))
69 self.assertFalse(empty_graph.Lookup('tabs', 'functions', 'get',
70 'parameters', 'tabId'))
71 self.assertFalse(empty_graph.Lookup('tabs', 'events', 'onActivated',
72 'parameters', 'activeInfo'))
73 self.assertFalse(empty_graph.Lookup('tabs', 'events', 'onUpdated',
74 'parameters', 'updateInfo'))
75
76 def testSubtractEmpty(self):
77 self._testApiSchema(
78 APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({})))
79
80 def testSubtractSelf(self):
81 self.assertTrue(
82 APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph(API_SCHEMA))
83 .IsEmpty())
84
85 def _testApiSchema(self, api_schema_graph):
86 self.assertTrue(api_schema_graph.Lookup('tabs', 'properties',
87 'TAB_PROPERTY_ONE'))
88 self.assertTrue(api_schema_graph.Lookup('tabs', 'types', 'Tab'))
89 self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
90 'parameters', 'tab'))
91 self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
92 'parameters', 'tabId'))
93 self.assertTrue(api_schema_graph.Lookup('tabs', 'functions', 'get',
94 'parameters', 'tab', 'type'))
95 self.assertTrue(api_schema_graph.Lookup('tabs', 'events', 'onActivated',
96 'parameters', 'activeInfo'))
97 self.assertTrue(api_schema_graph.Lookup('tabs', 'events', 'onUpdated',
98 'parameters', 'updateInfo'))
99 self.assertTrue(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
100 'properties', 'one', 'value'))
101 self.assertTrue(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
102 'properties', 'two', 'description'))
103
104 self.assertFalse(api_schema_graph.Lookup('windows'))
105 self.assertFalse(api_schema_graph.Lookup('tabs', 'properties',
106 'TAB_PROPERTY_DEUX'))
107 self.assertFalse(api_schema_graph.Lookup('tabs', 'events', 'onActivated',
108 'parameters', 'callback'))
109 self.assertFalse(api_schema_graph.Lookup('tabs', 'functions', 'getById',
110 'parameters', 'tab'))
111 self.assertFalse(api_schema_graph.Lookup('tabs', 'functions', 'get',
112 'parameters', 'type'))
113 self.assertFalse(api_schema_graph.Lookup('tabs', 'properties', 'lowercase',
114 'properties', 'two', 'value'))
115
116 def testSubtractDisjointSet(self):
117 difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
118 'contextMenus': {
119 'properties': {
120 'CONTEXT_MENU_PROPERTY_ONE': {}
121 },
122 'types': {
123 'Menu': {
124 'properties': {
125 'id': {},
126 'width': {}
127 }
128 }
129 },
130 'functions': {
131 'get': {
132 'parameters': {
133 'callback': {}
134 }
135 }
136 },
137 'events': {
138 'onClicked': {
139 'parameters': {
140 'clickInfo': {}
141 }
142 },
143 'onUpdated': {
144 'parameters': {
145 'updateInfo': {}
146 }
147 }
148 }
149 }
150 }))
151 self.assertTrue(difference.Lookup('tabs', 'properties',
152 'TAB_PROPERTY_ONE'))
153 self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
154 'parameters', 'tab'))
155 self.assertTrue(difference.Lookup('tabs', 'events', 'onUpdated',
156 'parameters', 'updateInfo'))
157 self.assertTrue(difference.Lookup('tabs', 'functions', 'get',
158 'parameters', 'tabId'))
159 self.assertFalse(difference.Lookup('contextMenus', 'properties',
160 'CONTEXT_MENU_PROPERTY_ONE'))
161 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu'))
162 self.assertFalse(difference.Lookup('contextMenus', 'types', 'Menu',
163 'properties', 'id'))
164 self.assertFalse(difference.Lookup('contextMenus', 'functions'))
165 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onClicked',
166 'parameters', 'clickInfo'))
167 self.assertFalse(difference.Lookup('contextMenus', 'events', 'onUpdated',
168 'parameters', 'updateInfo'))
169
170 def testSubtractSubset(self):
171 difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
172 'tabs': {
173 'properties': {
174 'TAB_PROPERTY_ONE': { 'value': {} }
175 },
176 'functions': {
177 'get': {
178 'parameters': {
179 'tab': { 'name': {},
180 'type': {},
181 'description': {}
182 }
183 }
184 }
185 },
186 'events': {
187 'onUpdated': {
188 'parameters': {
189 'updateInfo': {
190 'name': {},
191 'properties': {
192 'tabId': {}
193 }
194 }
195 }
196 }
197 }
198 }
199 }))
200 self.assertTrue(difference.Lookup('tabs'))
201 self.assertTrue(difference.Lookup('tabs', 'properties',
202 'TAB_PROPERTY_TWO'))
203 self.assertTrue(difference.Lookup('tabs', 'properties', 'lowercase',
204 'properties', 'two', 'description'))
205 self.assertTrue(difference.Lookup('tabs', 'types', 'Tab', 'properties',
206 'url'))
207 self.assertTrue(difference.Lookup('tabs', 'events', 'onActivated',
208 'parameters', 'activeInfo'))
209 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
210 'parameters', 'updateInfo'))
211 self.assertFalse(difference.Lookup('tabs', 'properties',
212 'TAB_PROPERTY_ONE'))
213 self.assertFalse(difference.Lookup('tabs', 'properties',
214 'TAB_PROPERTY_ONE', 'value'))
215 self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
216 'parameters', 'tab'))
217
218 def testSubtractSuperset(self):
219 difference = APISchemaGraph(API_SCHEMA).Subtract(APISchemaGraph({
220 'tabs': {
221 'namespace': {},
222 'properties': {
223 'lowercase': {
224 'properties': {
225 'one': { 'value': {} },
226 'two': { 'description': {} }
227 }
228 },
229 'TAB_PROPERTY_ONE': { 'value': {} },
230 'TAB_PROPERTY_TWO': {},
231 'TAB_PROPERTY_THREE': {}
232 },
233 'types': {
234 'Tab': {
235 'id': {},
236 'properties': {
237 'id': {},
238 'url': {}
239 }
240 },
241 'UpdateInfo': {}
242 },
243 'functions': {
244 'get': {
245 'name': {},
246 'parameters': {
247 'tab': { 'name': {},
248 'type': {},
249 'description': {}
250 },
251 'tabId': { 'name': {} }
252 }
253 },
254 'getById': {
255 'parameters': {
256 'tabId': {}
257 }
258 }
259 },
260 'events': {
261 'onActivated': {
262 'name': {},
263 'parameters': {
264 'activeInfo': { 'name': {} }
265 }
266 },
267 'onUpdated': {
268 'name': {},
269 'parameters': {
270 'updateInfo': { 'name': {} }
271 }
272 },
273 'onClicked': {
274 'name': {},
275 'parameters': {
276 'clickInfo': {}
277 }
278 }
279 }
280 }
281 }))
282 self.assertFalse(difference.Lookup('tabs'))
283 self.assertFalse(difference.Lookup('tabs', 'properties',
284 'TAB_PROPERTY_TWO'))
285 self.assertFalse(difference.Lookup('tabs', 'properties'))
286 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties',
287 'url'))
288 self.assertFalse(difference.Lookup('tabs', 'types', 'Tab', 'properties',
289 'id'))
290 self.assertFalse(difference.Lookup('tabs', 'events', 'onUpdated',
291 'parameters', 'updateInfo'))
292 self.assertFalse(difference.Lookup('tabs', 'properties',
293 'TAB_PROPERTY_ONE'))
294 self.assertFalse(difference.Lookup('tabs', 'functions', 'get',
295 'parameters', 'tabId'))
296 self.assertFalse(difference.Lookup('events', 'onUpdated', 'parameters',
297 'updateInfo'))
298
299
300 if __name__ == '__main__':
301 unittest.main()
OLDNEW
« no previous file with comments | « chrome/common/extensions/docs/server2/api_schema_graph.py ('k') | chrome/common/extensions/docs/server2/app.yaml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698