Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(190)

Unified Diff: test/mjsunit/harmony/dataview.js

Issue 15943002: v8 typed arrays: add DataView type (Closed)
Patch Set: v8 typed arrays: add DataView type, v2 Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/utils.h ('K') | « test/cctest/test-api.cc ('k') | tools/gyp/v8.gyp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/dataview.js
diff --git a/test/mjsunit/harmony/dataview.js b/test/mjsunit/harmony/dataview.js
new file mode 100644
index 0000000000000000000000000000000000000000..c1bcf4583b3078c3e25eb8fb0c1277edafaa0efe
--- /dev/null
+++ b/test/mjsunit/harmony/dataview.js
@@ -0,0 +1,159 @@
+// Copyright 2013 the V8 project authors. All rights reserved.
Dmitry Lomov (no reviews) 2013/06/03 13:09:04 This needs way more tests, including calling const
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following
+// disclaimer in the documentation and/or other materials provided
+// with the distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived
+// from this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Flags: --allow-natives-syntax --harmony-typed-arrays
+
+assertThrows("DataView()", TypeError);
Dmitry Lomov (no reviews) 2013/06/03 13:09:04 Please do not use string version of assertThrows,
bnoordhuis 2013/06/03 13:48:12 Will do. Out of curiosity, is it a style thing or
Dmitry Lomov (no reviews) 2013/06/03 14:42:49 This is stylistic. Friends do not allow friends us
+assertThrows("DataView({})", TypeError);
+
+var view = DataView(ArrayBuffer(8));
+assertEquals(0, view.byteOffset);
+assertEquals(8, view.byteLength);
+
+view = DataView(ArrayBuffer(24), 16);
+assertEquals(16, view.byteOffset);
+assertEquals(8, view.byteLength);
+
+view = DataView(ArrayBuffer(32), 16, 8);
+assertEquals(16, view.byteOffset);
+assertEquals(8, view.byteLength);
+
+view = DataView(ArrayBuffer(8));
+assertEquals(0, view.getInt8(7));
+assertEquals(0, view.getUint8(7));
+assertEquals(0, view.getInt16(6));
+assertEquals(0, view.getUint16(6));
+assertEquals(0, view.getInt32(4));
+assertEquals(0, view.getUint32(4));
+assertEquals(0, view.getFloat32(4));
+assertEquals(0, view.getFloat64(0));
+
+assertThrows("view.getInt8()", TypeError);
+assertThrows("view.getUint8()", TypeError);
+assertThrows("view.getInt16()", TypeError);
+assertThrows("view.getUint16()", TypeError);
+assertThrows("view.getInt32()", TypeError);
+assertThrows("view.getUint32()", TypeError);
+assertThrows("view.getFloat32()", TypeError);
+assertThrows("view.getFloat64()", TypeError);
+
+assertThrows("view.getInt8(-1)", RangeError);
+assertThrows("view.getUint8(-1)", RangeError);
+assertThrows("view.getInt16(-1)", RangeError);
+assertThrows("view.getUint16(-1)", RangeError);
+assertThrows("view.getInt32(-1)", RangeError);
+assertThrows("view.getUint32(-1)", RangeError);
+assertThrows("view.getFloat32(-1)", RangeError);
+assertThrows("view.getFloat64(-1)", RangeError);
+
+assertThrows("view.getInt8(8)", RangeError);
+assertThrows("view.getUint8(8)", RangeError);
+assertThrows("view.getInt16(7)", RangeError);
+assertThrows("view.getUint16(7)", RangeError);
+assertThrows("view.getInt32(5)", RangeError);
+assertThrows("view.getUint32(5)", RangeError);
+assertThrows("view.getFloat32(5)", RangeError);
+assertThrows("view.getFloat64(1)", RangeError);
+
+view.setInt8(7, 0x12);
+view.setUint8(7, 0x12);
+view.setInt16(6, 0x1234);
+view.setUint8(6, 0x1234);
+view.setInt32(4, 0x12345678);
+view.setUint32(4, 0x12345678);
+view.setFloat32(4, 0x12345678);
+view.setFloat64(0, 0x1234567890abcdef);
+assertEquals(view.getFloat64(0), 0x1234567890abcdef);
+
+assertThrows("view.setInt8()", TypeError);
+assertThrows("view.setUint8()", TypeError);
+assertThrows("view.setInt16()", TypeError);
+assertThrows("view.setUint16()", TypeError);
+assertThrows("view.setInt32()", TypeError);
+assertThrows("view.setUint32()", TypeError);
+assertThrows("view.setFloat32()", TypeError);
+assertThrows("view.setFloat64()", TypeError);
+
+assertThrows("view.setInt8(-1)", TypeError);
+assertThrows("view.setUint8(-1)", TypeError);
+assertThrows("view.setInt16(-1)", TypeError);
+assertThrows("view.setUint16(-1)", TypeError);
+assertThrows("view.setInt32(-1)", TypeError);
+assertThrows("view.setUint32(-1)", TypeError);
+assertThrows("view.setFloat32(-1)", TypeError);
+assertThrows("view.setFloat64(-1)", TypeError);
+
+assertThrows("view.setInt8(-1, 0)", RangeError);
+assertThrows("view.setUint8(-1, 0)", RangeError);
+assertThrows("view.setInt16(-1, 0)", RangeError);
+assertThrows("view.setUint16(-1, 0)", RangeError);
+assertThrows("view.setInt32(-1, 0)", RangeError);
+assertThrows("view.setUint32(-1, 0)", RangeError);
+assertThrows("view.setFloat32(-1, 0)", RangeError);
+assertThrows("view.setFloat64(-1, 0)", RangeError);
+
+assertThrows("view.setInt8(8, 0)", RangeError);
+assertThrows("view.setUint8(8, 0)", RangeError);
+assertThrows("view.setInt16(7, 0)", RangeError);
+assertThrows("view.setUint16(7, 0)", RangeError);
+assertThrows("view.setInt32(5, 0)", RangeError);
+assertThrows("view.setUint32(5, 0)", RangeError);
+assertThrows("view.setFloat32(5, 0)", RangeError);
+assertThrows("view.setFloat64(1, 0)", RangeError);
+
+view.setInt32(0, 0x12345678);
+view.setInt32(4, 0x90abcdef);
+
+assertEquals(0x12, view.getUint8(0));
+assertEquals(0x34, view.getUint8(1));
+assertEquals(0x56, view.getUint8(2));
+assertEquals(0x78, view.getUint8(3));
+assertEquals(0x1234, view.getUint16(0));
+assertEquals(0x5678, view.getUint16(2));
+assertEquals(0x12345678, view.getUint32(0));
+
+view.setFloat32(0, NaN);
+assertTrue(isNaN(view.getFloat32(0)));
+view.setFloat64(0, NaN);
+assertTrue(isNaN(view.getFloat64(0)));
+
+view.setFloat32(0, "bad");
+assertTrue(isNaN(view.getFloat32(0)));
+view.setFloat64(0, "bad");
+assertTrue(isNaN(view.getFloat64(0)));
+
+for (var i = 0; i < view.byteLength; ++i) view.setUint8(i, i);
+assertEquals(0, view.getUint8(+Infinity));
+assertEquals(0, view.getUint8(-Infinity));
+assertEquals(0, view.getUint8(NaN));
+assertEquals(0, view.getUint8(0.0));
+assertEquals(0, view.getUint8(0.1));
+assertEquals(0, view.getUint8(0.9));
+assertEquals(1, view.getUint8(1.0));
+
+view = DataView(ArrayBuffer(256), 64, 64);
+assertThrows("view.getInt8(128)", RangeError);
« src/utils.h ('K') | « test/cctest/test-api.cc ('k') | tools/gyp/v8.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698