OLD | NEW |
---|---|
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 382 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
393 | 393 |
394 TestOutOfRange(); | 394 TestOutOfRange(); |
395 | 395 |
396 function TestGeneralAccessors() { | 396 function TestGeneralAccessors() { |
397 var a = new DataView(new ArrayBuffer(256)); | 397 var a = new DataView(new ArrayBuffer(256)); |
398 function CheckAccessor(name) { | 398 function CheckAccessor(name) { |
399 var f = a[name]; | 399 var f = a[name]; |
400 assertThrows(function() { f(); }, TypeError); | 400 assertThrows(function() { f(); }, TypeError); |
401 f.call(a, 0, 0); // should not throw | 401 f.call(a, 0, 0); // should not throw |
402 assertThrows(function() { f.call({}, 0, 0); }, TypeError); | 402 assertThrows(function() { f.call({}, 0, 0); }, TypeError); |
403 assertThrows(function() { f.call(a); }, TypeError); | 403 f.call(a); |
404 if (name.indexOf("set") == 0) { | 404 f.call(a, 1); // should not throw |
405 assertThrows(function() { f.call(a, 1); }, TypeError); | |
406 } else { | |
407 f.call(a, 1); // should not throw | |
408 } | |
409 } | 405 } |
410 CheckAccessor("getUint8"); | 406 CheckAccessor("getUint8"); |
411 CheckAccessor("setUint8"); | 407 CheckAccessor("setUint8"); |
412 CheckAccessor("getInt8"); | 408 CheckAccessor("getInt8"); |
413 CheckAccessor("setInt8"); | 409 CheckAccessor("setInt8"); |
414 CheckAccessor("getUint16"); | 410 CheckAccessor("getUint16"); |
415 CheckAccessor("setUint16"); | 411 CheckAccessor("setUint16"); |
416 CheckAccessor("getInt16"); | 412 CheckAccessor("getInt16"); |
417 CheckAccessor("setInt16"); | 413 CheckAccessor("setInt16"); |
418 CheckAccessor("getUint32"); | 414 CheckAccessor("getUint32"); |
419 CheckAccessor("setUint32"); | 415 CheckAccessor("setUint32"); |
420 CheckAccessor("getInt32"); | 416 CheckAccessor("getInt32"); |
421 CheckAccessor("setInt32"); | 417 CheckAccessor("setInt32"); |
422 CheckAccessor("getFloat32"); | 418 CheckAccessor("getFloat32"); |
423 CheckAccessor("setFloat32"); | 419 CheckAccessor("setFloat32"); |
424 CheckAccessor("getFloat64"); | 420 CheckAccessor("getFloat64"); |
425 CheckAccessor("setFloat64"); | 421 CheckAccessor("setFloat64"); |
426 } | 422 } |
427 | 423 |
428 TestGeneralAccessors(); | 424 TestGeneralAccessors(); |
429 | 425 |
430 function TestInsufficientArguments() { | 426 function TestInsufficientArguments() { |
431 var a = new DataView(new ArrayBuffer(256)); | 427 var a = new DataView(new ArrayBuffer(256)); |
428 function CheckInsuficientArguments(type) { | |
429 var expectedValue = type === "Float32" || type === "Float64" ? NaN : 0; | |
430 var offset = getElementSize(type); | |
432 | 431 |
433 assertThrows(function() { a.getUint8(); }, TypeError); | 432 a["set" + type](0, 7); |
434 assertThrows(function() { a.getInt8(); }, TypeError); | 433 a["set" + type](); |
Dan Ehrenberg
2016/06/28 23:50:14
Not sure why you're calling this function and thro
bakkot
2016/06/29 19:01:45
Done, but I'm not sure how valuable it is to asser
Dan Ehrenberg
2016/06/29 19:13:42
It's important that each function return the right
| |
435 assertThrows(function() { a.getUint16(); }, TypeError); | 434 assertSame(expectedValue, a["get" + type]()); |
436 assertThrows(function() { a.getInt16(); }, TypeError); | |
437 assertThrows(function() { a.getUint32(); }, TypeError); | |
438 assertThrows(function() { a.getInt32(); }, TypeError); | |
439 assertThrows(function() { a.getFloat32(); }, TypeError); | |
440 assertThrows(function() { a.getFloat64(); }, TypeError); | |
441 | 435 |
442 assertThrows(function() { a.setUint8(); }, TypeError); | 436 a["set" + type](offset, 7); |
443 assertThrows(function() { a.setInt8(); }, TypeError); | 437 a["set" + type](offset); |
444 assertThrows(function() { a.setUint16(); }, TypeError); | 438 assertSame(expectedValue, a["get" + type](offset)); |
445 assertThrows(function() { a.setInt16(); }, TypeError); | 439 } |
446 assertThrows(function() { a.setUint32(); }, TypeError); | |
447 assertThrows(function() { a.setInt32(); }, TypeError); | |
448 assertThrows(function() { a.setFloat32(); }, TypeError); | |
449 assertThrows(function() { a.setFloat64(); }, TypeError); | |
450 | 440 |
451 assertThrows(function() { a.setUint8(1) }, TypeError); | 441 CheckInsuficientArguments("Uint8"); |
452 assertThrows(function() { a.setInt8(1) }, TypeError); | 442 CheckInsuficientArguments("Int8"); |
453 assertThrows(function() { a.setUint16(1) }, TypeError); | 443 CheckInsuficientArguments("Uint16"); |
454 assertThrows(function() { a.setInt16(1) }, TypeError); | 444 CheckInsuficientArguments("Int16"); |
455 assertThrows(function() { a.setUint32(1) }, TypeError); | 445 CheckInsuficientArguments("Uint32"); |
456 assertThrows(function() { a.setInt32(1) }, TypeError); | 446 CheckInsuficientArguments("Int32"); |
457 assertThrows(function() { a.setFloat32(1) }, TypeError); | 447 CheckInsuficientArguments("Float32"); |
458 assertThrows(function() { a.setFloat64(1) }, TypeError); | 448 CheckInsuficientArguments("Float64"); |
459 } | 449 } |
460 | 450 |
461 TestInsufficientArguments(); | 451 TestInsufficientArguments(); |
OLD | NEW |