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