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

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

Issue 1511783002: Mojo JS bindings: fix the unittests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years 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/core_unittests.js ('k') | third_party/mojo/mojo_edk_tests.gyp » ('j') | 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/buffer", 10 "mojo/public/js/buffer",
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
173 testEmptyInput(); 173 testEmptyInput();
174 testBlankInput(); 174 testBlankInput();
175 testHandles(); 175 testHandles();
176 testAnchors(); 176 testAnchors();
177 } catch (e) { 177 } catch (e) {
178 return e.toString(); 178 return e.toString();
179 } 179 }
180 return null; 180 return null;
181 } 181 }
182 182
183 function getMessageTestFiles(key) { 183 function getMessageTestFiles(prefix) {
184 var sourceRoot = file.getSourceRootDirectory(); 184 var sourceRoot = file.getSourceRootDirectory();
185 expect(sourceRoot).not.toBeNull(); 185 expect(sourceRoot).not.toBeNull();
186 186
187 var testDir = sourceRoot + 187 var testDir = sourceRoot +
188 "/mojo/public/interfaces/bindings/tests/data/validation/"; 188 "/mojo/public/interfaces/bindings/tests/data/validation/";
189 var testFiles = file.getFilesInDirectory(testDir); 189 var testFiles = file.getFilesInDirectory(testDir);
190 expect(testFiles).not.toBeNull(); 190 expect(testFiles).not.toBeNull();
191 expect(testFiles.length).toBeGreaterThan(0); 191 expect(testFiles.length).toBeGreaterThan(0);
192 192
193 // The matching ".data" pathnames with the extension removed. 193 // The matching ".data" pathnames with the extension removed.
194 return testFiles.filter(function(s) { 194 return testFiles.filter(function(s) {
195 return s.substr(-5) == ".data"; 195 return s.substr(-5) == ".data" && s.indexOf(prefix) == 0;
196 }).map(function(s) { 196 }).map(function(s) {
197 return testDir + s.slice(0, -5); 197 return testDir + s.slice(0, -5);
198 }).filter(function(s) {
199 return s.indexOf(key) != -1;
200 }); 198 });
201 } 199 }
202 200
203 function readTestMessage(filename) { 201 function readTestMessage(filename) {
204 var contents = file.readFileToString(filename + ".data"); 202 var contents = file.readFileToString(filename + ".data");
205 expect(contents).not.toBeNull(); 203 expect(contents).not.toBeNull();
206 return parser.parseTestMessage(contents); 204 return parser.parseTestMessage(contents);
207 } 205 }
208 206
209 function readTestExpected(filename) { 207 function readTestExpected(filename) {
210 var contents = file.readFileToString(filename + ".expected"); 208 var contents = file.readFileToString(filename + ".expected");
211 expect(contents).not.toBeNull(); 209 expect(contents).not.toBeNull();
212 return contents.trim(); 210 return contents.trim();
213 } 211 }
214 212
215 function checkValidationResult(testFile, err) { 213 function checkValidationResult(testFile, err) {
216 var actualResult = (err === noError) ? "PASS" : err; 214 var actualResult = (err === noError) ? "PASS" : err;
217 var expectedResult = readTestExpected(testFile); 215 var expectedResult = readTestExpected(testFile);
218 if (actualResult != expectedResult) 216 if (actualResult != expectedResult)
219 console.log("[Test message validation failed: " + testFile + " ]"); 217 console.log("[Test message validation failed: " + testFile + " ]");
220 expect(actualResult).toEqual(expectedResult); 218 expect(actualResult).toEqual(expectedResult);
221 } 219 }
222 220
223 function testMessageValidation(key, filters) { 221 function testMessageValidation(prefix, filters) {
224 var testFiles = getMessageTestFiles(key); 222 var testFiles = getMessageTestFiles(prefix);
225 expect(testFiles.length).toBeGreaterThan(0); 223 expect(testFiles.length).toBeGreaterThan(0);
226 224
227 for (var i = 0; i < testFiles.length; i++) { 225 for (var i = 0; i < testFiles.length; i++) {
228 // TODO(hansmuller) Temporarily skipping array pointer overflow tests 226 // TODO(hansmuller) Temporarily skipping array pointer overflow tests
229 // because JS numbers are limited to 53 bits. 227 // because JS numbers are limited to 53 bits.
230 // TODO(yzshen) Skipping struct versioning tests (tests with "mthd11" 228 // TODO(yzshen) Skipping struct versioning tests (tests with "mthd11"
231 // in the name) because the feature is not supported in JS yet. 229 // in the name) because the feature is not supported in JS yet.
232 // TODO(rudominer): Temporarily skipping 'no-such-method', 230 // TODO(rudominer): Temporarily skipping 'no-such-method',
233 // 'invalid_request_flags', and 'invalid_response_flags' until additional 231 // 'invalid_request_flags', and 'invalid_response_flags' until additional
234 // logic in *RequestValidator and *ResponseValidator is ported from 232 // logic in *RequestValidator and *ResponseValidator is ported from
(...skipping 18 matching lines...) Expand all
253 251
254 checkValidationResult(testFiles[i], err); 252 checkValidationResult(testFiles[i], err);
255 } 253 }
256 } 254 }
257 255
258 function testConformanceMessageValidation() { 256 function testConformanceMessageValidation() {
259 testMessageValidation("conformance_", [ 257 testMessageValidation("conformance_", [
260 testInterface.ConformanceTestInterface.validateRequest]); 258 testInterface.ConformanceTestInterface.validateRequest]);
261 } 259 }
262 260
263 function testIntegratedMessageValidation(testFilesPattern) { 261 function testBoundsCheckMessageValidation() {
262 testMessageValidation("boundscheck_", [
263 testInterface.BoundsCheckTestInterface.validateRequest]);
264 }
265
266 function testResponseConformanceMessageValidation() {
267 testMessageValidation("resp_conformance_", [
268 testInterface.ConformanceTestInterface.validateResponse]);
269 }
270
271 function testResponseBoundsCheckMessageValidation() {
272 testMessageValidation("resp_boundscheck_", [
273 testInterface.BoundsCheckTestInterface.validateResponse]);
274 }
275
276 function testIntegratedMessageValidation(testFilesPattern,
277 localFactory,
278 remoteFactory) {
264 var testFiles = getMessageTestFiles(testFilesPattern); 279 var testFiles = getMessageTestFiles(testFilesPattern);
265 expect(testFiles.length).toBeGreaterThan(0); 280 expect(testFiles.length).toBeGreaterThan(0);
266 281
282 var testMessagePipe = new core.createMessagePipe();
283 expect(testMessagePipe.result).toBe(core.RESULT_OK);
284 var testConnection = new connection.TestConnection(
285 testMessagePipe.handle1, localFactory, remoteFactory);
286
267 for (var i = 0; i < testFiles.length; i++) { 287 for (var i = 0; i < testFiles.length; i++) {
268 var testMessage = readTestMessage(testFiles[i]); 288 var testMessage = readTestMessage(testFiles[i]);
269 var handles = new Array(testMessage.handleCount); 289 var handles = new Array(testMessage.handleCount);
270 var testMessagePipe = new core.createMessagePipe();
271 expect(testMessagePipe.result).toBe(core.RESULT_OK);
272 290
273 var writeMessageValue = core.writeMessage( 291 var writeMessageValue = core.writeMessage(
274 testMessagePipe.handle0, 292 testMessagePipe.handle0,
275 new Uint8Array(testMessage.buffer.arrayBuffer), 293 new Uint8Array(testMessage.buffer.arrayBuffer),
276 new Array(testMessage.handleCount), 294 new Array(testMessage.handleCount),
277 core.WRITE_MESSAGE_FLAG_NONE); 295 core.WRITE_MESSAGE_FLAG_NONE);
278 expect(writeMessageValue).toBe(core.RESULT_OK); 296 expect(writeMessageValue).toBe(core.RESULT_OK);
279 297
280 var testConnection = new connection.TestConnection(
281 testMessagePipe.handle1,
282 testInterface.IntegrationTestInterface.stubClass,
283 testInterface.IntegrationTestInterface.proxyClass);
284
285 var validationError = noError; 298 var validationError = noError;
286 testConnection.router_.validationErrorHandler = function(err) { 299 testConnection.router_.validationErrorHandler = function(err) {
287 validationError = err; 300 validationError = err;
288 } 301 }
289 302
290 testConnection.router_.connector_.deliverMessage(); 303 testConnection.router_.connector_.waitForNextMessage();
291 checkValidationResult(testFiles[i], validationError); 304 checkValidationResult(testFiles[i], validationError);
305 }
292 306
293 testConnection.close(); 307 testConnection.close();
294 expect(core.close(testMessagePipe.handle0)).toBe(core.RESULT_OK); 308 expect(core.close(testMessagePipe.handle0)).toBe(core.RESULT_OK);
295 }
296 } 309 }
297 310
298 function testIntegratedMessageHeaderValidation() { 311 function testIntegratedMessageHeaderValidation() {
299 testIntegratedMessageValidation("integration_msghdr"); 312 testIntegratedMessageValidation(
313 "integration_msghdr",
314 testInterface.IntegrationTestInterface.stubClass,
315 undefined);
316 testIntegratedMessageValidation(
317 "integration_msghdr",
318 undefined,
319 testInterface.IntegrationTestInterface.proxyClass);
300 } 320 }
301 321
302 function testIntegratedRequestMessageValidation() { 322 function testIntegratedRequestMessageValidation() {
303 testIntegratedMessageValidation("integration_intf_rqst"); 323 testIntegratedMessageValidation(
324 "integration_intf_rqst",
325 testInterface.IntegrationTestInterface.stubClass,
326 undefined);
304 } 327 }
305 328
306 function testIntegratedResponseMessageValidation() { 329 function testIntegratedResponseMessageValidation() {
307 testIntegratedMessageValidation("integration_intf_resp"); 330 testIntegratedMessageValidation(
331 "integration_intf_resp",
332 undefined,
333 testInterface.IntegrationTestInterface.proxyClass);
308 } 334 }
309 335
310 expect(checkTestMessageParser()).toBeNull(); 336 expect(checkTestMessageParser()).toBeNull();
311 testConformanceMessageValidation(); 337 testConformanceMessageValidation();
338 testBoundsCheckMessageValidation();
339 testResponseConformanceMessageValidation();
340 testResponseBoundsCheckMessageValidation();
312 testIntegratedMessageHeaderValidation(); 341 testIntegratedMessageHeaderValidation();
313 testIntegratedResponseMessageValidation(); 342 testIntegratedResponseMessageValidation();
314 testIntegratedRequestMessageValidation(); 343 testIntegratedRequestMessageValidation();
344
315 this.result = "PASS"; 345 this.result = "PASS";
316 }); 346 });
OLDNEW
« no previous file with comments | « mojo/public/js/core_unittests.js ('k') | third_party/mojo/mojo_edk_tests.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698