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

Side by Side Diff: tools/json_schema_compiler/idl_schema_test.py

Issue 11342033: Allow IDL schemas to have comments on callback functions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Clarify comment Created 8 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 import idl_schema 6 import idl_schema
7 import unittest 7 import unittest
8 8
9 def getFunction(schema, name): 9 def getFunction(schema, name):
10 for item in schema['functions']: 10 for item in schema['functions']:
(...skipping 12 matching lines...) Expand all
23 23
24 class IdlSchemaTest(unittest.TestCase): 24 class IdlSchemaTest(unittest.TestCase):
25 def setUp(self): 25 def setUp(self):
26 loaded = idl_schema.Load('test/idl_basics.idl') 26 loaded = idl_schema.Load('test/idl_basics.idl')
27 self.assertEquals(1, len(loaded)) 27 self.assertEquals(1, len(loaded))
28 self.assertEquals('idl_basics', loaded[0]['namespace']) 28 self.assertEquals('idl_basics', loaded[0]['namespace'])
29 self.idl_basics = loaded[0] 29 self.idl_basics = loaded[0]
30 30
31 def testSimpleCallbacks(self): 31 def testSimpleCallbacks(self):
32 schema = self.idl_basics 32 schema = self.idl_basics
33 expected = [{'type':'function', 'name':'Callback1', 'parameters':[]}] 33 expected = [{'type':'function', 'name':'cb', 'parameters':[]}]
34 self.assertEquals(expected, getParams(schema, 'function4')) 34 self.assertEquals(expected, getParams(schema, 'function4'))
35 35
36 expected = [{'type':'function', 'name':'Callback2', 36 expected = [{'type':'function', 'name':'cb',
37 'parameters':[{'name':'x', 'type':'integer'}]}] 37 'parameters':[{'name':'x', 'type':'integer'}]}]
38 self.assertEquals(expected, getParams(schema, 'function5')) 38 self.assertEquals(expected, getParams(schema, 'function5'))
39 39
40 expected = [{'type':'function', 'name':'Callback3', 40 expected = [{'type':'function', 'name':'cb',
41 'parameters':[{'name':'arg', '$ref':'idl_basics.MyType1'}]}] 41 'parameters':[{'name':'arg', '$ref':'idl_basics.MyType1'}]}]
42 self.assertEquals(expected, getParams(schema, 'function6')) 42 self.assertEquals(expected, getParams(schema, 'function6'))
43 43
44 def testCallbackWithArrayArgument(self): 44 def testCallbackWithArrayArgument(self):
45 schema = self.idl_basics 45 schema = self.idl_basics
46 expected = [{'type':'function', 'name':'Callback4', 46 expected = [{'type':'function', 'name':'cb',
47 'parameters':[{'name':'arg', 'type':'array', 47 'parameters':[{'name':'arg', 'type':'array',
48 'items':{'$ref':'idl_basics.MyType2'}}]}] 48 'items':{'$ref':'idl_basics.MyType2'}}]}]
49 self.assertEquals(expected, getParams(schema, 'function12')) 49 self.assertEquals(expected, getParams(schema, 'function12'))
50 50
51 51
52 def testArrayOfCallbacks(self): 52 def testArrayOfCallbacks(self):
53 schema = idl_schema.Load('test/idl_callback_arrays.idl')[0] 53 schema = idl_schema.Load('test/idl_callback_arrays.idl')[0]
54 expected = [{'type':'array', 'name':'callbacks', 54 expected = [{'type':'array', 'name':'callbacks',
55 'items':{'type':'function', 'name':'MyCallback', 55 'items':{'type':'function', 'name':'MyCallback',
56 'parameters':[{'type':'integer', 'name':'x'}]}}] 56 'parameters':[{'type':'integer', 'name':'x'}]}}]
57 self.assertEquals(expected, getParams(schema, 'whatever')) 57 self.assertEquals(expected, getParams(schema, 'whatever'))
58 58
59 def testLegalValues(self): 59 def testLegalValues(self):
60 self.assertEquals({ 60 self.assertEquals({
61 'x': {'name': 'x', 'type': 'integer', 'enum': [1,2], 61 'x': {'name': 'x', 'type': 'integer', 'enum': [1,2],
62 'description': 'This comment tests "double-quotes".'}, 62 'description': 'This comment tests "double-quotes".'},
63 'y': {'name': 'y', 'type': 'string'}}, 63 'y': {'name': 'y', 'type': 'string'}},
64 getType(self.idl_basics, 'idl_basics.MyType1')['properties']) 64 getType(self.idl_basics, 'idl_basics.MyType1')['properties'])
65 65
66 def testEnum(self): 66 def testEnum(self):
67 schema = self.idl_basics 67 schema = self.idl_basics
68 expected = {'enum': ['name1', 'name2'], 'description': 'Enum description', 68 expected = {'enum': ['name1', 'name2'], 'description': 'Enum description',
69 'type': 'string', 'id': 'idl_basics.EnumType'} 69 'type': 'string', 'id': 'idl_basics.EnumType'}
70 self.assertEquals(expected, getType(schema, expected['id'])) 70 self.assertEquals(expected, getType(schema, expected['id']))
71 71
72 expected = [{'name':'type', '$ref':'idl_basics.EnumType'}, 72 expected = [{'name':'type', '$ref':'idl_basics.EnumType'},
73 {'type':'function', 'name':'Callback5', 73 {'type':'function', 'name':'cb',
74 'parameters':[{'name':'type', '$ref':'idl_basics.EnumType'}]}] 74 'parameters':[{'name':'type', '$ref':'idl_basics.EnumType'}]}]
75 self.assertEquals(expected, getParams(schema, 'function13')) 75 self.assertEquals(expected, getParams(schema, 'function13'))
76 76
77 expected = [{'items': {'$ref': 'idl_basics.EnumType'}, 'name': 'types', 77 expected = [{'items': {'$ref': 'idl_basics.EnumType'}, 'name': 'types',
78 'type': 'array'}] 78 'type': 'array'}]
79 self.assertEquals(expected, getParams(schema, 'function14')) 79 self.assertEquals(expected, getParams(schema, 'function14'))
80 80
81 def testNoCompile(self): 81 def testNoCompile(self):
82 schema = self.idl_basics 82 schema = self.idl_basics
83 func = getFunction(schema, 'function15') 83 func = getFunction(schema, 'function15')
84 self.assertTrue(func is not None) 84 self.assertTrue(func is not None)
85 self.assertTrue(func['nocompile']) 85 self.assertTrue(func['nocompile'])
86 86
87 def testInternalNamespace(self): 87 def testInternalNamespace(self):
88 idl_basics = self.idl_basics 88 idl_basics = self.idl_basics
89 self.assertEquals('idl_basics', idl_basics['namespace']) 89 self.assertEquals('idl_basics', idl_basics['namespace'])
90 self.assertTrue(idl_basics['internal']) 90 self.assertTrue(idl_basics['internal'])
91 self.assertFalse(idl_basics['nodoc']) 91 self.assertFalse(idl_basics['nodoc'])
92 92
93 def testCallbackComment(self):
94 schema = self.idl_basics
95 self.assertEquals('A comment on a callback.',
96 getParams(schema, 'function16')[0]['description'])
97 self.assertEquals(
98 'A parameter.',
99 getParams(schema, 'function16')[0]['parameters'][0]['description'])
100 self.assertEquals(
101 'Just a parameter comment, with no comment on the callback.',
102 getParams(schema, 'function17')[0]['parameters'][0]['description'])
103 self.assertEquals(
104 'Override callback comment.',
105 getParams(schema, 'function18')[0]['description'])
106
93 def testFunctionComment(self): 107 def testFunctionComment(self):
94 schema = self.idl_basics 108 schema = self.idl_basics
95 func = getFunction(schema, 'function3') 109 func = getFunction(schema, 'function3')
96 self.assertEquals(('This comment should appear in the documentation, ' 110 self.assertEquals(('This comment should appear in the documentation, '
97 'despite occupying multiple lines.'), 111 'despite occupying multiple lines.'),
98 func['description']) 112 func['description'])
99 self.assertEquals( 113 self.assertEquals(
100 [{'description': ('So should this comment about the argument. ' 114 [{'description': ('So should this comment about the argument. '
101 '<em>HTML</em> is fine too.'), 115 '<em>HTML</em> is fine too.'),
102 'name': 'arg', 116 'name': 'arg',
103 '$ref': 'idl_basics.MyType1'}], 117 '$ref': 'idl_basics.MyType1'}],
104 func['parameters']) 118 func['parameters'])
105 func = getFunction(schema, 'function4') 119 func = getFunction(schema, 'function4')
106 self.assertEquals(('This tests if "double-quotes" are escaped correctly.' 120 self.assertEquals(('This tests if "double-quotes" are escaped correctly.'
107 '<br/><br/> It also tests a comment with two newlines.'), 121 '<br/><br/> It also tests a comment with two newlines.'),
108 func['description']) 122 func['description'])
109 123
110 if __name__ == '__main__': 124 if __name__ == '__main__':
111 unittest.main() 125 unittest.main()
OLDNEW
« no previous file with comments | « tools/json_schema_compiler/idl_schema.py ('k') | tools/json_schema_compiler/test/idl_basics.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698