toindex-byteoffset-sab.js (2556B)
1 // |reftest| skip-if(!this.hasOwnProperty('SharedArrayBuffer')) -- SharedArrayBuffer is not enabled unconditionally 2 // Copyright (C) 2016 the V8 project authors. All rights reserved. 3 // Copyright (C) 2017 Mozilla Corporation. All rights reserved. 4 // This code is governed by the BSD license found in the LICENSE file. 5 6 /*--- 7 esid: sec-dataview-buffer-byteoffset-bytelength 8 description: > 9 ToIndex conversions on byteOffset 10 info: | 11 24.2.2.1 DataView ( buffer, byteOffset, byteLength ) 12 13 ... 14 4. Let offset be ? ToIndex(byteOffset). 15 ... 16 17 ToIndex( value ) 18 19 1. If value is undefined, then 20 a. Let index be 0. 21 2. Else, 22 a. Let integerIndex be ? ToInteger(value). 23 b. If integerIndex < 0, throw a RangeError exception. 24 c. Let index be ! ToLength(integerIndex). 25 d. If SameValueZero(integerIndex, index) is false, throw a RangeError exception. 26 3. Return index. 27 features: [SharedArrayBuffer] 28 ---*/ 29 30 var obj1 = { 31 valueOf: function() { 32 return 3; 33 } 34 }; 35 36 var obj2 = { 37 toString: function() { 38 return 4; 39 } 40 }; 41 42 var sample; 43 var ab = new SharedArrayBuffer(42); 44 45 sample = new DataView(ab, -0); 46 assert.sameValue(sample.byteOffset, 0, "-0"); 47 48 sample = new DataView(ab, obj1); 49 assert.sameValue(sample.byteOffset, 3, "object's valueOf"); 50 51 sample = new DataView(ab, obj2); 52 assert.sameValue(sample.byteOffset, 4, "object's toString"); 53 54 sample = new DataView(ab, ""); 55 assert.sameValue(sample.byteOffset, 0, "the Empty string"); 56 57 sample = new DataView(ab, "0"); 58 assert.sameValue(sample.byteOffset, 0, "string '0'"); 59 60 sample = new DataView(ab, "1"); 61 assert.sameValue(sample.byteOffset, 1, "string '1'"); 62 63 sample = new DataView(ab, true); 64 assert.sameValue(sample.byteOffset, 1, "true"); 65 66 sample = new DataView(ab, false); 67 assert.sameValue(sample.byteOffset, 0, "false"); 68 69 sample = new DataView(ab, NaN); 70 assert.sameValue(sample.byteOffset, 0, "NaN"); 71 72 sample = new DataView(ab, null); 73 assert.sameValue(sample.byteOffset, 0, "null"); 74 75 sample = new DataView(ab, undefined); 76 assert.sameValue(sample.byteOffset, 0, "undefined"); 77 78 sample = new DataView(ab, 0.1); 79 assert.sameValue(sample.byteOffset, 0, "0.1"); 80 81 sample = new DataView(ab, 0.9); 82 assert.sameValue(sample.byteOffset, 0, "0.9"); 83 84 sample = new DataView(ab, 1.1); 85 assert.sameValue(sample.byteOffset, 1, "1.1"); 86 87 sample = new DataView(ab, 1.9); 88 assert.sameValue(sample.byteOffset, 1, "1.9"); 89 90 sample = new DataView(ab, -0.1); 91 assert.sameValue(sample.byteOffset, 0, "-0.1"); 92 93 sample = new DataView(ab, -0.99999); 94 assert.sameValue(sample.byteOffset, 0, "-0.99999"); 95 96 reportCompare(0, 0);