11510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 21510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// Redistribution and use in source and binary forms, with or without 31510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// modification, are permitted provided that the following conditions are 41510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// met: 51510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 61510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// * Redistributions of source code must retain the above copyright 71510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// notice, this list of conditions and the following disclaimer. 81510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// * Redistributions in binary form must reproduce the above 91510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// copyright notice, this list of conditions and the following 101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// disclaimer in the documentation and/or other materials provided 111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// with the distribution. 121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// * Neither the name of Google Inc. nor the names of its 131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// contributors may be used to endorse or promote products derived 141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// from this software without specific prior written permission. 151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// 161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org// These tests are adapted from Khronos DataView tests 291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar intArray1 = 311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org [0, 1, 2, 3, 100, 101, 102, 103, 128, 129, 130, 131, 252, 253, 254, 255]; 321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar intArray2 = 331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org [31, 32, 33, 0, 1, 2, 3, 100, 101, 102, 103, 128, 129, 130, 131, 252, 341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 253, 254, 255]; 351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar initialArray = 361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org [204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 204, 204, 204]; 381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar arayBuffer = null; 401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar view = null; 411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar viewStart = 0; 421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgvar viewLength = 0; 431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction getElementSize(func) { 451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org switch (func) { 461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Int8": 471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Uint8": 481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return 1; 491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Int16": 501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Uint16": 511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return 2; 521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Int32": 531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Uint32": 541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Float32": 551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return 4; 561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org case "Float64": 571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org return 8; 581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org default: 591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertUnreachable(func); 601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction checkGet(func, index, expected, littleEndian) { 641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org function doGet() { 65169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org if (littleEndian != undefined) 66169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org return view["get" + func](index, littleEndian); 67169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org else 68169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org return view["get" + func](index); 691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (index >=0 && index + getElementSize(func) - 1 < view.byteLength) 711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertSame(expected, doGet()); 721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertThrows(doGet, RangeError); 741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction checkSet(func, index, value, littleEndian) { 771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org function doSet() { 78169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org if (littleEndian != undefined) 79169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org view["set" + func](index, value, littleEndian); 80169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org else 81169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org view["set" + func](index, value); 821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (index >= 0 && 841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org index + getElementSize(func) - 1 < view.byteLength) { 851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertSame(undefined, doSet()); 861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org checkGet(func, index, value, littleEndian); 871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } else { 881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertThrows(doSet, RangeError); 891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction test(isTestingGet, func, index, value, littleEndian) { 931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (isTestingGet) 941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org checkGet(func, index, value, littleEndian); 951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org else 961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org checkSet(func, index, value, littleEndian); 971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction createDataView( 1001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org array, frontPaddingNum, littleEndian, start, length) { 1011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!littleEndian) 1021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org array.reverse(); 1031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var paddingArray = new Array(frontPaddingNum); 1041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org arrayBuffer = (new Uint8Array(paddingArray.concat(array))).buffer; 1051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org view = new DataView(arrayBuffer, viewStart, viewLength); 1061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org if (!littleEndian) 1071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org array.reverse(); // restore the array. 1081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 1091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction runIntegerTestCases(isTestingGet, array, start, length) { 1111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 0, true, start, length); 1121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int8", 0, 0); 114169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Int8", undefined, 0); 1151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int8", 8, -128); 1161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int8", 15, -1); 117af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Int8", 1e12, undefined); 1181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint8", 0, 0); 120169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Uint8", undefined, 0); 1211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint8", 8, 128); 1221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint8", 15, 255); 123af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Uint8", 1e12, undefined); 1241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Little endian. 1261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 0, 256, true); 127169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Int16", undefined, 256, true); 1281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 5, 26213, true); 1291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 9, -32127, true); 1301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 14, -2, true); 131af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Int16", 1e12, undefined, true); 1321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Big endian. 1341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 0, 1); 135169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Int16", undefined, 1); 1361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 5, 25958); 1371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 9, -32382); 1381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", 14, -257); 139af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Int16", 1e12, undefined); 1401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Little endian. 1421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 0, 256, true); 143169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Uint16", undefined, 256, true); 1441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 5, 26213, true); 1451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 9, 33409, true); 1461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 14, 65534, true); 147af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Uint16", 1e12, undefined, true); 1481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Big endian. 1501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 0, 1); 151169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Uint16", undefined, 1); 1521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 5, 25958); 1531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 9, 33154); 1541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", 14, 65279); 155af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Uint16", 1e12, undefined); 1561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Little endian. 1581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 0, 50462976, true); 159169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Int32", undefined, 50462976, true); 1601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 3, 1717920771, true); 1611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 6, -2122291354, true); 1621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 9, -58490239, true); 1631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 12,-66052, true); 164af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Int32", 1e12, undefined, true); 1651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Big endian. 1671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 0, 66051); 168169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Int32", undefined, 66051); 1691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 3, 56911206); 1701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 6, 1718059137); 1711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 9, -2122152964); 1721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", 12, -50462977); 173af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Int32", 1e12, undefined); 1741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Little endian. 1761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 0, 50462976, true); 177169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Uint32", undefined, 50462976, true); 1781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 3, 1717920771, true); 1791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 6, 2172675942, true); 1801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 9, 4236477057, true); 1811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 12,4294901244, true); 182af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Uint32", 1e12, undefined, true); 1831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Big endian. 1851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 0, 66051); 186169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, "Uint32", undefined, 66051); 1871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 3, 56911206); 1881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 6, 1718059137); 1891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 9, 2172814332); 1901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", 12, 4244504319); 191af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, "Uint32", 1e12, undefined); 1921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 1931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 1941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction testFloat(isTestingGet, func, array, start, expected) { 1951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Little endian. 1961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 0, true, start); 1971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 0, expected, true); 198169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, func, undefined, expected, true); 1991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 3, true, start); 2001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 3, expected, true); 2011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 7, true, start); 2021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 7, expected, true); 2031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 10, true, start); 2041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 10, expected, true); 205af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, func, 1e12, undefined, true); 2061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org // Big endian. 2081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 0, false); 2091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 0, expected, false); 210169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org test(isTestingGet, func, undefined, expected, false); 2111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 3, false); 2121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 3, expected, false); 2131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 7, false); 2141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 7, expected, false); 2151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(array, 10, false); 2161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, func, 10, expected, false); 217af9cfcbed5daf6e636e189bce451c6fafdbb127dmachenbach@chromium.org test(isTestingGet, func, 1e12, undefined, false); 2181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction runFloatTestCases(isTestingGet, start) { 2211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float32", 2221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [0, 0, 32, 65] : initialArray, start, 10); 2231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float32", 2251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [164, 112, 157, 63] : initialArray, 2261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, 1.2300000190734863); 2271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float32", 2281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [95, 53, 50, 199] : initialArray, 2291510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, -45621.37109375); 2301510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float32", 2311510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [255, 255, 255, 127] : initialArray, 2321510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, NaN); 2331510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float32", 2341510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [255, 255, 255, 255] : initialArray, 2351510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, -NaN); 2361510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2371510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float64", 2381510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [0, 0, 0, 0, 0, 0, 36, 64] : initialArray, 2391510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, 10); 2401510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float64", 2411510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [174, 71, 225, 122, 20, 174, 243, 63] : initialArray, 2421510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, 1.23); 2431510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float64", 2441510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [181, 55, 248, 30, 242, 179, 87, 193] : initialArray, 2451510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, -6213576.4839); 2461510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float64", 2471510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [255, 255, 255, 255, 255, 255, 255, 127] : initialArray, 2481510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, NaN); 2491510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org testFloat(isTestingGet, "Float64", 2501510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org isTestingGet ? [255, 255, 255, 255, 255, 255, 255, 255] : initialArray, 2511510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org start, -NaN); 2521510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2531510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2541510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction runNegativeIndexTests(isTestingGet) { 2551510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView(intArray1, 0, true, 0, 16); 2561510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2571510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int8", -1, 0); 2581510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int8", -2, 0); 2591510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2601510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint8", -1, 0); 2611510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint8", -2, 0); 2621510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2631510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", -1, 1); 2641510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", -2, 1); 2651510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int16", -3, 1); 2661510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2671510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", -1, 1); 2681510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", -2, 1); 2691510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint16", -3, 1); 2701510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2711510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", -1, 66051); 2721510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", -3, 66051); 2731510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Int32", -5, 66051); 2741510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2751510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", -1, 66051); 2761510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", -3, 66051); 2771510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Uint32", -5, 66051); 2781510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2791510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org createDataView([0, 0, 0, 0, 0, 0, 0, 0], 0, true, 0, 8); 2801510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2811510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float32", -1, 0); 2821510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float32", -3, 0); 2831510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float32", -5, 0); 2841510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2851510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float64", -1, 0); 2861510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float64", -5, 0); 2871510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org test(isTestingGet, "Float64", -9, 0); 2881510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 2891510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2901510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2911510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction TestGetters() { 2921510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runIntegerTestCases(true, intArray1, 0, 16); 2931510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runFloatTestCases(true, 0); 2941510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2951510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runIntegerTestCases(true, intArray2, 3, 2); 2961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runFloatTestCases(true, 3); 2971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 2981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runNegativeIndexTests(true); 2991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 3001510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction TestSetters() { 3021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runIntegerTestCases(false, initialArray, 0, 16); 3031510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runFloatTestCases(false); 3041510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3051510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runIntegerTestCases(false, initialArray, 3, 2); 3061510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runFloatTestCases(false, 7); 3071510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3081510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org runNegativeIndexTests(false); 3091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 3101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 3111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgTestGetters(); 3121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgTestSetters(); 3131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 31410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeInt8(value, expected) { 31510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 31610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt8(0, value)); 31710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt8(0)); 31810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt8(0, value, true)); 31910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt8(0, true)); 32010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 32110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 32210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeUint8(value, expected) { 32310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 32410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint8(0, value)); 32510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint8(0)); 32610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint8(0, value, true)); 32710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint8(0, true)); 32810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 32910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 33010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeInt16(value, expected) { 33110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 33210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt16(0, value)); 33310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt16(0)); 33410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt16(0, value, true)); 33510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt16(0, true)); 33610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 33710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 33810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeUint16(value, expected) { 33910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 34010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint16(0, value)); 34110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint16(0)); 34210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint16(0, value, true)); 34310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint16(0, true)); 34410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 34510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 34610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeInt32(value, expected) { 34710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 34810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt32(0, value)); 34910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt32(0)); 35010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setInt32(0, value, true)); 35110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getInt32(0, true)); 35210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 35310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 35410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction CheckOutOfRangeUint32(value, expected) { 35510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org var view = new DataView(new ArrayBuffer(100)); 35610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint32(0, value)); 35710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint32(0)); 35810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(undefined, view.setUint32(0, value, true)); 35910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org assertSame(expected, view.getUint32(0, true)); 36010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 36110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 36210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgfunction TestOutOfRange() { 36310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt8(0x80, -0x80); 36410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt8(0x1000, 0); 36510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt8(-0x81, 0x7F); 36610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 36710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint8(0x100, 0); 36810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint8(0x1000, 0); 36910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint8(-0x80, 0x80); 37010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint8(-1, 0xFF); 37110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint8(-0xFF, 1); 37210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 37310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt16(0x8000, -0x8000); 37410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt16(0x10000, 0); 37510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt16(-0x8001, 0x7FFF); 37610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 37710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint16(0x10000, 0); 37810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint16(0x100000, 0); 37910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint16(-0x8000, 0x8000); 38010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint16(-1, 0xFFFF); 38110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint16(-0xFFFF, 1); 38210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 38310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt32(0x80000000, -0x80000000); 38410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt32(0x100000000, 0); 38510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeInt32(-0x80000001, 0x7FFFFFFF); 38610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 38710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint32(0x100000000, 0); 38810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint32(0x1000000000, 0); 38910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint32(-0x80000000, 0x80000000); 39010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint32(-1, 0xFFFFFFFF); 39110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org CheckOutOfRangeUint32(-0xFFFFFFFF, 1); 39210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} 39310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 39410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgTestOutOfRange(); 39510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 3961510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgfunction TestGeneralAccessors() { 3971510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var a = new DataView(new ArrayBuffer(256)); 3981510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org function CheckAccessor(name) { 3991510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org var f = a[name]; 400169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org assertThrows(function() { f(); }, TypeError); 4011510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org f.call(a, 0, 0); // should not throw 4021510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org assertThrows(function() { f.call({}, 0, 0); }, TypeError); 403169691d93a961c8b511f8ac8fd8ee33d081ca10fdanno@chromium.org assertThrows(function() { f.call(a); }, TypeError); 404fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org if (name.indexOf("set") == 0) { 405fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { f.call(a, 1); }, TypeError); 406fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } else { 407fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org f.call(a, 1); // should not throw 408fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } 4091510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org } 4101510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getUint8"); 4111510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setUint8"); 4121510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getInt8"); 4131510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setInt8"); 4141510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getUint16"); 4151510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setUint16"); 4161510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getInt16"); 4171510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setInt16"); 4181510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getUint32"); 4191510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setUint32"); 4201510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getInt32"); 4211510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setInt32"); 4221510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getFloat32"); 4231510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setFloat32"); 4241510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("getFloat64"); 4251510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org CheckAccessor("setFloat64"); 4261510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org} 4271510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.org 4281510d58cbcf57c82a10e7d390bfe21a7ae68ba43mstarzinger@chromium.orgTestGeneralAccessors(); 429fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 430fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgfunction TestInsufficientArguments() { 431fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org var a = new DataView(new ArrayBuffer(256)); 432fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 433fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getUint8(); }, TypeError); 434fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getInt8(); }, TypeError); 435fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getUint16(); }, TypeError); 436fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getInt16(); }, TypeError); 437fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getUint32(); }, TypeError); 438fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getInt32(); }, TypeError); 439fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getFloat32(); }, TypeError); 440fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.getFloat64(); }, TypeError); 441fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 442fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint8(); }, TypeError); 443fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt8(); }, TypeError); 444fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint16(); }, TypeError); 445fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt16(); }, TypeError); 446fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint32(); }, TypeError); 447fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt32(); }, TypeError); 448fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setFloat32(); }, TypeError); 449fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setFloat64(); }, TypeError); 450fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 451fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint8(1) }, TypeError); 452fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt8(1) }, TypeError); 453fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint16(1) }, TypeError); 454fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt16(1) }, TypeError); 455fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setUint32(1) }, TypeError); 456fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setInt32(1) }, TypeError); 457fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setFloat32(1) }, TypeError); 458fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org assertThrows(function() { a.setFloat64(1) }, TypeError); 459fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} 460fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 461fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgTestInsufficientArguments(); 462