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

Side by Side Diff: mojo/public/js/bindings/validation_unittests.js

Issue 551293004: Mojo JS validation unit test should check Connection et al (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed GN build Created 6 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
« no previous file with comments | « mojo/public/js/bindings/tests/run_js_tests.cc ('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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 define([ 5 define([
6 "console", 6 "console",
7 "file", 7 "file",
8 "gin/test/expect", 8 "gin/test/expect",
9 "mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom", 9 "mojo/public/interfaces/bindings/tests/validation_test_interfaces.mojom",
10 "mojo/public/js/bindings/buffer", 10 "mojo/public/js/bindings/buffer",
11 "mojo/public/js/bindings/codec", 11 "mojo/public/js/bindings/codec",
12 "mojo/public/js/bindings/connection",
13 "mojo/public/js/bindings/connector",
14 "mojo/public/js/bindings/core",
12 "mojo/public/js/bindings/tests/validation_test_input_parser", 15 "mojo/public/js/bindings/tests/validation_test_input_parser",
16 "mojo/public/js/bindings/router",
13 "mojo/public/js/bindings/validator", 17 "mojo/public/js/bindings/validator",
14 ], function( 18 ], function(console,
15 console, file, expect, testInterface, buffer, codec, parser, validator) { 19 file,
20 expect,
21 testInterface,
22 buffer,
23 codec,
24 connection,
25 connector,
26 core,
27 parser,
28 router,
29 validator) {
30
31 var noError = validator.validationError.NONE;
16 32
17 function checkTestMessageParser() { 33 function checkTestMessageParser() {
18 function TestMessageParserFailure(message, input) { 34 function TestMessageParserFailure(message, input) {
19 this.message = message; 35 this.message = message;
20 this.input = input; 36 this.input = input;
21 } 37 }
22 38
23 TestMessageParserFailure.prototype.toString = function() { 39 TestMessageParserFailure.prototype.toString = function() {
24 return 'Error: ' + this.message + ' for "' + this.input + '"'; 40 return 'Error: ' + this.message + ' for "' + this.input + '"';
25 } 41 }
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 expect(contents).not.toBeNull(); 205 expect(contents).not.toBeNull();
190 return parser.parseTestMessage(contents); 206 return parser.parseTestMessage(contents);
191 } 207 }
192 208
193 function readTestExpected(filename) { 209 function readTestExpected(filename) {
194 var contents = file.readFileToString(filename + ".expected"); 210 var contents = file.readFileToString(filename + ".expected");
195 expect(contents).not.toBeNull(); 211 expect(contents).not.toBeNull();
196 return contents.trim(); 212 return contents.trim();
197 } 213 }
198 214
215 function checkValidationResult(testFile, err) {
216 var actualResult = (err === noError) ? "PASS" : err;
217 var expectedResult = readTestExpected(testFile);
218 if (actualResult != expectedResult)
219 console.log("[Test message validation failed: " + testFile + " ]");
220 expect(actualResult).toEqual(expectedResult);
221 }
222
199 function testMessageValidation(key, filters) { 223 function testMessageValidation(key, filters) {
200 var testFiles = getMessageTestFiles(key); 224 var testFiles = getMessageTestFiles(key);
201 expect(testFiles.length).toBeGreaterThan(0); 225 expect(testFiles.length).toBeGreaterThan(0);
202 226
203 var noError = validator.validationError.NONE;
204 for (var i = 0; i < testFiles.length; i++) { 227 for (var i = 0; i < testFiles.length; i++) {
205 // TODO(hansmuller): Temporarily skipping array pointer overflow tests. 228 // TODO(hansmuller): Temporarily skipping array pointer overflow tests.
206 if (testFiles[i].indexOf("overflow") != -1) { 229 if (testFiles[i].indexOf("overflow") != -1) {
207 console.log("[Skipping " + testFiles[i] + "]"); 230 console.log("[Skipping " + testFiles[i] + "]");
208 continue; 231 continue;
209 } 232 }
210 233
211 var testMessage = readTestMessage(testFiles[i]); 234 var testMessage = readTestMessage(testFiles[i]);
212 var handles = new Array(testMessage.handleCount); 235 var handles = new Array(testMessage.handleCount);
213 var message = new codec.Message(testMessage.buffer, handles); 236 var message = new codec.Message(testMessage.buffer, handles);
214 var messageValidator = new validator.Validator(message); 237 var messageValidator = new validator.Validator(message);
215 238
216 var err = messageValidator.validateMessageHeader(); 239 var err = messageValidator.validateMessageHeader();
217 for (var j = 0; err === noError && j < filters.length; ++j) 240 for (var j = 0; err === noError && j < filters.length; ++j)
218 err = filters[j](messageValidator); 241 err = filters[j](messageValidator);
219 242
220 var actualResult = (err === noError) ? "PASS" : err; 243 checkValidationResult(testFiles[i], err);
221 var expectedResult = readTestExpected(testFiles[i]);
222 if (actualResult != expectedResult)
223 console.log("[Test message validation failed: " + testFiles[i] + " ]");
224 expect(actualResult).toEqual(expectedResult);
225 } 244 }
226 } 245 }
227 246
228 function testConformanceMessageValidation() { 247 function testConformanceMessageValidation() {
229 testMessageValidation("conformance_", [ 248 testMessageValidation("conformance_", [
230 testInterface.ConformanceTestInterfaceStub.prototype.validator]); 249 testInterface.ConformanceTestInterfaceStub.prototype.validator]);
231 } 250 }
232 251
233 function testNotImplementedMessageValidation() { 252 function testNotImplementedMessageValidation() {
234 testMessageValidation("not_implemented_", [ 253 testMessageValidation("not_implemented_", [
235 testInterface.ConformanceTestInterfaceStub.prototype.validator]); 254 testInterface.ConformanceTestInterfaceStub.prototype.validator]);
236 } 255 }
237 256
238 function testIntegrationMessageValidation() { 257 function testIntegratedMessageValidation() {
239 testMessageValidation("integration_", [ 258 var testFiles = getMessageTestFiles("integration_");
240 testInterface.IntegrationTestInterface1Stub.prototype.validator, 259 expect(testFiles.length).toBeGreaterThan(0);
241 testInterface.IntegrationTestInterface2Proxy.prototype.validator]); 260
261 for (var i = 0; i < testFiles.length; i++) {
262 // TODO(hansmuller): Temporarily skipping array pointer overflow tests.
263 if (testFiles[i].indexOf("overflow") != -1) {
264 console.log("[Skipping " + testFiles[i] + "]");
265 continue;
266 }
267
268 var testMessage = readTestMessage(testFiles[i]);
269 var handles = new Array(testMessage.handleCount);
270 var testMessagePipe = new core.createMessagePipe();
271 expect(testMessagePipe.result).toBe(core.RESULT_OK);
272
273 var writeMessageValue = core.writeMessage(
274 testMessagePipe.handle0,
275 new Uint8Array(testMessage.buffer.arrayBuffer),
276 new Array(testMessage.handleCount),
277 core.WRITE_MESSAGE_FLAG_NONE);
278 expect(writeMessageValue).toBe(core.RESULT_OK);
279
280 var testConnection = new connection.TestConnection(
281 testMessagePipe.handle1,
282 testInterface.IntegrationTestInterface1Stub,
283 testInterface.IntegrationTestInterface2Proxy);
284
285 var validationError = noError;
286 testConnection.router_.validationErrorHandler = function(err) {
287 validationError = err;
288 }
289
290 testConnection.router_.connector_.deliverMessage();
291 checkValidationResult(testFiles[i], validationError);
292
293 testConnection.close();
294 expect(core.close(testMessagePipe.handle0)).toBe(core.RESULT_OK);
295 }
242 } 296 }
243 297
244 expect(checkTestMessageParser()).toBeNull(); 298 expect(checkTestMessageParser()).toBeNull();
245 testConformanceMessageValidation(); 299 testConformanceMessageValidation();
246 testIntegrationMessageValidation(); 300 testIntegratedMessageValidation();
247 this.result = "PASS"; 301 this.result = "PASS";
248 }); 302 });
OLDNEW
« no previous file with comments | « mojo/public/js/bindings/tests/run_js_tests.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698