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

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

Issue 1036593004: [Extension API Extern Generation] Add support for function types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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
« no previous file with comments | « tools/json_schema_compiler/js_externs_generator.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 2 # Copyright 2015 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 from js_externs_generator import JsExternsGenerator 7 from js_externs_generator import JsExternsGenerator
8 from datetime import datetime 8 from datetime import datetime
9 import model 9 import model
10 import unittest 10 import unittest
(...skipping 28 matching lines...) Expand all
39 Bar[]? optionalObjArr; 39 Bar[]? optionalObjArr;
40 Greek[] enumArr; 40 Greek[] enumArr;
41 any[] anythingGoes; 41 any[] anythingGoes;
42 Bar obj; 42 Bar obj;
43 long? maybe; 43 long? maybe;
44 (DOMString or Greek or long[]) choice; 44 (DOMString or Greek or long[]) choice;
45 }; 45 };
46 46
47 callback VoidCallback = void(); 47 callback VoidCallback = void();
48 48
49 callback BazGreekCallback = void(Baz baz, Greek greek);
50
49 interface Functions { 51 interface Functions {
50 // Does something exciting! 52 // Does something exciting! And what's more, this is a multiline function
53 // comment! It goes onto multiple lines!
51 // |baz| : The baz to use. 54 // |baz| : The baz to use.
52 static void doSomething(Baz baz, optional VoidCallback callback); 55 static void doSomething(Baz baz, VoidCallback callback);
56
57 static void bazGreek(optional BazGreekCallback callback);
58
59 [deprecated="Use a new method."] static DOMString returnString();
53 }; 60 };
54 }; 61 };
55 """ 62 """
56 63
57 # The output we expect from our fake idl file. 64 # The output we expect from our fake idl file.
58 expected_output = """// Copyright %s The Chromium Authors. All rights reserved. 65 expected_output = """// Copyright %s The Chromium Authors. All rights reserved.
59 // Use of this source code is governed by a BSD-style license that can be 66 // Use of this source code is governed by a BSD-style license that can be
60 // found in the LICENSE file. 67 // found in the LICENSE file.
61 68
62 /** @fileoverview Externs generated from namespace: fakeApi */ 69 /** @fileoverview Externs generated from namespace: fakeApi */
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 * enumArr: !Array<!chrome.fakeApi.Greek>, 102 * enumArr: !Array<!chrome.fakeApi.Greek>,
96 * anythingGoes: !Array<*>, 103 * anythingGoes: !Array<*>,
97 * obj: Bar, 104 * obj: Bar,
98 * maybe: (number|undefined), 105 * maybe: (number|undefined),
99 * choice: (string|!chrome.fakeApi.Greek|!Array<number>) 106 * choice: (string|!chrome.fakeApi.Greek|!Array<number>)
100 * }} 107 * }}
101 */ 108 */
102 var Baz; 109 var Baz;
103 110
104 /** 111 /**
105 * Does something exciting! 112 * Does something exciting! And what's more, this is a multiline function
113 * comment! It goes onto multiple lines!
106 * @param {Baz} baz The baz to use. 114 * @param {Baz} baz The baz to use.
107 * @param {Function=} callback 115 * @param {function():void} callback
108 */ 116 */
109 chrome.fakeApi.doSomething = function(baz, callback) {}; 117 chrome.fakeApi.doSomething = function(baz, callback) {};
118
119 /**
120 * @param {function(Baz, !chrome.fakeApi.Greek):void=} callback
121 */
122 chrome.fakeApi.bazGreek = function(callback) {};
123
124 /**
125 * @return {string}
126 * @deprecated Use a new method.
127 */
128 chrome.fakeApi.returnString = function() {};
110 """ % datetime.now().year 129 """ % datetime.now().year
111 130
112 131
113 class JsExternGeneratorTest(unittest.TestCase): 132 class JsExternGeneratorTest(unittest.TestCase):
114 def testBasic(self): 133 def testBasic(self):
115 self.maxDiff = None # Lets us see the full diff when inequal. 134 self.maxDiff = None # Lets us see the full diff when inequal.
116 filename = 'fake_api.idl' 135 filename = 'fake_api.idl'
117 api_def = idl_schema.Process(fake_idl, filename) 136 api_def = idl_schema.Process(fake_idl, filename)
118 m = model.Model() 137 m = model.Model()
119 namespace = m.AddNamespace(api_def[0], filename) 138 namespace = m.AddNamespace(api_def[0], filename)
120 self.assertMultiLineEqual(expected_output, 139 self.assertMultiLineEqual(expected_output,
121 JsExternsGenerator().Generate(namespace).Render()) 140 JsExternsGenerator().Generate(namespace).Render())
122 141
123 142
124 if __name__ == '__main__': 143 if __name__ == '__main__':
125 unittest.main() 144 unittest.main()
OLDNEW
« no previous file with comments | « tools/json_schema_compiler/js_externs_generator.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698