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

Side by Side 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, 6 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 unified diff | Download patch
OLDNEW
(Empty)
1 // 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
2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are
4 // met:
5 //
6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided
11 // with the distribution.
12 // * Neither the name of Google Inc. nor the names of its
13 // contributors may be used to endorse or promote products derived
14 // from this software without specific prior written permission.
15 //
16 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
28 // Flags: --allow-natives-syntax --harmony-typed-arrays
29
30 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
31 assertThrows("DataView({})", TypeError);
32
33 var view = DataView(ArrayBuffer(8));
34 assertEquals(0, view.byteOffset);
35 assertEquals(8, view.byteLength);
36
37 view = DataView(ArrayBuffer(24), 16);
38 assertEquals(16, view.byteOffset);
39 assertEquals(8, view.byteLength);
40
41 view = DataView(ArrayBuffer(32), 16, 8);
42 assertEquals(16, view.byteOffset);
43 assertEquals(8, view.byteLength);
44
45 view = DataView(ArrayBuffer(8));
46 assertEquals(0, view.getInt8(7));
47 assertEquals(0, view.getUint8(7));
48 assertEquals(0, view.getInt16(6));
49 assertEquals(0, view.getUint16(6));
50 assertEquals(0, view.getInt32(4));
51 assertEquals(0, view.getUint32(4));
52 assertEquals(0, view.getFloat32(4));
53 assertEquals(0, view.getFloat64(0));
54
55 assertThrows("view.getInt8()", TypeError);
56 assertThrows("view.getUint8()", TypeError);
57 assertThrows("view.getInt16()", TypeError);
58 assertThrows("view.getUint16()", TypeError);
59 assertThrows("view.getInt32()", TypeError);
60 assertThrows("view.getUint32()", TypeError);
61 assertThrows("view.getFloat32()", TypeError);
62 assertThrows("view.getFloat64()", TypeError);
63
64 assertThrows("view.getInt8(-1)", RangeError);
65 assertThrows("view.getUint8(-1)", RangeError);
66 assertThrows("view.getInt16(-1)", RangeError);
67 assertThrows("view.getUint16(-1)", RangeError);
68 assertThrows("view.getInt32(-1)", RangeError);
69 assertThrows("view.getUint32(-1)", RangeError);
70 assertThrows("view.getFloat32(-1)", RangeError);
71 assertThrows("view.getFloat64(-1)", RangeError);
72
73 assertThrows("view.getInt8(8)", RangeError);
74 assertThrows("view.getUint8(8)", RangeError);
75 assertThrows("view.getInt16(7)", RangeError);
76 assertThrows("view.getUint16(7)", RangeError);
77 assertThrows("view.getInt32(5)", RangeError);
78 assertThrows("view.getUint32(5)", RangeError);
79 assertThrows("view.getFloat32(5)", RangeError);
80 assertThrows("view.getFloat64(1)", RangeError);
81
82 view.setInt8(7, 0x12);
83 view.setUint8(7, 0x12);
84 view.setInt16(6, 0x1234);
85 view.setUint8(6, 0x1234);
86 view.setInt32(4, 0x12345678);
87 view.setUint32(4, 0x12345678);
88 view.setFloat32(4, 0x12345678);
89 view.setFloat64(0, 0x1234567890abcdef);
90 assertEquals(view.getFloat64(0), 0x1234567890abcdef);
91
92 assertThrows("view.setInt8()", TypeError);
93 assertThrows("view.setUint8()", TypeError);
94 assertThrows("view.setInt16()", TypeError);
95 assertThrows("view.setUint16()", TypeError);
96 assertThrows("view.setInt32()", TypeError);
97 assertThrows("view.setUint32()", TypeError);
98 assertThrows("view.setFloat32()", TypeError);
99 assertThrows("view.setFloat64()", TypeError);
100
101 assertThrows("view.setInt8(-1)", TypeError);
102 assertThrows("view.setUint8(-1)", TypeError);
103 assertThrows("view.setInt16(-1)", TypeError);
104 assertThrows("view.setUint16(-1)", TypeError);
105 assertThrows("view.setInt32(-1)", TypeError);
106 assertThrows("view.setUint32(-1)", TypeError);
107 assertThrows("view.setFloat32(-1)", TypeError);
108 assertThrows("view.setFloat64(-1)", TypeError);
109
110 assertThrows("view.setInt8(-1, 0)", RangeError);
111 assertThrows("view.setUint8(-1, 0)", RangeError);
112 assertThrows("view.setInt16(-1, 0)", RangeError);
113 assertThrows("view.setUint16(-1, 0)", RangeError);
114 assertThrows("view.setInt32(-1, 0)", RangeError);
115 assertThrows("view.setUint32(-1, 0)", RangeError);
116 assertThrows("view.setFloat32(-1, 0)", RangeError);
117 assertThrows("view.setFloat64(-1, 0)", RangeError);
118
119 assertThrows("view.setInt8(8, 0)", RangeError);
120 assertThrows("view.setUint8(8, 0)", RangeError);
121 assertThrows("view.setInt16(7, 0)", RangeError);
122 assertThrows("view.setUint16(7, 0)", RangeError);
123 assertThrows("view.setInt32(5, 0)", RangeError);
124 assertThrows("view.setUint32(5, 0)", RangeError);
125 assertThrows("view.setFloat32(5, 0)", RangeError);
126 assertThrows("view.setFloat64(1, 0)", RangeError);
127
128 view.setInt32(0, 0x12345678);
129 view.setInt32(4, 0x90abcdef);
130
131 assertEquals(0x12, view.getUint8(0));
132 assertEquals(0x34, view.getUint8(1));
133 assertEquals(0x56, view.getUint8(2));
134 assertEquals(0x78, view.getUint8(3));
135 assertEquals(0x1234, view.getUint16(0));
136 assertEquals(0x5678, view.getUint16(2));
137 assertEquals(0x12345678, view.getUint32(0));
138
139 view.setFloat32(0, NaN);
140 assertTrue(isNaN(view.getFloat32(0)));
141 view.setFloat64(0, NaN);
142 assertTrue(isNaN(view.getFloat64(0)));
143
144 view.setFloat32(0, "bad");
145 assertTrue(isNaN(view.getFloat32(0)));
146 view.setFloat64(0, "bad");
147 assertTrue(isNaN(view.getFloat64(0)));
148
149 for (var i = 0; i < view.byteLength; ++i) view.setUint8(i, i);
150 assertEquals(0, view.getUint8(+Infinity));
151 assertEquals(0, view.getUint8(-Infinity));
152 assertEquals(0, view.getUint8(NaN));
153 assertEquals(0, view.getUint8(0.0));
154 assertEquals(0, view.getUint8(0.1));
155 assertEquals(0, view.getUint8(0.9));
156 assertEquals(1, view.getUint8(1.0));
157
158 view = DataView(ArrayBuffer(256), 64, 64);
159 assertThrows("view.getInt8(128)", RangeError);
OLDNEW
« 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