1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/js/src/tests/js1_8_5/extensions/dataview.js Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,1652 @@ 1.4 +// |reftest| skip-if(!xulRuntime.shell) 1.5 +/* 1.6 + * Any copyright is dedicated to the Public Domain. 1.7 + * http://creativecommons.org/licenses/publicdomain/ 1.8 + * Contributor: Tobias Schneider <schneider@jancona.com> 1.9 + */ 1.10 + 1.11 +//------------------------------------------------------------------------------ 1.12 +var BUGNUMBER = 575688; 1.13 +var summary = 'DataView tests'; 1.14 + 1.15 +function test() { 1.16 + function die(message, uplevel) { 1.17 + var e = new Error(message); 1.18 + var frame = e.stack.split("\n")[uplevel]; 1.19 + print(message + " at " + frame.split("@")[1]); 1.20 + print("Stack:\n" + e.stack); 1.21 + throw(e); 1.22 + } 1.23 + 1.24 + function checkThrow(fun, type) { 1.25 + var thrown = false; 1.26 + try { 1.27 + fun(); 1.28 + } catch (x) { 1.29 + thrown = x; 1.30 + } 1.31 + 1.32 + if (!thrown) { 1.33 + die('no exception thrown, expected ' + type.name, 2); 1.34 + } else if (!(thrown instanceof type)) { 1.35 + die('expected ' + type.name + ', got ' + thrown, 2); 1.36 + } 1.37 + } 1.38 + 1.39 + function checkThrowTODO(fun, type) { 1.40 + var thrown = false; 1.41 + try { 1.42 + fun(); 1.43 + } catch (x) { 1.44 + thrown = x; 1.45 + } 1.46 + 1.47 + if (!thrown) { 1.48 + print('(TODO) no exception thrown, expected ' + type.name); 1.49 + } else if (!(thrown instanceof type)) { 1.50 + print('(TODO) expected ' + type.name + ', got ' + thrown); 1.51 + } else { 1.52 + print('test unexpectedly passed: expected ' + type.name + ' exception'); 1.53 + } 1.54 + } 1.55 + 1.56 + enterFunc ('test'); 1.57 + printBugNumber(BUGNUMBER); 1.58 + printStatus(summary); 1.59 + 1.60 + // testConstructor 1.61 + buffer = (new Uint8Array([1, 2])).buffer; 1.62 + checkThrow(function () new DataView(buffer, 0, 3), RangeError); 1.63 + checkThrow(function () new DataView(buffer, 1, 2), RangeError); 1.64 + checkThrow(function () new DataView(buffer, 2, 1), RangeError); 1.65 + checkThrow(function () new DataView(buffer, 2147483649, 0), RangeError); 1.66 + checkThrow(function () new DataView(buffer, 0, 2147483649), RangeError); 1.67 + checkThrow(function() new DataView(), TypeError); 1.68 + checkThrow(function() new DataView(Object.create(new ArrayBuffer(5))), TypeError); 1.69 + 1.70 + // testGetMethods 1.71 + 1.72 + // testIntegerGets(start=0, length=16) 1.73 + var data1 = [0,1,2,3,0x64,0x65,0x66,0x67,0x80,0x81,0x82,0x83,252,253,254,255]; 1.74 + var data1_r = data1.slice().reverse(); 1.75 + var buffer1 = new Uint8Array(data1).buffer; 1.76 + var view1 = new DataView(buffer1, 0, 16); 1.77 + view = view1; 1.78 + assertEq(view.getInt8(0), 0); 1.79 + assertEq(view.getInt8(8), -128); 1.80 + assertEq(view.getInt8(15), -1); 1.81 + assertEq(view.getUint8(0), 0); 1.82 + assertEq(view.getUint8(8), 128); 1.83 + assertEq(view.getUint8(15), 255); 1.84 + // Little endian. 1.85 + assertEq(view.getInt16(0, true), 256); 1.86 + assertEq(view.getInt16(5, true), 0x6665); 1.87 + assertEq(view.getInt16(9, true), -32127); 1.88 + assertEq(view.getInt16(14, true), -2); 1.89 + // Big endian. 1.90 + assertEq(view.getInt16(0), 1); 1.91 + assertEq(view.getInt16(5), 0x6566); 1.92 + assertEq(view.getInt16(9), -32382); 1.93 + assertEq(view.getInt16(14), -257); 1.94 + // Little endian. 1.95 + assertEq(view.getUint16(0, true), 256); 1.96 + assertEq(view.getUint16(5, true), 0x6665); 1.97 + assertEq(view.getUint16(9, true), 0x8281); 1.98 + assertEq(view.getUint16(14, true), 0xfffe); 1.99 + // Big endian. 1.100 + assertEq(view.getUint16(0), 1); 1.101 + assertEq(view.getUint16(5), 0x6566); 1.102 + assertEq(view.getUint16(9), 0x8182); 1.103 + assertEq(view.getUint16(14), 0xfeff); 1.104 + // Little endian. 1.105 + assertEq(view.getInt32(0, true), 0x3020100); 1.106 + assertEq(view.getInt32(3, true), 0x66656403); 1.107 + assertEq(view.getInt32(6, true), -2122291354); 1.108 + assertEq(view.getInt32(9, true), -58490239); 1.109 + assertEq(view.getInt32(12, true), -66052); 1.110 + // Big endian. 1.111 + assertEq(view.getInt32(0), 0x10203); 1.112 + assertEq(view.getInt32(3), 0x3646566); 1.113 + assertEq(view.getInt32(6), 0x66678081); 1.114 + assertEq(view.getInt32(9), -2122152964); 1.115 + assertEq(view.getInt32(12), -50462977); 1.116 + // Little endian. 1.117 + assertEq(view.getUint32(0, true), 0x3020100); 1.118 + assertEq(view.getUint32(3, true), 0x66656403); 1.119 + assertEq(view.getUint32(6, true), 0x81806766); 1.120 + assertEq(view.getUint32(9, true), 0xfc838281); 1.121 + assertEq(view.getUint32(12, true), 0xfffefdfc); 1.122 + // Big endian. 1.123 + assertEq(view.getUint32(0), 0x10203); 1.124 + assertEq(view.getUint32(3), 0x3646566); 1.125 + assertEq(view.getUint32(6), 0x66678081); 1.126 + assertEq(view.getUint32(9), 0x818283fc); 1.127 + assertEq(view.getUint32(12), 0xfcfdfeff); 1.128 + 1.129 + // testFloatGets(start=0) 1.130 + 1.131 + // testFloatGet expected=10 1.132 + // Little endian 1.133 + var data2 = [0,0,32,65]; 1.134 + var data2_r = data2.slice().reverse(); 1.135 + var buffer2 = new Uint8Array(data2).buffer; 1.136 + view = new DataView(buffer2, 0, 4); 1.137 + assertEq(view.getFloat32(0, true), 10); 1.138 + var buffer2_pad3 = new Uint8Array(Array(3).concat(data2)).buffer; 1.139 + view = new DataView(buffer2_pad3, 0, 7); 1.140 + assertEq(view.getFloat32(3, true), 10); 1.141 + var buffer2_pad7 = new Uint8Array(Array(7).concat(data2)).buffer; 1.142 + view = new DataView(buffer2_pad7, 0, 11); 1.143 + assertEq(view.getFloat32(7, true), 10); 1.144 + var buffer2_pad10 = new Uint8Array(Array(10).concat(data2)).buffer; 1.145 + view = new DataView(buffer2_pad10, 0, 14); 1.146 + assertEq(view.getFloat32(10, true), 10); 1.147 + // Big endian. 1.148 + var buffer2_r = new Uint8Array(data2_r).buffer; 1.149 + view = new DataView(buffer2_r, 0, 4); 1.150 + assertEq(view.getFloat32(0, false), 10); 1.151 + var buffer2_r_pad3 = new Uint8Array(Array(3).concat(data2_r)).buffer; 1.152 + view = new DataView(buffer2_r_pad3, 0, 7); 1.153 + assertEq(view.getFloat32(3, false), 10); 1.154 + var buffer2_r_pad7 = new Uint8Array(Array(7).concat(data2_r)).buffer; 1.155 + view = new DataView(buffer2_r_pad7, 0, 11); 1.156 + assertEq(view.getFloat32(7, false), 10); 1.157 + var buffer2_r_pad10 = new Uint8Array(Array(10).concat(data2_r)).buffer; 1.158 + view = new DataView(buffer2_r_pad10, 0, 14); 1.159 + assertEq(view.getFloat32(10, false), 10); 1.160 + 1.161 + // testFloatGet expected=1.2300000190734863 1.162 + // Little endian 1.163 + var data3 = [164,112,157,63]; 1.164 + var data3_r = data3.slice().reverse(); 1.165 + var buffer3 = new Uint8Array(data3).buffer; 1.166 + view = new DataView(buffer3, 0, 4); 1.167 + assertEq(view.getFloat32(0, true), 1.2300000190734863); 1.168 + var buffer3_pad3 = new Uint8Array(Array(3).concat(data3)).buffer; 1.169 + view = new DataView(buffer3_pad3, 0, 7); 1.170 + assertEq(view.getFloat32(3, true), 1.2300000190734863); 1.171 + var buffer3_pad7 = new Uint8Array(Array(7).concat(data3)).buffer; 1.172 + view = new DataView(buffer3_pad7, 0, 11); 1.173 + assertEq(view.getFloat32(7, true), 1.2300000190734863); 1.174 + var buffer3_pad10 = new Uint8Array(Array(10).concat(data3)).buffer; 1.175 + view = new DataView(buffer3_pad10, 0, 14); 1.176 + assertEq(view.getFloat32(10, true), 1.2300000190734863); 1.177 + // Big endian. 1.178 + var buffer3_r = new Uint8Array(data3_r).buffer; 1.179 + view = new DataView(buffer3_r, 0, 4); 1.180 + assertEq(view.getFloat32(0, false), 1.2300000190734863); 1.181 + var buffer3_r_pad3 = new Uint8Array(Array(3).concat(data3_r)).buffer; 1.182 + view = new DataView(buffer3_r_pad3, 0, 7); 1.183 + assertEq(view.getFloat32(3, false), 1.2300000190734863); 1.184 + var buffer3_r_pad7 = new Uint8Array(Array(7).concat(data3_r)).buffer; 1.185 + view = new DataView(buffer3_r_pad7, 0, 11); 1.186 + assertEq(view.getFloat32(7, false), 1.2300000190734863); 1.187 + var buffer3_r_pad10 = new Uint8Array(Array(10).concat(data3_r)).buffer; 1.188 + view = new DataView(buffer3_r_pad10, 0, 14); 1.189 + assertEq(view.getFloat32(10, false), 1.2300000190734863); 1.190 + 1.191 + // testFloatGet expected=-45621.37109375 1.192 + // Little endian 1.193 + var data4 = [95,53,50,199]; 1.194 + var data4_r = data4.slice().reverse(); 1.195 + var buffer4 = new Uint8Array(data4).buffer; 1.196 + view = new DataView(buffer4, 0, 4); 1.197 + assertEq(view.getFloat32(0, true), -45621.37109375); 1.198 + var buffer4_pad3 = new Uint8Array(Array(3).concat(data4)).buffer; 1.199 + view = new DataView(buffer4_pad3, 0, 7); 1.200 + assertEq(view.getFloat32(3, true), -45621.37109375); 1.201 + var buffer4_pad7 = new Uint8Array(Array(7).concat(data4)).buffer; 1.202 + view = new DataView(buffer4_pad7, 0, 11); 1.203 + assertEq(view.getFloat32(7, true), -45621.37109375); 1.204 + var buffer4_pad10 = new Uint8Array(Array(10).concat(data4)).buffer; 1.205 + view = new DataView(buffer4_pad10, 0, 14); 1.206 + assertEq(view.getFloat32(10, true), -45621.37109375); 1.207 + // Big endian. 1.208 + var buffer4_r = new Uint8Array(data4_r).buffer; 1.209 + view = new DataView(buffer4_r, 0, 4); 1.210 + assertEq(view.getFloat32(0, false), -45621.37109375); 1.211 + var buffer4_r_pad3 = new Uint8Array(Array(3).concat(data4_r)).buffer; 1.212 + view = new DataView(buffer4_r_pad3, 0, 7); 1.213 + assertEq(view.getFloat32(3, false), -45621.37109375); 1.214 + var buffer4_r_pad7 = new Uint8Array(Array(7).concat(data4_r)).buffer; 1.215 + view = new DataView(buffer4_r_pad7, 0, 11); 1.216 + assertEq(view.getFloat32(7, false), -45621.37109375); 1.217 + var buffer4_r_pad10 = new Uint8Array(Array(10).concat(data4_r)).buffer; 1.218 + view = new DataView(buffer4_r_pad10, 0, 14); 1.219 + assertEq(view.getFloat32(10, false), -45621.37109375); 1.220 + 1.221 + // testFloatGet expected=NaN 1.222 + // Little endian 1.223 + var data5 = [255,255,255,127]; 1.224 + var data5_r = data5.slice().reverse(); 1.225 + var buffer5 = new Uint8Array(data5).buffer; 1.226 + view = new DataView(buffer5, 0, 4); 1.227 + assertEq(view.getFloat32(0, true), NaN); 1.228 + var buffer5_pad3 = new Uint8Array(Array(3).concat(data5)).buffer; 1.229 + view = new DataView(buffer5_pad3, 0, 7); 1.230 + assertEq(view.getFloat32(3, true), NaN); 1.231 + var buffer5_pad7 = new Uint8Array(Array(7).concat(data5)).buffer; 1.232 + view = new DataView(buffer5_pad7, 0, 11); 1.233 + assertEq(view.getFloat32(7, true), NaN); 1.234 + var buffer5_pad10 = new Uint8Array(Array(10).concat(data5)).buffer; 1.235 + view = new DataView(buffer5_pad10, 0, 14); 1.236 + assertEq(view.getFloat32(10, true), NaN); 1.237 + // Big endian. 1.238 + var buffer5_r = new Uint8Array(data5_r).buffer; 1.239 + view = new DataView(buffer5_r, 0, 4); 1.240 + assertEq(view.getFloat32(0, false), NaN); 1.241 + var buffer5_r_pad3 = new Uint8Array(Array(3).concat(data5_r)).buffer; 1.242 + view = new DataView(buffer5_r_pad3, 0, 7); 1.243 + assertEq(view.getFloat32(3, false), NaN); 1.244 + var buffer5_r_pad7 = new Uint8Array(Array(7).concat(data5_r)).buffer; 1.245 + view = new DataView(buffer5_r_pad7, 0, 11); 1.246 + assertEq(view.getFloat32(7, false), NaN); 1.247 + var buffer5_r_pad10 = new Uint8Array(Array(10).concat(data5_r)).buffer; 1.248 + view = new DataView(buffer5_r_pad10, 0, 14); 1.249 + assertEq(view.getFloat32(10, false), NaN); 1.250 + 1.251 + // testFloatGet expected=NaN 1.252 + // Little endian 1.253 + var data6 = [255,255,255,255]; 1.254 + var data6_r = data6.slice().reverse(); 1.255 + var buffer6 = new Uint8Array(data6).buffer; 1.256 + view = new DataView(buffer6, 0, 4); 1.257 + assertEq(view.getFloat32(0, true), NaN); 1.258 + var buffer6_pad3 = new Uint8Array(Array(3).concat(data6)).buffer; 1.259 + view = new DataView(buffer6_pad3, 0, 7); 1.260 + assertEq(view.getFloat32(3, true), NaN); 1.261 + var buffer6_pad7 = new Uint8Array(Array(7).concat(data6)).buffer; 1.262 + view = new DataView(buffer6_pad7, 0, 11); 1.263 + assertEq(view.getFloat32(7, true), NaN); 1.264 + var buffer6_pad10 = new Uint8Array(Array(10).concat(data6)).buffer; 1.265 + view = new DataView(buffer6_pad10, 0, 14); 1.266 + assertEq(view.getFloat32(10, true), NaN); 1.267 + // Big endian. 1.268 + var buffer6_r = new Uint8Array(data6_r).buffer; 1.269 + view = new DataView(buffer6_r, 0, 4); 1.270 + assertEq(view.getFloat32(0, false), NaN); 1.271 + var buffer6_r_pad3 = new Uint8Array(Array(3).concat(data6_r)).buffer; 1.272 + view = new DataView(buffer6_r_pad3, 0, 7); 1.273 + assertEq(view.getFloat32(3, false), NaN); 1.274 + var buffer6_r_pad7 = new Uint8Array(Array(7).concat(data6_r)).buffer; 1.275 + view = new DataView(buffer6_r_pad7, 0, 11); 1.276 + assertEq(view.getFloat32(7, false), NaN); 1.277 + var buffer6_r_pad10 = new Uint8Array(Array(10).concat(data6_r)).buffer; 1.278 + view = new DataView(buffer6_r_pad10, 0, 14); 1.279 + assertEq(view.getFloat32(10, false), NaN); 1.280 + 1.281 + // testFloatGet expected=10 1.282 + // Little endian 1.283 + var data7 = [0,0,0,0,0,0,36,64]; 1.284 + var data7_r = data7.slice().reverse(); 1.285 + var buffer7 = new Uint8Array(data7).buffer; 1.286 + view = new DataView(buffer7, 0, 8); 1.287 + assertEq(view.getFloat64(0, true), 10); 1.288 + var buffer7_pad3 = new Uint8Array(Array(3).concat(data7)).buffer; 1.289 + view = new DataView(buffer7_pad3, 0, 11); 1.290 + assertEq(view.getFloat64(3, true), 10); 1.291 + var buffer7_pad7 = new Uint8Array(Array(7).concat(data7)).buffer; 1.292 + view = new DataView(buffer7_pad7, 0, 15); 1.293 + assertEq(view.getFloat64(7, true), 10); 1.294 + var buffer7_pad10 = new Uint8Array(Array(10).concat(data7)).buffer; 1.295 + view = new DataView(buffer7_pad10, 0, 18); 1.296 + assertEq(view.getFloat64(10, true), 10); 1.297 + // Big endian. 1.298 + var buffer7_r = new Uint8Array(data7_r).buffer; 1.299 + view = new DataView(buffer7_r, 0, 8); 1.300 + assertEq(view.getFloat64(0, false), 10); 1.301 + var buffer7_r_pad3 = new Uint8Array(Array(3).concat(data7_r)).buffer; 1.302 + view = new DataView(buffer7_r_pad3, 0, 11); 1.303 + assertEq(view.getFloat64(3, false), 10); 1.304 + var buffer7_r_pad7 = new Uint8Array(Array(7).concat(data7_r)).buffer; 1.305 + view = new DataView(buffer7_r_pad7, 0, 15); 1.306 + assertEq(view.getFloat64(7, false), 10); 1.307 + var buffer7_r_pad10 = new Uint8Array(Array(10).concat(data7_r)).buffer; 1.308 + view = new DataView(buffer7_r_pad10, 0, 18); 1.309 + assertEq(view.getFloat64(10, false), 10); 1.310 + 1.311 + // testFloatGet expected=1.23 1.312 + // Little endian 1.313 + var data8 = [174,71,225,122,20,174,243,63]; 1.314 + var data8_r = data8.slice().reverse(); 1.315 + var buffer8 = new Uint8Array(data8).buffer; 1.316 + view = new DataView(buffer8, 0, 8); 1.317 + assertEq(view.getFloat64(0, true), 1.23); 1.318 + var buffer8_pad3 = new Uint8Array(Array(3).concat(data8)).buffer; 1.319 + view = new DataView(buffer8_pad3, 0, 11); 1.320 + assertEq(view.getFloat64(3, true), 1.23); 1.321 + var buffer8_pad7 = new Uint8Array(Array(7).concat(data8)).buffer; 1.322 + view = new DataView(buffer8_pad7, 0, 15); 1.323 + assertEq(view.getFloat64(7, true), 1.23); 1.324 + var buffer8_pad10 = new Uint8Array(Array(10).concat(data8)).buffer; 1.325 + view = new DataView(buffer8_pad10, 0, 18); 1.326 + assertEq(view.getFloat64(10, true), 1.23); 1.327 + // Big endian. 1.328 + var buffer8_r = new Uint8Array(data8_r).buffer; 1.329 + view = new DataView(buffer8_r, 0, 8); 1.330 + assertEq(view.getFloat64(0, false), 1.23); 1.331 + var buffer8_r_pad3 = new Uint8Array(Array(3).concat(data8_r)).buffer; 1.332 + view = new DataView(buffer8_r_pad3, 0, 11); 1.333 + assertEq(view.getFloat64(3, false), 1.23); 1.334 + var buffer8_r_pad7 = new Uint8Array(Array(7).concat(data8_r)).buffer; 1.335 + view = new DataView(buffer8_r_pad7, 0, 15); 1.336 + assertEq(view.getFloat64(7, false), 1.23); 1.337 + var buffer8_r_pad10 = new Uint8Array(Array(10).concat(data8_r)).buffer; 1.338 + view = new DataView(buffer8_r_pad10, 0, 18); 1.339 + assertEq(view.getFloat64(10, false), 1.23); 1.340 + 1.341 + // testFloatGet expected=-6213576.4839 1.342 + // Little endian 1.343 + var data9 = [181,55,248,30,242,179,87,193]; 1.344 + var data9_r = data9.slice().reverse(); 1.345 + var buffer9 = new Uint8Array(data9).buffer; 1.346 + view = new DataView(buffer9, 0, 8); 1.347 + assertEq(view.getFloat64(0, true), -6213576.4839); 1.348 + var buffer9_pad3 = new Uint8Array(Array(3).concat(data9)).buffer; 1.349 + view = new DataView(buffer9_pad3, 0, 11); 1.350 + assertEq(view.getFloat64(3, true), -6213576.4839); 1.351 + var buffer9_pad7 = new Uint8Array(Array(7).concat(data9)).buffer; 1.352 + view = new DataView(buffer9_pad7, 0, 15); 1.353 + assertEq(view.getFloat64(7, true), -6213576.4839); 1.354 + var buffer9_pad10 = new Uint8Array(Array(10).concat(data9)).buffer; 1.355 + view = new DataView(buffer9_pad10, 0, 18); 1.356 + assertEq(view.getFloat64(10, true), -6213576.4839); 1.357 + // Big endian. 1.358 + var buffer9_r = new Uint8Array(data9_r).buffer; 1.359 + view = new DataView(buffer9_r, 0, 8); 1.360 + assertEq(view.getFloat64(0, false), -6213576.4839); 1.361 + var buffer9_r_pad3 = new Uint8Array(Array(3).concat(data9_r)).buffer; 1.362 + view = new DataView(buffer9_r_pad3, 0, 11); 1.363 + assertEq(view.getFloat64(3, false), -6213576.4839); 1.364 + var buffer9_r_pad7 = new Uint8Array(Array(7).concat(data9_r)).buffer; 1.365 + view = new DataView(buffer9_r_pad7, 0, 15); 1.366 + assertEq(view.getFloat64(7, false), -6213576.4839); 1.367 + var buffer9_r_pad10 = new Uint8Array(Array(10).concat(data9_r)).buffer; 1.368 + view = new DataView(buffer9_r_pad10, 0, 18); 1.369 + assertEq(view.getFloat64(10, false), -6213576.4839); 1.370 + 1.371 + // testFloatGet expected=NaN 1.372 + // Little endian 1.373 + var data10 = [255,255,255,255,255,255,255,127]; 1.374 + var data10_r = data10.slice().reverse(); 1.375 + var buffer10 = new Uint8Array(data10).buffer; 1.376 + view = new DataView(buffer10, 0, 8); 1.377 + assertEq(view.getFloat64(0, true), NaN); 1.378 + var buffer10_pad3 = new Uint8Array(Array(3).concat(data10)).buffer; 1.379 + view = new DataView(buffer10_pad3, 0, 11); 1.380 + assertEq(view.getFloat64(3, true), NaN); 1.381 + var buffer10_pad7 = new Uint8Array(Array(7).concat(data10)).buffer; 1.382 + view = new DataView(buffer10_pad7, 0, 15); 1.383 + assertEq(view.getFloat64(7, true), NaN); 1.384 + var buffer10_pad10 = new Uint8Array(Array(10).concat(data10)).buffer; 1.385 + view = new DataView(buffer10_pad10, 0, 18); 1.386 + assertEq(view.getFloat64(10, true), NaN); 1.387 + // Big endian. 1.388 + var buffer10_r = new Uint8Array(data10_r).buffer; 1.389 + view = new DataView(buffer10_r, 0, 8); 1.390 + assertEq(view.getFloat64(0, false), NaN); 1.391 + var buffer10_r_pad3 = new Uint8Array(Array(3).concat(data10_r)).buffer; 1.392 + view = new DataView(buffer10_r_pad3, 0, 11); 1.393 + assertEq(view.getFloat64(3, false), NaN); 1.394 + var buffer10_r_pad7 = new Uint8Array(Array(7).concat(data10_r)).buffer; 1.395 + view = new DataView(buffer10_r_pad7, 0, 15); 1.396 + assertEq(view.getFloat64(7, false), NaN); 1.397 + var buffer10_r_pad10 = new Uint8Array(Array(10).concat(data10_r)).buffer; 1.398 + view = new DataView(buffer10_r_pad10, 0, 18); 1.399 + assertEq(view.getFloat64(10, false), NaN); 1.400 + 1.401 + // testFloatGet expected=NaN 1.402 + // Little endian 1.403 + var data11 = [255,255,255,255,255,255,255,255]; 1.404 + var data11_r = data11.slice().reverse(); 1.405 + var buffer11 = new Uint8Array(data11).buffer; 1.406 + view = new DataView(buffer11, 0, 8); 1.407 + assertEq(view.getFloat64(0, true), NaN); 1.408 + var buffer11_pad3 = new Uint8Array(Array(3).concat(data11)).buffer; 1.409 + view = new DataView(buffer11_pad3, 0, 11); 1.410 + assertEq(view.getFloat64(3, true), NaN); 1.411 + var buffer11_pad7 = new Uint8Array(Array(7).concat(data11)).buffer; 1.412 + view = new DataView(buffer11_pad7, 0, 15); 1.413 + assertEq(view.getFloat64(7, true), NaN); 1.414 + var buffer11_pad10 = new Uint8Array(Array(10).concat(data11)).buffer; 1.415 + view = new DataView(buffer11_pad10, 0, 18); 1.416 + assertEq(view.getFloat64(10, true), NaN); 1.417 + // Big endian. 1.418 + var buffer11_r = new Uint8Array(data11_r).buffer; 1.419 + view = new DataView(buffer11_r, 0, 8); 1.420 + assertEq(view.getFloat64(0, false), NaN); 1.421 + var buffer11_r_pad3 = new Uint8Array(Array(3).concat(data11_r)).buffer; 1.422 + view = new DataView(buffer11_r_pad3, 0, 11); 1.423 + assertEq(view.getFloat64(3, false), NaN); 1.424 + var buffer11_r_pad7 = new Uint8Array(Array(7).concat(data11_r)).buffer; 1.425 + view = new DataView(buffer11_r_pad7, 0, 15); 1.426 + assertEq(view.getFloat64(7, false), NaN); 1.427 + var buffer11_r_pad10 = new Uint8Array(Array(10).concat(data11_r)).buffer; 1.428 + view = new DataView(buffer11_r_pad10, 0, 18); 1.429 + assertEq(view.getFloat64(10, false), NaN); 1.430 + 1.431 + // testIntegerGets(start=3, length=2) 1.432 + var data12 = [31,32,33,0,1,2,3,100,101,102,103,128,129,130,131,252,253,254,255]; 1.433 + var data12_r = data12.slice().reverse(); 1.434 + var buffer12 = new Uint8Array(data12).buffer; 1.435 + view = new DataView(buffer12, 3, 2); 1.436 + assertEq(view.getInt8(0), 0); 1.437 + checkThrow(function () view.getInt8(8), RangeError); 1.438 + checkThrow(function () view.getInt8(15), RangeError); 1.439 + assertEq(view.getUint8(0), 0); 1.440 + checkThrow(function () view.getUint8(8), RangeError); 1.441 + checkThrow(function () view.getUint8(15), RangeError); 1.442 + // Little endian. 1.443 + assertEq(view.getInt16(0, true), 256); 1.444 + checkThrow(function () view.getInt16(5, true), RangeError); 1.445 + checkThrow(function () view.getInt16(9, true), RangeError); 1.446 + checkThrow(function () view.getInt16(14, true), RangeError); 1.447 + // Big endian. 1.448 + assertEq(view.getInt16(0), 1); 1.449 + checkThrow(function () view.getInt16(5), RangeError); 1.450 + checkThrow(function () view.getInt16(9), RangeError); 1.451 + checkThrow(function () view.getInt16(14), RangeError); 1.452 + // Little endian. 1.453 + assertEq(view.getUint16(0, true), 256); 1.454 + checkThrow(function () view.getUint16(5, true), RangeError); 1.455 + checkThrow(function () view.getUint16(9, true), RangeError); 1.456 + checkThrow(function () view.getUint16(14, true), RangeError); 1.457 + // Big endian. 1.458 + assertEq(view.getUint16(0), 1); 1.459 + checkThrow(function () view.getUint16(5), RangeError); 1.460 + checkThrow(function () view.getUint16(9), RangeError); 1.461 + checkThrow(function () view.getUint16(14), RangeError); 1.462 + // Little endian. 1.463 + checkThrow(function () view.getInt32(0, true), RangeError); 1.464 + checkThrow(function () view.getInt32(3, true), RangeError); 1.465 + checkThrow(function () view.getInt32(6, true), RangeError); 1.466 + checkThrow(function () view.getInt32(9, true), RangeError); 1.467 + checkThrow(function () view.getInt32(12, true), RangeError); 1.468 + // Big endian. 1.469 + checkThrow(function () view.getInt32(0), RangeError); 1.470 + checkThrow(function () view.getInt32(3), RangeError); 1.471 + checkThrow(function () view.getInt32(6), RangeError); 1.472 + checkThrow(function () view.getInt32(9), RangeError); 1.473 + checkThrow(function () view.getInt32(12), RangeError); 1.474 + // Little endian. 1.475 + checkThrow(function () view.getUint32(0, true), RangeError); 1.476 + checkThrow(function () view.getUint32(3, true), RangeError); 1.477 + checkThrow(function () view.getUint32(6, true), RangeError); 1.478 + checkThrow(function () view.getUint32(9, true), RangeError); 1.479 + checkThrow(function () view.getUint32(12, true), RangeError); 1.480 + // Big endian. 1.481 + checkThrow(function () view.getUint32(0), RangeError); 1.482 + checkThrow(function () view.getUint32(3), RangeError); 1.483 + checkThrow(function () view.getUint32(6), RangeError); 1.484 + checkThrow(function () view.getUint32(9), RangeError); 1.485 + checkThrow(function () view.getUint32(12), RangeError); 1.486 + 1.487 + // testFloatGets(start=3) 1.488 + 1.489 + // testFloatGet expected=10 1.490 + // Little endian 1.491 + view = new DataView(buffer2, 3, 1); 1.492 + checkThrow(function () view.getFloat32(0, true), RangeError); 1.493 + view = new DataView(buffer2_pad3, 3, 4); 1.494 + checkThrow(function () view.getFloat32(3, true), RangeError); 1.495 + view = new DataView(buffer2_pad7, 3, 8); 1.496 + checkThrow(function () view.getFloat32(7, true), RangeError); 1.497 + view = new DataView(buffer2_pad10, 3, 11); 1.498 + checkThrow(function () view.getFloat32(10, true), RangeError); 1.499 + // Big endian. 1.500 + view = new DataView(buffer2_r, 3, 1); 1.501 + checkThrow(function () view.getFloat32(0, false), RangeError); 1.502 + view = new DataView(buffer2_r_pad3, 3, 4); 1.503 + checkThrow(function () view.getFloat32(3, false), RangeError); 1.504 + view = new DataView(buffer2_r_pad7, 3, 8); 1.505 + checkThrow(function () view.getFloat32(7, false), RangeError); 1.506 + view = new DataView(buffer2_r_pad10, 3, 11); 1.507 + checkThrow(function () view.getFloat32(10, false), RangeError); 1.508 + 1.509 + // testFloatGet expected=1.2300000190734863 1.510 + // Little endian 1.511 + view = new DataView(buffer3, 3, 1); 1.512 + checkThrow(function () view.getFloat32(0, true), RangeError); 1.513 + view = new DataView(buffer3_pad3, 3, 4); 1.514 + checkThrow(function () view.getFloat32(3, true), RangeError); 1.515 + view = new DataView(buffer3_pad7, 3, 8); 1.516 + checkThrow(function () view.getFloat32(7, true), RangeError); 1.517 + view = new DataView(buffer3_pad10, 3, 11); 1.518 + checkThrow(function () view.getFloat32(10, true), RangeError); 1.519 + // Big endian. 1.520 + view = new DataView(buffer3_r, 3, 1); 1.521 + checkThrow(function () view.getFloat32(0, false), RangeError); 1.522 + view = new DataView(buffer3_r_pad3, 3, 4); 1.523 + checkThrow(function () view.getFloat32(3, false), RangeError); 1.524 + view = new DataView(buffer3_r_pad7, 3, 8); 1.525 + checkThrow(function () view.getFloat32(7, false), RangeError); 1.526 + view = new DataView(buffer3_r_pad10, 3, 11); 1.527 + checkThrow(function () view.getFloat32(10, false), RangeError); 1.528 + 1.529 + // testFloatGet expected=-45621.37109375 1.530 + // Little endian 1.531 + view = new DataView(buffer4, 3, 1); 1.532 + checkThrow(function () view.getFloat32(0, true), RangeError); 1.533 + view = new DataView(buffer4_pad3, 3, 4); 1.534 + checkThrow(function () view.getFloat32(3, true), RangeError); 1.535 + view = new DataView(buffer4_pad7, 3, 8); 1.536 + checkThrow(function () view.getFloat32(7, true), RangeError); 1.537 + view = new DataView(buffer4_pad10, 3, 11); 1.538 + checkThrow(function () view.getFloat32(10, true), RangeError); 1.539 + // Big endian. 1.540 + view = new DataView(buffer4_r, 3, 1); 1.541 + checkThrow(function () view.getFloat32(0, false), RangeError); 1.542 + view = new DataView(buffer4_r_pad3, 3, 4); 1.543 + checkThrow(function () view.getFloat32(3, false), RangeError); 1.544 + view = new DataView(buffer4_r_pad7, 3, 8); 1.545 + checkThrow(function () view.getFloat32(7, false), RangeError); 1.546 + view = new DataView(buffer4_r_pad10, 3, 11); 1.547 + checkThrow(function () view.getFloat32(10, false), RangeError); 1.548 + 1.549 + // testFloatGet expected=NaN 1.550 + // Little endian 1.551 + view = new DataView(buffer5, 3, 1); 1.552 + checkThrow(function () view.getFloat32(0, true), RangeError); 1.553 + view = new DataView(buffer5_pad3, 3, 4); 1.554 + checkThrow(function () view.getFloat32(3, true), RangeError); 1.555 + view = new DataView(buffer5_pad7, 3, 8); 1.556 + checkThrow(function () view.getFloat32(7, true), RangeError); 1.557 + view = new DataView(buffer5_pad10, 3, 11); 1.558 + checkThrow(function () view.getFloat32(10, true), RangeError); 1.559 + // Big endian. 1.560 + view = new DataView(buffer5_r, 3, 1); 1.561 + checkThrow(function () view.getFloat32(0, false), RangeError); 1.562 + view = new DataView(buffer5_r_pad3, 3, 4); 1.563 + checkThrow(function () view.getFloat32(3, false), RangeError); 1.564 + view = new DataView(buffer5_r_pad7, 3, 8); 1.565 + checkThrow(function () view.getFloat32(7, false), RangeError); 1.566 + view = new DataView(buffer5_r_pad10, 3, 11); 1.567 + checkThrow(function () view.getFloat32(10, false), RangeError); 1.568 + 1.569 + // testFloatGet expected=NaN 1.570 + // Little endian 1.571 + view = new DataView(buffer6, 3, 1); 1.572 + checkThrow(function () view.getFloat32(0, true), RangeError); 1.573 + view = new DataView(buffer6_pad3, 3, 4); 1.574 + checkThrow(function () view.getFloat32(3, true), RangeError); 1.575 + view = new DataView(buffer6_pad7, 3, 8); 1.576 + checkThrow(function () view.getFloat32(7, true), RangeError); 1.577 + view = new DataView(buffer6_pad10, 3, 11); 1.578 + checkThrow(function () view.getFloat32(10, true), RangeError); 1.579 + // Big endian. 1.580 + view = new DataView(buffer6_r, 3, 1); 1.581 + checkThrow(function () view.getFloat32(0, false), RangeError); 1.582 + view = new DataView(buffer6_r_pad3, 3, 4); 1.583 + checkThrow(function () view.getFloat32(3, false), RangeError); 1.584 + view = new DataView(buffer6_r_pad7, 3, 8); 1.585 + checkThrow(function () view.getFloat32(7, false), RangeError); 1.586 + view = new DataView(buffer6_r_pad10, 3, 11); 1.587 + checkThrow(function () view.getFloat32(10, false), RangeError); 1.588 + 1.589 + // testFloatGet expected=10 1.590 + // Little endian 1.591 + view = new DataView(buffer7, 3, 5); 1.592 + checkThrow(function () view.getFloat64(0, true), RangeError); 1.593 + view = new DataView(buffer7_pad3, 3, 8); 1.594 + checkThrow(function () view.getFloat64(3, true), RangeError); 1.595 + view = new DataView(buffer7_pad7, 3, 12); 1.596 + checkThrow(function () view.getFloat64(7, true), RangeError); 1.597 + view = new DataView(buffer7_pad10, 3, 15); 1.598 + checkThrow(function () view.getFloat64(10, true), RangeError); 1.599 + // Big endian. 1.600 + view = new DataView(buffer7_r, 3, 5); 1.601 + checkThrow(function () view.getFloat64(0, false), RangeError); 1.602 + view = new DataView(buffer7_r_pad3, 3, 8); 1.603 + checkThrow(function () view.getFloat64(3, false), RangeError); 1.604 + view = new DataView(buffer7_r_pad7, 3, 12); 1.605 + checkThrow(function () view.getFloat64(7, false), RangeError); 1.606 + view = new DataView(buffer7_r_pad10, 3, 15); 1.607 + checkThrow(function () view.getFloat64(10, false), RangeError); 1.608 + 1.609 + // testFloatGet expected=1.23 1.610 + // Little endian 1.611 + view = new DataView(buffer8, 3, 5); 1.612 + checkThrow(function () view.getFloat64(0, true), RangeError); 1.613 + view = new DataView(buffer8_pad3, 3, 8); 1.614 + checkThrow(function () view.getFloat64(3, true), RangeError); 1.615 + view = new DataView(buffer8_pad7, 3, 12); 1.616 + checkThrow(function () view.getFloat64(7, true), RangeError); 1.617 + view = new DataView(buffer8_pad10, 3, 15); 1.618 + checkThrow(function () view.getFloat64(10, true), RangeError); 1.619 + // Big endian. 1.620 + view = new DataView(buffer8_r, 3, 5); 1.621 + checkThrow(function () view.getFloat64(0, false), RangeError); 1.622 + view = new DataView(buffer8_r_pad3, 3, 8); 1.623 + checkThrow(function () view.getFloat64(3, false), RangeError); 1.624 + view = new DataView(buffer8_r_pad7, 3, 12); 1.625 + checkThrow(function () view.getFloat64(7, false), RangeError); 1.626 + view = new DataView(buffer8_r_pad10, 3, 15); 1.627 + checkThrow(function () view.getFloat64(10, false), RangeError); 1.628 + 1.629 + // testFloatGet expected=-6213576.4839 1.630 + // Little endian 1.631 + view = new DataView(buffer9, 3, 5); 1.632 + checkThrow(function () view.getFloat64(0, true), RangeError); 1.633 + view = new DataView(buffer9_pad3, 3, 8); 1.634 + checkThrow(function () view.getFloat64(3, true), RangeError); 1.635 + view = new DataView(buffer9_pad7, 3, 12); 1.636 + checkThrow(function () view.getFloat64(7, true), RangeError); 1.637 + view = new DataView(buffer9_pad10, 3, 15); 1.638 + checkThrow(function () view.getFloat64(10, true), RangeError); 1.639 + // Big endian. 1.640 + view = new DataView(buffer9_r, 3, 5); 1.641 + checkThrow(function () view.getFloat64(0, false), RangeError); 1.642 + view = new DataView(buffer9_r_pad3, 3, 8); 1.643 + checkThrow(function () view.getFloat64(3, false), RangeError); 1.644 + view = new DataView(buffer9_r_pad7, 3, 12); 1.645 + checkThrow(function () view.getFloat64(7, false), RangeError); 1.646 + view = new DataView(buffer9_r_pad10, 3, 15); 1.647 + checkThrow(function () view.getFloat64(10, false), RangeError); 1.648 + 1.649 + // testFloatGet expected=NaN 1.650 + // Little endian 1.651 + view = new DataView(buffer10, 3, 5); 1.652 + checkThrow(function () view.getFloat64(0, true), RangeError); 1.653 + view = new DataView(buffer10_pad3, 3, 8); 1.654 + checkThrow(function () view.getFloat64(3, true), RangeError); 1.655 + view = new DataView(buffer10_pad7, 3, 12); 1.656 + checkThrow(function () view.getFloat64(7, true), RangeError); 1.657 + view = new DataView(buffer10_pad10, 3, 15); 1.658 + checkThrow(function () view.getFloat64(10, true), RangeError); 1.659 + // Big endian. 1.660 + view = new DataView(buffer10_r, 3, 5); 1.661 + checkThrow(function () view.getFloat64(0, false), RangeError); 1.662 + view = new DataView(buffer10_r_pad3, 3, 8); 1.663 + checkThrow(function () view.getFloat64(3, false), RangeError); 1.664 + view = new DataView(buffer10_r_pad7, 3, 12); 1.665 + checkThrow(function () view.getFloat64(7, false), RangeError); 1.666 + view = new DataView(buffer10_r_pad10, 3, 15); 1.667 + checkThrow(function () view.getFloat64(10, false), RangeError); 1.668 + 1.669 + // testFloatGet expected=NaN 1.670 + // Little endian 1.671 + view = new DataView(buffer11, 3, 5); 1.672 + checkThrow(function () view.getFloat64(0, true), RangeError); 1.673 + view = new DataView(buffer11_pad3, 3, 8); 1.674 + checkThrow(function () view.getFloat64(3, true), RangeError); 1.675 + view = new DataView(buffer11_pad7, 3, 12); 1.676 + checkThrow(function () view.getFloat64(7, true), RangeError); 1.677 + view = new DataView(buffer11_pad10, 3, 15); 1.678 + checkThrow(function () view.getFloat64(10, true), RangeError); 1.679 + // Big endian. 1.680 + view = new DataView(buffer11_r, 3, 5); 1.681 + checkThrow(function () view.getFloat64(0, false), RangeError); 1.682 + view = new DataView(buffer11_r_pad3, 3, 8); 1.683 + checkThrow(function () view.getFloat64(3, false), RangeError); 1.684 + view = new DataView(buffer11_r_pad7, 3, 12); 1.685 + checkThrow(function () view.getFloat64(7, false), RangeError); 1.686 + view = new DataView(buffer11_r_pad10, 3, 15); 1.687 + checkThrow(function () view.getFloat64(10, false), RangeError); 1.688 + 1.689 + // testGetNegativeIndexes 1.690 + view = new DataView(buffer1, 0, 16); 1.691 + checkThrow(function () view.getInt8(-1), RangeError); 1.692 + checkThrow(function () view.getInt8(-2), RangeError); 1.693 + checkThrow(function () view.getUint8(-1), RangeError); 1.694 + checkThrow(function () view.getUint8(-2), RangeError); 1.695 + checkThrow(function () view.getInt16(-1), RangeError); 1.696 + checkThrow(function () view.getInt16(-2), RangeError); 1.697 + checkThrow(function () view.getInt16(-3), RangeError); 1.698 + checkThrow(function () view.getUint16(-1), RangeError); 1.699 + checkThrow(function () view.getUint16(-2), RangeError); 1.700 + checkThrow(function () view.getUint16(-3), RangeError); 1.701 + checkThrow(function () view.getInt32(-1), RangeError); 1.702 + checkThrow(function () view.getInt32(-3), RangeError); 1.703 + checkThrow(function () view.getInt32(-5), RangeError); 1.704 + checkThrow(function () view.getUint32(-1), RangeError); 1.705 + checkThrow(function () view.getUint32(-3), RangeError); 1.706 + checkThrow(function () view.getUint32(-5), RangeError); 1.707 + view = new DataView(buffer7, 0, 8); 1.708 + checkThrow(function () view.getFloat32(-1), RangeError); 1.709 + checkThrow(function () view.getFloat32(-3), RangeError); 1.710 + checkThrow(function () view.getFloat32(-5), RangeError); 1.711 + checkThrow(function () view.getFloat64(-1), RangeError); 1.712 + checkThrow(function () view.getFloat64(-5), RangeError); 1.713 + checkThrow(function () view.getFloat64(-9), RangeError); 1.714 + 1.715 + // Too large for signed 32 bit integer index 1.716 + checkThrow(function () view.getInt8(2147483648), RangeError); 1.717 + checkThrow(function () view.getInt8(2147483649), RangeError); 1.718 + checkThrow(function () view.getUint8(2147483648), RangeError); 1.719 + checkThrow(function () view.getUint8(2147483649), RangeError); 1.720 + checkThrow(function () view.getInt16(2147483648), RangeError); 1.721 + checkThrow(function () view.getInt16(2147483649), RangeError); 1.722 + checkThrow(function () view.getUint16(2147483648), RangeError); 1.723 + checkThrow(function () view.getUint16(2147483649), RangeError); 1.724 + checkThrow(function () view.getInt32(2147483648), RangeError); 1.725 + checkThrow(function () view.getInt32(2147483649), RangeError); 1.726 + checkThrow(function () view.getUint32(2147483648), RangeError); 1.727 + checkThrow(function () view.getUint32(2147483649), RangeError); 1.728 + checkThrow(function () view.getFloat32(2147483648), RangeError); 1.729 + checkThrow(function () view.getFloat32(2147483649), RangeError); 1.730 + checkThrow(function () view.getFloat64(2147483648), RangeError); 1.731 + checkThrow(function () view.getFloat64(2147483649), RangeError); 1.732 + 1.733 + // Test for wrong arguments passed to get methods 1.734 + // 1.735 + // See http://www.w3.org/TR/WebIDL/#es-operations and the step saying "If entry is null, throw a TypeError." 1.736 + checkThrow(function () view.getInt8(), TypeError); 1.737 + checkThrow(function () view.getUint8(), TypeError); 1.738 + checkThrow(function () view.getInt16(), TypeError); 1.739 + checkThrow(function () view.getUint16(), TypeError); 1.740 + checkThrow(function () view.getInt32(), TypeError); 1.741 + checkThrow(function () view.getUint32(), TypeError); 1.742 + checkThrow(function () view.getFloat32(), TypeError); 1.743 + checkThrow(function () view.getFloat64(), TypeError); 1.744 + 1.745 + // Test for wrong type of |this| 1.746 + checkThrow(function () view.getInt8.apply("dead", [0]), TypeError); 1.747 + checkThrow(function () view.getUint8.apply("puppies", [0]), TypeError); 1.748 + checkThrow(function () view.getInt16.apply("aren", [0]), TypeError); 1.749 + checkThrow(function () view.getUint16.apply("t", [0]), TypeError); 1.750 + checkThrow(function () view.getInt32.apply("much", [0]), TypeError); 1.751 + checkThrow(function () view.getUint32.apply("fun", [0]), TypeError); 1.752 + checkThrow(function () view.getFloat32.apply("(in", [0]), TypeError); 1.753 + checkThrow(function () view.getFloat64.apply("bed)", [0]), TypeError); 1.754 + checkThrow(function () view.setInt8.apply("dead", [0, 0]), TypeError); 1.755 + checkThrow(function () view.setUint8.apply("puppies", [0, 0]), TypeError); 1.756 + checkThrow(function () view.setInt16.apply("aren", [0, 0]), TypeError); 1.757 + checkThrow(function () view.setUint16.apply("t", [0, 0]), TypeError); 1.758 + checkThrow(function () view.setInt32.apply("much", [0, 0]), TypeError); 1.759 + checkThrow(function () view.setUint32.apply("fun", [0, 0]), TypeError); 1.760 + checkThrow(function () view.setFloat32.apply("(in", [0, 0]), TypeError); 1.761 + checkThrow(function () view.setFloat64.apply("bed)", [0, 0]), TypeError); 1.762 + 1.763 + // testSetMethods 1.764 + 1.765 + // Test for set methods that work 1.766 + 1.767 + // testIntegerSets(start=0, length=16) 1.768 + var data13 = [204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204]; 1.769 + var data13_r = data13.slice().reverse(); 1.770 + var buffer13 = new Uint8Array(data13).buffer; 1.771 + view = new DataView(buffer13, 0, 16); 1.772 + view.setInt8(0, 0); 1.773 + assertEq(view.getInt8(0), 0); 1.774 + view.setInt8(8, -128); 1.775 + assertEq(view.getInt8(8), -128); 1.776 + view.setInt8(15, -1); 1.777 + assertEq(view.getInt8(15), -1); 1.778 + view.setUint8(0, 0); 1.779 + assertEq(view.getUint8(0), 0); 1.780 + view.setUint8(8, 128); 1.781 + assertEq(view.getUint8(8), 128); 1.782 + view.setUint8(15, 255); 1.783 + assertEq(view.getUint8(15), 255); 1.784 + view.setInt16(0, 256, true); 1.785 + assertEq(view.getInt16(0, true), 256); 1.786 + view.setInt16(5, 26213, true); 1.787 + assertEq(view.getInt16(5, true), 26213); 1.788 + view.setInt16(9, -32127, true); 1.789 + assertEq(view.getInt16(9, true), -32127); 1.790 + view.setInt16(14, -2, true); 1.791 + assertEq(view.getInt16(14, true), -2); 1.792 + view.setInt16(0, 1); 1.793 + assertEq(view.getInt16(0), 1); 1.794 + view.setInt16(5, 25958); 1.795 + assertEq(view.getInt16(5), 25958); 1.796 + view.setInt16(9, -32382); 1.797 + assertEq(view.getInt16(9), -32382); 1.798 + view.setInt16(14, -257); 1.799 + assertEq(view.getInt16(14), -257); 1.800 + view.setUint16(0, 256, true); 1.801 + assertEq(view.getUint16(0, true), 256); 1.802 + view.setUint16(5, 26213, true); 1.803 + assertEq(view.getUint16(5, true), 26213); 1.804 + view.setUint16(9, 33409, true); 1.805 + assertEq(view.getUint16(9, true), 33409); 1.806 + view.setUint16(14, 65534, true); 1.807 + assertEq(view.getUint16(14, true), 65534); 1.808 + view.setUint16(0, 1); 1.809 + assertEq(view.getUint16(0), 1); 1.810 + view.setUint16(5, 25958); 1.811 + assertEq(view.getUint16(5), 25958); 1.812 + view.setUint16(9, 33154); 1.813 + assertEq(view.getUint16(9), 33154); 1.814 + view.setUint16(14, 65279); 1.815 + assertEq(view.getUint16(14), 65279); 1.816 + view.setInt32(0, 50462976, true); 1.817 + assertEq(view.getInt32(0, true), 50462976); 1.818 + view.setInt32(3, 1717920771, true); 1.819 + assertEq(view.getInt32(3, true), 1717920771); 1.820 + view.setInt32(6, -2122291354, true); 1.821 + assertEq(view.getInt32(6, true), -2122291354); 1.822 + view.setInt32(9, -58490239, true); 1.823 + assertEq(view.getInt32(9, true), -58490239); 1.824 + view.setInt32(12, -66052, true); 1.825 + assertEq(view.getInt32(12, true), -66052); 1.826 + view.setInt32(0, 66051); 1.827 + assertEq(view.getInt32(0), 66051); 1.828 + view.setInt32(3, 56911206); 1.829 + assertEq(view.getInt32(3), 56911206); 1.830 + view.setInt32(6, 1718059137); 1.831 + assertEq(view.getInt32(6), 1718059137); 1.832 + view.setInt32(9, -2122152964); 1.833 + assertEq(view.getInt32(9), -2122152964); 1.834 + view.setInt32(12, -50462977); 1.835 + assertEq(view.getInt32(12), -50462977); 1.836 + view.setUint32(0, 50462976, true); 1.837 + assertEq(view.getUint32(0, true), 50462976); 1.838 + view.setUint32(3, 1717920771, true); 1.839 + assertEq(view.getUint32(3, true), 1717920771); 1.840 + view.setUint32(6, 2172675942, true); 1.841 + assertEq(view.getUint32(6, true), 2172675942); 1.842 + view.setUint32(9, 4236477057, true); 1.843 + assertEq(view.getUint32(9, true), 4236477057); 1.844 + view.setUint32(12, 4294901244, true); 1.845 + assertEq(view.getUint32(12, true), 4294901244); 1.846 + view.setUint32(0, 66051); 1.847 + assertEq(view.getUint32(0), 66051); 1.848 + view.setUint32(3, 56911206); 1.849 + assertEq(view.getUint32(3), 56911206); 1.850 + view.setUint32(6, 1718059137); 1.851 + assertEq(view.getUint32(6), 1718059137); 1.852 + view.setUint32(9, 2172814332); 1.853 + assertEq(view.getUint32(9), 2172814332); 1.854 + view.setUint32(12, 4244504319); 1.855 + assertEq(view.getUint32(12), 4244504319); 1.856 + 1.857 + // testFloatSets(start=undefined) 1.858 + 1.859 + // testFloatSet expected=10 1.860 + // Little endian 1.861 + view = new DataView(buffer13, 0, 16); 1.862 + view.setFloat32(0, 10, true); 1.863 + assertEq(view.getFloat32(0, true), 10); 1.864 + var buffer13_pad3 = new Uint8Array(Array(3).concat(data13)).buffer; 1.865 + view = new DataView(buffer13_pad3, 0, 19); 1.866 + view.setFloat32(3, 10, true); 1.867 + assertEq(view.getFloat32(3, true), 10); 1.868 + var buffer13_pad7 = new Uint8Array(Array(7).concat(data13)).buffer; 1.869 + view = new DataView(buffer13_pad7, 0, 23); 1.870 + view.setFloat32(7, 10, true); 1.871 + assertEq(view.getFloat32(7, true), 10); 1.872 + var buffer13_pad10 = new Uint8Array(Array(10).concat(data13)).buffer; 1.873 + view = new DataView(buffer13_pad10, 0, 26); 1.874 + view.setFloat32(10, 10, true); 1.875 + assertEq(view.getFloat32(10, true), 10); 1.876 + // Big endian. 1.877 + var buffer13_r = new Uint8Array(data13_r).buffer; 1.878 + view = new DataView(buffer13_r, 0, 16); 1.879 + view.setFloat32(0, 10, false); 1.880 + assertEq(view.getFloat32(0, false), 10); 1.881 + var buffer13_r_pad3 = new Uint8Array(Array(3).concat(data13_r)).buffer; 1.882 + view = new DataView(buffer13_r_pad3, 0, 19); 1.883 + view.setFloat32(3, 10, false); 1.884 + assertEq(view.getFloat32(3, false), 10); 1.885 + var buffer13_r_pad7 = new Uint8Array(Array(7).concat(data13_r)).buffer; 1.886 + view = new DataView(buffer13_r_pad7, 0, 23); 1.887 + view.setFloat32(7, 10, false); 1.888 + assertEq(view.getFloat32(7, false), 10); 1.889 + var buffer13_r_pad10 = new Uint8Array(Array(10).concat(data13_r)).buffer; 1.890 + view = new DataView(buffer13_r_pad10, 0, 26); 1.891 + view.setFloat32(10, 10, false); 1.892 + assertEq(view.getFloat32(10, false), 10); 1.893 + 1.894 + // testFloatSet expected=1.2300000190734863 1.895 + // Little endian 1.896 + view = new DataView(buffer13, 0, 16); 1.897 + view.setFloat32(0, 1.2300000190734863, true); 1.898 + assertEq(view.getFloat32(0, true), 1.2300000190734863); 1.899 + view = new DataView(buffer13_pad3, 0, 19); 1.900 + view.setFloat32(3, 1.2300000190734863, true); 1.901 + assertEq(view.getFloat32(3, true), 1.2300000190734863); 1.902 + view = new DataView(buffer13_pad7, 0, 23); 1.903 + view.setFloat32(7, 1.2300000190734863, true); 1.904 + assertEq(view.getFloat32(7, true), 1.2300000190734863); 1.905 + view = new DataView(buffer13_pad10, 0, 26); 1.906 + view.setFloat32(10, 1.2300000190734863, true); 1.907 + assertEq(view.getFloat32(10, true), 1.2300000190734863); 1.908 + // Big endian. 1.909 + view = new DataView(buffer13_r, 0, 16); 1.910 + view.setFloat32(0, 1.2300000190734863, false); 1.911 + assertEq(view.getFloat32(0, false), 1.2300000190734863); 1.912 + view = new DataView(buffer13_r_pad3, 0, 19); 1.913 + view.setFloat32(3, 1.2300000190734863, false); 1.914 + assertEq(view.getFloat32(3, false), 1.2300000190734863); 1.915 + view = new DataView(buffer13_r_pad7, 0, 23); 1.916 + view.setFloat32(7, 1.2300000190734863, false); 1.917 + assertEq(view.getFloat32(7, false), 1.2300000190734863); 1.918 + view = new DataView(buffer13_r_pad10, 0, 26); 1.919 + view.setFloat32(10, 1.2300000190734863, false); 1.920 + assertEq(view.getFloat32(10, false), 1.2300000190734863); 1.921 + 1.922 + // testFloatSet expected=-45621.37109375 1.923 + // Little endian 1.924 + view = new DataView(buffer13, 0, 16); 1.925 + view.setFloat32(0, -45621.37109375, true); 1.926 + assertEq(view.getFloat32(0, true), -45621.37109375); 1.927 + view = new DataView(buffer13_pad3, 0, 19); 1.928 + view.setFloat32(3, -45621.37109375, true); 1.929 + assertEq(view.getFloat32(3, true), -45621.37109375); 1.930 + view = new DataView(buffer13_pad7, 0, 23); 1.931 + view.setFloat32(7, -45621.37109375, true); 1.932 + assertEq(view.getFloat32(7, true), -45621.37109375); 1.933 + view = new DataView(buffer13_pad10, 0, 26); 1.934 + view.setFloat32(10, -45621.37109375, true); 1.935 + assertEq(view.getFloat32(10, true), -45621.37109375); 1.936 + // Big endian. 1.937 + view = new DataView(buffer13_r, 0, 16); 1.938 + view.setFloat32(0, -45621.37109375, false); 1.939 + assertEq(view.getFloat32(0, false), -45621.37109375); 1.940 + view = new DataView(buffer13_r_pad3, 0, 19); 1.941 + view.setFloat32(3, -45621.37109375, false); 1.942 + assertEq(view.getFloat32(3, false), -45621.37109375); 1.943 + view = new DataView(buffer13_r_pad7, 0, 23); 1.944 + view.setFloat32(7, -45621.37109375, false); 1.945 + assertEq(view.getFloat32(7, false), -45621.37109375); 1.946 + view = new DataView(buffer13_r_pad10, 0, 26); 1.947 + view.setFloat32(10, -45621.37109375, false); 1.948 + assertEq(view.getFloat32(10, false), -45621.37109375); 1.949 + 1.950 + // testFloatSet expected=NaN 1.951 + // Little endian 1.952 + view = new DataView(buffer13, 0, 16); 1.953 + view.setFloat32(0, NaN, true); 1.954 + assertEq(view.getFloat32(0, true), NaN); 1.955 + view = new DataView(buffer13_pad3, 0, 19); 1.956 + view.setFloat32(3, NaN, true); 1.957 + assertEq(view.getFloat32(3, true), NaN); 1.958 + view = new DataView(buffer13_pad7, 0, 23); 1.959 + view.setFloat32(7, NaN, true); 1.960 + assertEq(view.getFloat32(7, true), NaN); 1.961 + view = new DataView(buffer13_pad10, 0, 26); 1.962 + view.setFloat32(10, NaN, true); 1.963 + assertEq(view.getFloat32(10, true), NaN); 1.964 + // Big endian. 1.965 + view = new DataView(buffer13_r, 0, 16); 1.966 + view.setFloat32(0, NaN, false); 1.967 + assertEq(view.getFloat32(0, false), NaN); 1.968 + view = new DataView(buffer13_r_pad3, 0, 19); 1.969 + view.setFloat32(3, NaN, false); 1.970 + assertEq(view.getFloat32(3, false), NaN); 1.971 + view = new DataView(buffer13_r_pad7, 0, 23); 1.972 + view.setFloat32(7, NaN, false); 1.973 + assertEq(view.getFloat32(7, false), NaN); 1.974 + view = new DataView(buffer13_r_pad10, 0, 26); 1.975 + view.setFloat32(10, NaN, false); 1.976 + assertEq(view.getFloat32(10, false), NaN); 1.977 + 1.978 + // testFloatSet expected=-NaN 1.979 + // Little endian 1.980 + view = new DataView(buffer13, 0, 16); 1.981 + view.setFloat32(0, -NaN, true); 1.982 + assertEq(view.getFloat32(0, true), -NaN); 1.983 + view = new DataView(buffer13_pad3, 0, 19); 1.984 + view.setFloat32(3, -NaN, true); 1.985 + assertEq(view.getFloat32(3, true), -NaN); 1.986 + view = new DataView(buffer13_pad7, 0, 23); 1.987 + view.setFloat32(7, -NaN, true); 1.988 + assertEq(view.getFloat32(7, true), -NaN); 1.989 + view = new DataView(buffer13_pad10, 0, 26); 1.990 + view.setFloat32(10, -NaN, true); 1.991 + assertEq(view.getFloat32(10, true), -NaN); 1.992 + // Big endian. 1.993 + view = new DataView(buffer13_r, 0, 16); 1.994 + view.setFloat32(0, -NaN, false); 1.995 + assertEq(view.getFloat32(0, false), -NaN); 1.996 + view = new DataView(buffer13_r_pad3, 0, 19); 1.997 + view.setFloat32(3, -NaN, false); 1.998 + assertEq(view.getFloat32(3, false), -NaN); 1.999 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1000 + view.setFloat32(7, -NaN, false); 1.1001 + assertEq(view.getFloat32(7, false), -NaN); 1.1002 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1003 + view.setFloat32(10, -NaN, false); 1.1004 + assertEq(view.getFloat32(10, false), -NaN); 1.1005 + 1.1006 + // testFloatSet expected=10 1.1007 + // Little endian 1.1008 + view = new DataView(buffer13, 0, 16); 1.1009 + view.setFloat64(0, 10, true); 1.1010 + assertEq(view.getFloat64(0, true), 10); 1.1011 + view = new DataView(buffer13_pad3, 0, 19); 1.1012 + view.setFloat64(3, 10, true); 1.1013 + assertEq(view.getFloat64(3, true), 10); 1.1014 + view = new DataView(buffer13_pad7, 0, 23); 1.1015 + view.setFloat64(7, 10, true); 1.1016 + assertEq(view.getFloat64(7, true), 10); 1.1017 + view = new DataView(buffer13_pad10, 0, 26); 1.1018 + view.setFloat64(10, 10, true); 1.1019 + assertEq(view.getFloat64(10, true), 10); 1.1020 + // Big endian. 1.1021 + view = new DataView(buffer13_r, 0, 16); 1.1022 + view.setFloat64(0, 10, false); 1.1023 + assertEq(view.getFloat64(0, false), 10); 1.1024 + view = new DataView(buffer13_r_pad3, 0, 19); 1.1025 + view.setFloat64(3, 10, false); 1.1026 + assertEq(view.getFloat64(3, false), 10); 1.1027 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1028 + view.setFloat64(7, 10, false); 1.1029 + assertEq(view.getFloat64(7, false), 10); 1.1030 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1031 + view.setFloat64(10, 10, false); 1.1032 + assertEq(view.getFloat64(10, false), 10); 1.1033 + 1.1034 + // testFloatSet expected=1.23 1.1035 + // Little endian 1.1036 + view = new DataView(buffer13, 0, 16); 1.1037 + view.setFloat64(0, 1.23, true); 1.1038 + assertEq(view.getFloat64(0, true), 1.23); 1.1039 + view = new DataView(buffer13_pad3, 0, 19); 1.1040 + view.setFloat64(3, 1.23, true); 1.1041 + assertEq(view.getFloat64(3, true), 1.23); 1.1042 + view = new DataView(buffer13_pad7, 0, 23); 1.1043 + view.setFloat64(7, 1.23, true); 1.1044 + assertEq(view.getFloat64(7, true), 1.23); 1.1045 + view = new DataView(buffer13_pad10, 0, 26); 1.1046 + view.setFloat64(10, 1.23, true); 1.1047 + assertEq(view.getFloat64(10, true), 1.23); 1.1048 + // Big endian. 1.1049 + view = new DataView(buffer13_r, 0, 16); 1.1050 + view.setFloat64(0, 1.23, false); 1.1051 + assertEq(view.getFloat64(0, false), 1.23); 1.1052 + view = new DataView(buffer13_r_pad3, 0, 19); 1.1053 + view.setFloat64(3, 1.23, false); 1.1054 + assertEq(view.getFloat64(3, false), 1.23); 1.1055 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1056 + view.setFloat64(7, 1.23, false); 1.1057 + assertEq(view.getFloat64(7, false), 1.23); 1.1058 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1059 + view.setFloat64(10, 1.23, false); 1.1060 + assertEq(view.getFloat64(10, false), 1.23); 1.1061 + 1.1062 + // testFloatSet expected=-6213576.4839 1.1063 + // Little endian 1.1064 + view = new DataView(buffer13, 0, 16); 1.1065 + view.setFloat64(0, -6213576.4839, true); 1.1066 + assertEq(view.getFloat64(0, true), -6213576.4839); 1.1067 + view = new DataView(buffer13_pad3, 0, 19); 1.1068 + view.setFloat64(3, -6213576.4839, true); 1.1069 + assertEq(view.getFloat64(3, true), -6213576.4839); 1.1070 + view = new DataView(buffer13_pad7, 0, 23); 1.1071 + view.setFloat64(7, -6213576.4839, true); 1.1072 + assertEq(view.getFloat64(7, true), -6213576.4839); 1.1073 + view = new DataView(buffer13_pad10, 0, 26); 1.1074 + view.setFloat64(10, -6213576.4839, true); 1.1075 + assertEq(view.getFloat64(10, true), -6213576.4839); 1.1076 + // Big endian. 1.1077 + view = new DataView(buffer13_r, 0, 16); 1.1078 + view.setFloat64(0, -6213576.4839, false); 1.1079 + assertEq(view.getFloat64(0, false), -6213576.4839); 1.1080 + view = new DataView(buffer13_r_pad3, 0, 19); 1.1081 + view.setFloat64(3, -6213576.4839, false); 1.1082 + assertEq(view.getFloat64(3, false), -6213576.4839); 1.1083 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1084 + view.setFloat64(7, -6213576.4839, false); 1.1085 + assertEq(view.getFloat64(7, false), -6213576.4839); 1.1086 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1087 + view.setFloat64(10, -6213576.4839, false); 1.1088 + assertEq(view.getFloat64(10, false), -6213576.4839); 1.1089 + 1.1090 + // testFloatSet expected=NaN 1.1091 + // Little endian 1.1092 + view = new DataView(buffer13, 0, 16); 1.1093 + view.setFloat64(0, NaN, true); 1.1094 + assertEq(view.getFloat64(0, true), NaN); 1.1095 + view = new DataView(buffer13_pad3, 0, 19); 1.1096 + view.setFloat64(3, NaN, true); 1.1097 + assertEq(view.getFloat64(3, true), NaN); 1.1098 + view = new DataView(buffer13_pad7, 0, 23); 1.1099 + view.setFloat64(7, NaN, true); 1.1100 + assertEq(view.getFloat64(7, true), NaN); 1.1101 + view = new DataView(buffer13_pad10, 0, 26); 1.1102 + view.setFloat64(10, NaN, true); 1.1103 + assertEq(view.getFloat64(10, true), NaN); 1.1104 + // Big endian. 1.1105 + view = new DataView(buffer13_r, 0, 16); 1.1106 + view.setFloat64(0, NaN, false); 1.1107 + assertEq(view.getFloat64(0, false), NaN); 1.1108 + view = new DataView(buffer13_r_pad3, 0, 19); 1.1109 + view.setFloat64(3, NaN, false); 1.1110 + assertEq(view.getFloat64(3, false), NaN); 1.1111 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1112 + view.setFloat64(7, NaN, false); 1.1113 + assertEq(view.getFloat64(7, false), NaN); 1.1114 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1115 + view.setFloat64(10, NaN, false); 1.1116 + assertEq(view.getFloat64(10, false), NaN); 1.1117 + 1.1118 + // testFloatSet expected=-NaN 1.1119 + // Little endian 1.1120 + view = new DataView(buffer13, 0, 16); 1.1121 + view.setFloat64(0, -NaN, true); 1.1122 + assertEq(view.getFloat64(0, true), -NaN); 1.1123 + view = new DataView(buffer13_pad3, 0, 19); 1.1124 + view.setFloat64(3, -NaN, true); 1.1125 + assertEq(view.getFloat64(3, true), -NaN); 1.1126 + view = new DataView(buffer13_pad7, 0, 23); 1.1127 + view.setFloat64(7, -NaN, true); 1.1128 + assertEq(view.getFloat64(7, true), -NaN); 1.1129 + view = new DataView(buffer13_pad10, 0, 26); 1.1130 + view.setFloat64(10, -NaN, true); 1.1131 + assertEq(view.getFloat64(10, true), -NaN); 1.1132 + // Big endian. 1.1133 + view = new DataView(buffer13_r, 0, 16); 1.1134 + view.setFloat64(0, -NaN, false); 1.1135 + assertEq(view.getFloat64(0, false), -NaN); 1.1136 + view = new DataView(buffer13_r_pad3, 0, 19); 1.1137 + view.setFloat64(3, -NaN, false); 1.1138 + assertEq(view.getFloat64(3, false), -NaN); 1.1139 + view = new DataView(buffer13_r_pad7, 0, 23); 1.1140 + view.setFloat64(7, -NaN, false); 1.1141 + assertEq(view.getFloat64(7, false), -NaN); 1.1142 + view = new DataView(buffer13_r_pad10, 0, 26); 1.1143 + view.setFloat64(10, -NaN, false); 1.1144 + assertEq(view.getFloat64(10, false), -NaN); 1.1145 + 1.1146 + // Test for set methods that might write beyond the range 1.1147 + 1.1148 + // testIntegerSets(start=3, length=2) 1.1149 + view = new DataView(buffer13, 3, 2); 1.1150 + view.setInt8(0, 0); 1.1151 + assertEq(view.getInt8(0), 0); 1.1152 + checkThrow(function () view.setInt8(8, -128), RangeError); 1.1153 + checkThrow(function () view.setInt8(15, -1), RangeError); 1.1154 + view.setUint8(0, 0); 1.1155 + assertEq(view.getUint8(0), 0); 1.1156 + checkThrow(function () view.setUint8(8, 128), RangeError); 1.1157 + checkThrow(function () view.setUint8(15, 255), RangeError); 1.1158 + view.setInt16(0, 256, true); 1.1159 + assertEq(view.getInt16(0, true), 256); 1.1160 + checkThrow(function () view.setInt16(5, 26213, true), RangeError); 1.1161 + checkThrow(function () view.setInt16(9, -32127, true), RangeError); 1.1162 + checkThrow(function () view.setInt16(14, -2, true), RangeError); 1.1163 + view.setInt16(0, 1); 1.1164 + assertEq(view.getInt16(0), 1); 1.1165 + checkThrow(function () view.setInt16(5, 25958), RangeError); 1.1166 + checkThrow(function () view.setInt16(9, -32382), RangeError); 1.1167 + checkThrow(function () view.setInt16(14, -257), RangeError); 1.1168 + view.setUint16(0, 256, true); 1.1169 + assertEq(view.getUint16(0, true), 256); 1.1170 + checkThrow(function () view.setUint16(5, 26213, true), RangeError); 1.1171 + checkThrow(function () view.setUint16(9, 33409, true), RangeError); 1.1172 + checkThrow(function () view.setUint16(14, 65534, true), RangeError); 1.1173 + view.setUint16(0, 1); 1.1174 + assertEq(view.getUint16(0), 1); 1.1175 + checkThrow(function () view.setUint16(5, 25958), RangeError); 1.1176 + checkThrow(function () view.setUint16(9, 33154), RangeError); 1.1177 + checkThrow(function () view.setUint16(14, 65279), RangeError); 1.1178 + checkThrow(function () view.setInt32(0, 50462976, true), RangeError); 1.1179 + checkThrow(function () view.setInt32(3, 1717920771, true), RangeError); 1.1180 + checkThrow(function () view.setInt32(6, -2122291354, true), RangeError); 1.1181 + checkThrow(function () view.setInt32(9, -58490239, true), RangeError); 1.1182 + checkThrow(function () view.setInt32(12, -66052, true), RangeError); 1.1183 + checkThrow(function () view.setInt32(0, 66051), RangeError); 1.1184 + checkThrow(function () view.setInt32(3, 56911206), RangeError); 1.1185 + checkThrow(function () view.setInt32(6, 1718059137), RangeError); 1.1186 + checkThrow(function () view.setInt32(9, -2122152964), RangeError); 1.1187 + checkThrow(function () view.setInt32(12, -50462977), RangeError); 1.1188 + checkThrow(function () view.setUint32(0, 50462976, true), RangeError); 1.1189 + checkThrow(function () view.setUint32(3, 1717920771, true), RangeError); 1.1190 + checkThrow(function () view.setUint32(6, 2172675942, true), RangeError); 1.1191 + checkThrow(function () view.setUint32(9, 4236477057, true), RangeError); 1.1192 + checkThrow(function () view.setUint32(12, 4294901244, true), RangeError); 1.1193 + checkThrow(function () view.setUint32(0, 66051), RangeError); 1.1194 + checkThrow(function () view.setUint32(3, 56911206), RangeError); 1.1195 + checkThrow(function () view.setUint32(6, 1718059137), RangeError); 1.1196 + checkThrow(function () view.setUint32(9, 2172814332), RangeError); 1.1197 + checkThrow(function () view.setUint32(12, 4244504319), RangeError); 1.1198 + 1.1199 + // testFloatSets(start=7) 1.1200 + 1.1201 + // testFloatSet expected=10 1.1202 + // Little endian 1.1203 + view = new DataView(buffer13, 7, 9); 1.1204 + view.setFloat32(0, 10, true); 1.1205 + assertEq(view.getFloat32(0, true), 10); 1.1206 + view = new DataView(buffer13_pad3, 7, 12); 1.1207 + view.setFloat32(3, 10, true); 1.1208 + assertEq(view.getFloat32(3, true), 10); 1.1209 + view = new DataView(buffer13_pad7, 7, 16); 1.1210 + view.setFloat32(7, 10, true); 1.1211 + assertEq(view.getFloat32(7, true), 10); 1.1212 + view = new DataView(buffer13_pad10, 7, 19); 1.1213 + view.setFloat32(10, 10, true); 1.1214 + assertEq(view.getFloat32(10, true), 10); 1.1215 + // Big endian. 1.1216 + view = new DataView(buffer13_r, 7, 9); 1.1217 + view.setFloat32(0, 10, false); 1.1218 + assertEq(view.getFloat32(0, false), 10); 1.1219 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1220 + view.setFloat32(3, 10, false); 1.1221 + assertEq(view.getFloat32(3, false), 10); 1.1222 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1223 + view.setFloat32(7, 10, false); 1.1224 + assertEq(view.getFloat32(7, false), 10); 1.1225 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1226 + view.setFloat32(10, 10, false); 1.1227 + assertEq(view.getFloat32(10, false), 10); 1.1228 + 1.1229 + // testFloatSet expected=1.2300000190734863 1.1230 + // Little endian 1.1231 + view = new DataView(buffer13, 7, 9); 1.1232 + view.setFloat32(0, 1.2300000190734863, true); 1.1233 + assertEq(view.getFloat32(0, true), 1.2300000190734863); 1.1234 + view = new DataView(buffer13_pad3, 7, 12); 1.1235 + view.setFloat32(3, 1.2300000190734863, true); 1.1236 + assertEq(view.getFloat32(3, true), 1.2300000190734863); 1.1237 + view = new DataView(buffer13_pad7, 7, 16); 1.1238 + view.setFloat32(7, 1.2300000190734863, true); 1.1239 + assertEq(view.getFloat32(7, true), 1.2300000190734863); 1.1240 + view = new DataView(buffer13_pad10, 7, 19); 1.1241 + view.setFloat32(10, 1.2300000190734863, true); 1.1242 + assertEq(view.getFloat32(10, true), 1.2300000190734863); 1.1243 + // Big endian. 1.1244 + view = new DataView(buffer13_r, 7, 9); 1.1245 + view.setFloat32(0, 1.2300000190734863, false); 1.1246 + assertEq(view.getFloat32(0, false), 1.2300000190734863); 1.1247 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1248 + view.setFloat32(3, 1.2300000190734863, false); 1.1249 + assertEq(view.getFloat32(3, false), 1.2300000190734863); 1.1250 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1251 + view.setFloat32(7, 1.2300000190734863, false); 1.1252 + assertEq(view.getFloat32(7, false), 1.2300000190734863); 1.1253 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1254 + view.setFloat32(10, 1.2300000190734863, false); 1.1255 + assertEq(view.getFloat32(10, false), 1.2300000190734863); 1.1256 + 1.1257 + // testFloatSet expected=-45621.37109375 1.1258 + // Little endian 1.1259 + view = new DataView(buffer13, 7, 9); 1.1260 + view.setFloat32(0, -45621.37109375, true); 1.1261 + assertEq(view.getFloat32(0, true), -45621.37109375); 1.1262 + view = new DataView(buffer13_pad3, 7, 12); 1.1263 + view.setFloat32(3, -45621.37109375, true); 1.1264 + assertEq(view.getFloat32(3, true), -45621.37109375); 1.1265 + view = new DataView(buffer13_pad7, 7, 16); 1.1266 + view.setFloat32(7, -45621.37109375, true); 1.1267 + assertEq(view.getFloat32(7, true), -45621.37109375); 1.1268 + view = new DataView(buffer13_pad10, 7, 19); 1.1269 + view.setFloat32(10, -45621.37109375, true); 1.1270 + assertEq(view.getFloat32(10, true), -45621.37109375); 1.1271 + // Big endian. 1.1272 + view = new DataView(buffer13_r, 7, 9); 1.1273 + view.setFloat32(0, -45621.37109375, false); 1.1274 + assertEq(view.getFloat32(0, false), -45621.37109375); 1.1275 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1276 + view.setFloat32(3, -45621.37109375, false); 1.1277 + assertEq(view.getFloat32(3, false), -45621.37109375); 1.1278 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1279 + view.setFloat32(7, -45621.37109375, false); 1.1280 + assertEq(view.getFloat32(7, false), -45621.37109375); 1.1281 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1282 + view.setFloat32(10, -45621.37109375, false); 1.1283 + assertEq(view.getFloat32(10, false), -45621.37109375); 1.1284 + 1.1285 + // testFloatSet expected=NaN 1.1286 + // Little endian 1.1287 + view = new DataView(buffer13, 7, 9); 1.1288 + view.setFloat32(0, NaN, true); 1.1289 + assertEq(view.getFloat32(0, true), NaN); 1.1290 + view = new DataView(buffer13_pad3, 7, 12); 1.1291 + view.setFloat32(3, NaN, true); 1.1292 + assertEq(view.getFloat32(3, true), NaN); 1.1293 + view = new DataView(buffer13_pad7, 7, 16); 1.1294 + view.setFloat32(7, NaN, true); 1.1295 + assertEq(view.getFloat32(7, true), NaN); 1.1296 + view = new DataView(buffer13_pad10, 7, 19); 1.1297 + view.setFloat32(10, NaN, true); 1.1298 + assertEq(view.getFloat32(10, true), NaN); 1.1299 + // Big endian. 1.1300 + view = new DataView(buffer13_r, 7, 9); 1.1301 + view.setFloat32(0, NaN, false); 1.1302 + assertEq(view.getFloat32(0, false), NaN); 1.1303 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1304 + view.setFloat32(3, NaN, false); 1.1305 + assertEq(view.getFloat32(3, false), NaN); 1.1306 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1307 + view.setFloat32(7, NaN, false); 1.1308 + assertEq(view.getFloat32(7, false), NaN); 1.1309 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1310 + view.setFloat32(10, NaN, false); 1.1311 + assertEq(view.getFloat32(10, false), NaN); 1.1312 + 1.1313 + // testFloatSet expected=-NaN 1.1314 + // Little endian 1.1315 + view = new DataView(buffer13, 7, 9); 1.1316 + view.setFloat32(0, -NaN, true); 1.1317 + assertEq(view.getFloat32(0, true), -NaN); 1.1318 + view = new DataView(buffer13_pad3, 7, 12); 1.1319 + view.setFloat32(3, -NaN, true); 1.1320 + assertEq(view.getFloat32(3, true), -NaN); 1.1321 + view = new DataView(buffer13_pad7, 7, 16); 1.1322 + view.setFloat32(7, -NaN, true); 1.1323 + assertEq(view.getFloat32(7, true), -NaN); 1.1324 + view = new DataView(buffer13_pad10, 7, 19); 1.1325 + view.setFloat32(10, -NaN, true); 1.1326 + assertEq(view.getFloat32(10, true), -NaN); 1.1327 + // Big endian. 1.1328 + view = new DataView(buffer13_r, 7, 9); 1.1329 + view.setFloat32(0, -NaN, false); 1.1330 + assertEq(view.getFloat32(0, false), -NaN); 1.1331 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1332 + view.setFloat32(3, -NaN, false); 1.1333 + assertEq(view.getFloat32(3, false), -NaN); 1.1334 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1335 + view.setFloat32(7, -NaN, false); 1.1336 + assertEq(view.getFloat32(7, false), -NaN); 1.1337 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1338 + view.setFloat32(10, -NaN, false); 1.1339 + assertEq(view.getFloat32(10, false), -NaN); 1.1340 + 1.1341 + // testFloatSet expected=10 1.1342 + // Little endian 1.1343 + view = new DataView(buffer13, 7, 9); 1.1344 + view.setFloat64(0, 10, true); 1.1345 + assertEq(view.getFloat64(0, true), 10); 1.1346 + view = new DataView(buffer13_pad3, 7, 12); 1.1347 + view.setFloat64(3, 10, true); 1.1348 + assertEq(view.getFloat64(3, true), 10); 1.1349 + view = new DataView(buffer13_pad7, 7, 16); 1.1350 + view.setFloat64(7, 10, true); 1.1351 + assertEq(view.getFloat64(7, true), 10); 1.1352 + view = new DataView(buffer13_pad10, 7, 19); 1.1353 + view.setFloat64(10, 10, true); 1.1354 + assertEq(view.getFloat64(10, true), 10); 1.1355 + // Big endian. 1.1356 + view = new DataView(buffer13_r, 7, 9); 1.1357 + view.setFloat64(0, 10, false); 1.1358 + assertEq(view.getFloat64(0, false), 10); 1.1359 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1360 + view.setFloat64(3, 10, false); 1.1361 + assertEq(view.getFloat64(3, false), 10); 1.1362 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1363 + view.setFloat64(7, 10, false); 1.1364 + assertEq(view.getFloat64(7, false), 10); 1.1365 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1366 + view.setFloat64(10, 10, false); 1.1367 + assertEq(view.getFloat64(10, false), 10); 1.1368 + 1.1369 + // testFloatSet expected=1.23 1.1370 + // Little endian 1.1371 + view = new DataView(buffer13, 7, 9); 1.1372 + view.setFloat64(0, 1.23, true); 1.1373 + assertEq(view.getFloat64(0, true), 1.23); 1.1374 + view = new DataView(buffer13_pad3, 7, 12); 1.1375 + view.setFloat64(3, 1.23, true); 1.1376 + assertEq(view.getFloat64(3, true), 1.23); 1.1377 + view = new DataView(buffer13_pad7, 7, 16); 1.1378 + view.setFloat64(7, 1.23, true); 1.1379 + assertEq(view.getFloat64(7, true), 1.23); 1.1380 + view = new DataView(buffer13_pad10, 7, 19); 1.1381 + view.setFloat64(10, 1.23, true); 1.1382 + assertEq(view.getFloat64(10, true), 1.23); 1.1383 + // Big endian. 1.1384 + view = new DataView(buffer13_r, 7, 9); 1.1385 + view.setFloat64(0, 1.23, false); 1.1386 + assertEq(view.getFloat64(0, false), 1.23); 1.1387 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1388 + view.setFloat64(3, 1.23, false); 1.1389 + assertEq(view.getFloat64(3, false), 1.23); 1.1390 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1391 + view.setFloat64(7, 1.23, false); 1.1392 + assertEq(view.getFloat64(7, false), 1.23); 1.1393 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1394 + view.setFloat64(10, 1.23, false); 1.1395 + assertEq(view.getFloat64(10, false), 1.23); 1.1396 + 1.1397 + // testFloatSet expected=-6213576.4839 1.1398 + // Little endian 1.1399 + view = new DataView(buffer13, 7, 9); 1.1400 + view.setFloat64(0, -6213576.4839, true); 1.1401 + assertEq(view.getFloat64(0, true), -6213576.4839); 1.1402 + view = new DataView(buffer13_pad3, 7, 12); 1.1403 + view.setFloat64(3, -6213576.4839, true); 1.1404 + assertEq(view.getFloat64(3, true), -6213576.4839); 1.1405 + view = new DataView(buffer13_pad7, 7, 16); 1.1406 + view.setFloat64(7, -6213576.4839, true); 1.1407 + assertEq(view.getFloat64(7, true), -6213576.4839); 1.1408 + view = new DataView(buffer13_pad10, 7, 19); 1.1409 + view.setFloat64(10, -6213576.4839, true); 1.1410 + assertEq(view.getFloat64(10, true), -6213576.4839); 1.1411 + // Big endian. 1.1412 + view = new DataView(buffer13_r, 7, 9); 1.1413 + view.setFloat64(0, -6213576.4839, false); 1.1414 + assertEq(view.getFloat64(0, false), -6213576.4839); 1.1415 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1416 + view.setFloat64(3, -6213576.4839, false); 1.1417 + assertEq(view.getFloat64(3, false), -6213576.4839); 1.1418 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1419 + view.setFloat64(7, -6213576.4839, false); 1.1420 + assertEq(view.getFloat64(7, false), -6213576.4839); 1.1421 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1422 + view.setFloat64(10, -6213576.4839, false); 1.1423 + assertEq(view.getFloat64(10, false), -6213576.4839); 1.1424 + 1.1425 + // testFloatSet expected=NaN 1.1426 + // Little endian 1.1427 + view = new DataView(buffer13, 7, 9); 1.1428 + view.setFloat64(0, NaN, true); 1.1429 + assertEq(view.getFloat64(0, true), NaN); 1.1430 + view = new DataView(buffer13_pad3, 7, 12); 1.1431 + view.setFloat64(3, NaN, true); 1.1432 + assertEq(view.getFloat64(3, true), NaN); 1.1433 + view = new DataView(buffer13_pad7, 7, 16); 1.1434 + view.setFloat64(7, NaN, true); 1.1435 + assertEq(view.getFloat64(7, true), NaN); 1.1436 + view = new DataView(buffer13_pad10, 7, 19); 1.1437 + view.setFloat64(10, NaN, true); 1.1438 + assertEq(view.getFloat64(10, true), NaN); 1.1439 + // Big endian. 1.1440 + view = new DataView(buffer13_r, 7, 9); 1.1441 + view.setFloat64(0, NaN, false); 1.1442 + assertEq(view.getFloat64(0, false), NaN); 1.1443 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1444 + view.setFloat64(3, NaN, false); 1.1445 + assertEq(view.getFloat64(3, false), NaN); 1.1446 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1447 + view.setFloat64(7, NaN, false); 1.1448 + assertEq(view.getFloat64(7, false), NaN); 1.1449 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1450 + view.setFloat64(10, NaN, false); 1.1451 + assertEq(view.getFloat64(10, false), NaN); 1.1452 + 1.1453 + // testFloatSet expected=-NaN 1.1454 + // Little endian 1.1455 + view = new DataView(buffer13, 7, 9); 1.1456 + view.setFloat64(0, -NaN, true); 1.1457 + assertEq(view.getFloat64(0, true), -NaN); 1.1458 + view = new DataView(buffer13_pad3, 7, 12); 1.1459 + view.setFloat64(3, -NaN, true); 1.1460 + assertEq(view.getFloat64(3, true), -NaN); 1.1461 + view = new DataView(buffer13_pad7, 7, 16); 1.1462 + view.setFloat64(7, -NaN, true); 1.1463 + assertEq(view.getFloat64(7, true), -NaN); 1.1464 + view = new DataView(buffer13_pad10, 7, 19); 1.1465 + view.setFloat64(10, -NaN, true); 1.1466 + assertEq(view.getFloat64(10, true), -NaN); 1.1467 + // Big endian. 1.1468 + view = new DataView(buffer13_r, 7, 9); 1.1469 + view.setFloat64(0, -NaN, false); 1.1470 + assertEq(view.getFloat64(0, false), -NaN); 1.1471 + view = new DataView(buffer13_r_pad3, 7, 12); 1.1472 + view.setFloat64(3, -NaN, false); 1.1473 + assertEq(view.getFloat64(3, false), -NaN); 1.1474 + view = new DataView(buffer13_r_pad7, 7, 16); 1.1475 + view.setFloat64(7, -NaN, false); 1.1476 + assertEq(view.getFloat64(7, false), -NaN); 1.1477 + view = new DataView(buffer13_r_pad10, 7, 19); 1.1478 + view.setFloat64(10, -NaN, false); 1.1479 + assertEq(view.getFloat64(10, false), -NaN); 1.1480 + 1.1481 + // Test for set methods that write to negative index 1.1482 + 1.1483 + // testSetNegativeIndexes 1.1484 + view = new DataView(buffer1, 0, 16); 1.1485 + checkThrow(function () view.setInt8(-1, 0), RangeError); 1.1486 + checkThrow(function () view.setInt8(-2, 0), RangeError); 1.1487 + checkThrow(function () view.setUint8(-1, 0), RangeError); 1.1488 + checkThrow(function () view.setUint8(-2, 0), RangeError); 1.1489 + checkThrow(function () view.setInt16(-1, 0), RangeError); 1.1490 + checkThrow(function () view.setInt16(-2, 0), RangeError); 1.1491 + checkThrow(function () view.setInt16(-3, 0), RangeError); 1.1492 + checkThrow(function () view.setUint16(-1, 0), RangeError); 1.1493 + checkThrow(function () view.setUint16(-2, 0), RangeError); 1.1494 + checkThrow(function () view.setUint16(-3, 0), RangeError); 1.1495 + checkThrow(function () view.setInt32(-1, 0), RangeError); 1.1496 + checkThrow(function () view.setInt32(-3, 0), RangeError); 1.1497 + checkThrow(function () view.setInt32(-5, 0), RangeError); 1.1498 + checkThrow(function () view.setUint32(-1, 0), RangeError); 1.1499 + checkThrow(function () view.setUint32(-3, 0), RangeError); 1.1500 + checkThrow(function () view.setUint32(-5, 0), RangeError); 1.1501 + view = new DataView(buffer7, 0, 8); 1.1502 + checkThrow(function () view.setFloat32(-1, 0), RangeError); 1.1503 + checkThrow(function () view.setFloat32(-3, 0), RangeError); 1.1504 + checkThrow(function () view.setFloat32(-5, 0), RangeError); 1.1505 + checkThrow(function () view.setFloat64(-1, 0), RangeError); 1.1506 + checkThrow(function () view.setFloat64(-5, 0), RangeError); 1.1507 + checkThrow(function () view.setFloat64(-9, 0), RangeError); 1.1508 + 1.1509 + // Too large for signed 32 bit integer index 1.1510 + checkThrow(function () view.setInt8(2147483649, 1), RangeError); 1.1511 + checkThrow(function () view.setUint8(2147483649, 1), RangeError); 1.1512 + checkThrow(function () view.setInt16(2147483649, 1), RangeError); 1.1513 + checkThrow(function () view.setUint16(2147483649, 1), RangeError); 1.1514 + checkThrow(function () view.setInt32(2147483649, 1), RangeError); 1.1515 + checkThrow(function () view.setUint32(2147483649, 1), RangeError); 1.1516 + checkThrow(function () view.setFloat32(2147483649, 1), RangeError); 1.1517 + checkThrow(function () view.setFloat64(2147483649, 1), RangeError); 1.1518 + 1.1519 + // Test for wrong arguments passed to set methods 1.1520 + checkThrow(function () view.setInt8(), Error); 1.1521 + checkThrow(function () view.setUint8(), Error); 1.1522 + checkThrow(function () view.setInt16(), Error); 1.1523 + checkThrow(function () view.setUint16(), Error); 1.1524 + checkThrow(function () view.setInt32(), Error); 1.1525 + checkThrow(function () view.setUint32(), Error); 1.1526 + checkThrow(function () view.setFloat32(), Error); 1.1527 + checkThrow(function () view.setFloat64(), Error); 1.1528 + checkThrow(function () view.setInt8(1), Error); 1.1529 + checkThrow(function () view.setUint8(1), Error); 1.1530 + checkThrow(function () view.setInt16(1), Error); 1.1531 + checkThrow(function () view.setUint16(1), Error); 1.1532 + checkThrow(function () view.setInt32(1), Error); 1.1533 + checkThrow(function () view.setUint32(1), Error); 1.1534 + checkThrow(function () view.setFloat32(1), Error); 1.1535 + checkThrow(function () view.setFloat64(1), Error); 1.1536 + 1.1537 + // testAlignment 1.1538 + var intArray1 = [0, 1, 2, 3, 100, 101, 102, 103, 128, 129, 130, 131, 252, 253, 254, 255]; 1.1539 + view = new DataView((new Uint8Array(intArray1)).buffer, 0); 1.1540 + assertEq(view.getUint32(0, false), 0x00010203); 1.1541 + view = new DataView((new Uint8Array(intArray1)).buffer, 1); 1.1542 + assertEq(view.getUint32(0, false), 0x01020364); 1.1543 + view = new DataView((new Uint8Array(intArray1)).buffer, 2); 1.1544 + assertEq(view.getUint32(0, false), 0x02036465); 1.1545 + view = new DataView((new Uint8Array(intArray1)).buffer, 3); 1.1546 + assertEq(view.getUint32(0, false), 0x03646566); 1.1547 + view = new DataView((new Uint8Array(intArray1)).buffer, 4); 1.1548 + assertEq(view.getUint32(0, false), 0x64656667); 1.1549 + view = new DataView((new Uint8Array(intArray1)).buffer, 5); 1.1550 + assertEq(view.getUint32(0, false), 0x65666780); 1.1551 + view = new DataView((new Uint8Array(intArray1)).buffer, 6); 1.1552 + assertEq(view.getUint32(0, false), 0x66678081); 1.1553 + view = new DataView((new Uint8Array(intArray1)).buffer, 7); 1.1554 + assertEq(view.getUint32(0, false), 0x67808182); 1.1555 + 1.1556 + // Test for indexing into a DataView, which should not use the ArrayBuffer storage 1.1557 + view = new DataView((new Uint8Array([1, 2])).buffer); 1.1558 + assertEq(view[0], undefined); 1.1559 + view[0] = 3; 1.1560 + assertEq(view[0], 3); 1.1561 + assertEq(view.getUint8(0), 1); 1.1562 + 1.1563 + // Test WebIDL-specific class and prototype class names 1.1564 + assertEq(Object.prototype.toString.apply(new Uint8Array(0)), "[object Uint8Array]"); 1.1565 + assertEq(Object.prototype.toString.apply(new Float32Array(0)), "[object Float32Array]"); 1.1566 + assertEq(Object.prototype.toString.apply(Uint8Array.prototype), "[object Uint8ArrayPrototype]"); 1.1567 + assertEq(Object.prototype.toString.apply(Float32Array.prototype), "[object Float32ArrayPrototype]"); 1.1568 + assertEq(Object.prototype.toString.apply(new ArrayBuffer()), "[object ArrayBuffer]"); 1.1569 + assertEq(Object.prototype.toString.apply(new DataView(view.buffer)), "[object DataView]"); 1.1570 + assertEq(Object.prototype.toString.apply(DataView.prototype), "[object DataViewPrototype]"); 1.1571 + 1.1572 + // Accessing DataView fields on DataView.prototype should crash 1.1573 + checkThrow(function () DataView.prototype.byteLength, TypeError); 1.1574 + checkThrow(function () DataView.prototype.byteOffset, TypeError); 1.1575 + checkThrow(function () DataView.prototype.buffer, TypeError); 1.1576 + 1.1577 + // Protos and proxies, oh my! 1.1578 + var alien = newGlobal(); 1.1579 + var alien_data = alien.eval('data = ' + data1.toSource()); 1.1580 + var alien_buffer = alien.eval('buffer = new Uint8Array(data).buffer'); 1.1581 + var alien_view = alien.eval('view = new DataView(buffer, 0, 16)'); 1.1582 + 1.1583 + // proto is view of buffer: should throw 1.1584 + var o = Object.create(view1); 1.1585 + checkThrow(function () o.getUint8(4), TypeError); // WebIDL 4.4.7: Operations 1.1586 + checkThrow(function () o.buffer, TypeError); // WebIDL 4.4.6: Attributes, section 2 1.1587 + checkThrow(function () o.byteOffset, TypeError); 1.1588 + checkThrow(function () o.byteLength, TypeError); 1.1589 + 1.1590 + // proxy for view of buffer: should work 1.1591 + assertEq(alien_view.buffer.byteLength > 0, true); 1.1592 + assertEq(alien_view.getUint8(4), 100); 1.1593 + 1.1594 + // Bug 753996: when throwing an Error whose message contains the name of a 1.1595 + // function, the JS engine calls js_ValueToFunction to produce the function 1.1596 + // name to include in the message. js_ValueToFunction does not unwrap its 1.1597 + // argument. So if the function is actually a wrapper, then 1.1598 + // js_ValueToFunction will throw a TypeError ("X is not a function"). 1.1599 + // Confusingly, this TypeError uses the decompiler, which *will* unwrap the 1.1600 + // object to get the wrapped function name out, so the final error will 1.1601 + // look something like "SomeFunction() is not a function".) 1.1602 + var weirdo = Object.create(alien.eval("new Date")); 1.1603 + var e = null; 1.1604 + try { 1.1605 + weirdo.getTime(); 1.1606 + } catch (exc) { 1.1607 + e = exc; 1.1608 + } 1.1609 + if (!e) { 1.1610 + print("==== TODO but PASSED? ===="); 1.1611 + print("Bug 753996 unexpectedly passed"); 1.1612 + } 1.1613 + 1.1614 + // proto is proxy for view of buffer: should throw TypeError 1.1615 + // 1.1616 + // As of this writing, bug 753996 causes this to throw the *wrong* 1.1617 + // TypeError, and in fact it throws a (thisglobal).TypeError instead of 1.1618 + // alien.TypeError. 1.1619 + var av = Object.create(alien_view); 1.1620 + checkThrowTODO(function () av.getUint8(4), alien.TypeError); 1.1621 + checkThrowTODO(function () av.buffer, alien.TypeError); 1.1622 + 1.1623 + // view of object whose proto is buffer. This should not work per dherman. 1.1624 + // Note that DataView throws a TypeError while TypedArrays create a 1.1625 + // zero-length view. Odd though it seems, this is correct: TypedArrays have 1.1626 + // a constructor that takes a length argument; DataViews do not. So a 1.1627 + // TypedArray will do ToUint32 and end up passing a zero as the 1.1628 + // constructor's length argument. 1.1629 + buffer = Object.create(buffer1); 1.1630 + checkThrow(function () new DataView(buffer), TypeError); 1.1631 + 1.1632 + // view of proxy for buffer 1.1633 + av = new DataView(alien_buffer); 1.1634 + assertEq(av.getUint8(4), 100); 1.1635 + assertEq(Object.getPrototypeOf(av), DataView.prototype); 1.1636 + 1.1637 + // Bug 760904: call another compartment's constructor with an ArrayBuffer 1.1638 + // from this compartment, both as a constructor and as a regular call. (The 1.1639 + // latter is what was broken in that bug.) 1.1640 + var alien_constructor = alien.DataView; 1.1641 + var local_buffer = (new Int8Array(3)).buffer; 1.1642 + var foreign_exchange_student_1 = alien_constructor(local_buffer); 1.1643 + var foreign_exchange_student_2 = new alien_constructor(local_buffer); 1.1644 + 1.1645 + // gc bug 787775 1.1646 + var ab = new ArrayBuffer(4); 1.1647 + var dv = new DataView(ab); 1.1648 + dv = 1; 1.1649 + gc(); 1.1650 + 1.1651 + reportCompare(0, 0, 'done.'); 1.1652 + exitFunc ('test'); 1.1653 +} 1.1654 + 1.1655 +test();