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

Side by Side Diff: test/mjsunit/harmony/typedarrays.js

Issue 19562002: Add BYTES_PER_ELEMENT property to constructors of typed arrays. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « src/typedarray.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 TestSlice(10, 100, 0.01, 10.96); 110 TestSlice(10, 100, 0.01, 10.96);
111 111
112 TestSlice(10, 100, 90); 112 TestSlice(10, 100, 90);
113 TestSlice(10, 100, -10); 113 TestSlice(10, 100, -10);
114 } 114 }
115 115
116 TestArrayBufferSlice(); 116 TestArrayBufferSlice();
117 117
118 // Typed arrays 118 // Typed arrays
119 119
120 function TestTypedArray(proto, elementSize, typicalElement) { 120 function TestTypedArray(constr, elementSize, typicalElement) {
121 assertSame(elementSize, constr.BYTES_PER_ELEMENT);
122
121 var ab = new ArrayBuffer(256*elementSize); 123 var ab = new ArrayBuffer(256*elementSize);
122 124
123 var a0 = new proto(30); 125 var a0 = new constr(30);
124 assertSame(elementSize, a0.BYTES_PER_ELEMENT); 126 assertSame(elementSize, a0.BYTES_PER_ELEMENT);
125 assertSame(30, a0.length); 127 assertSame(30, a0.length);
126 assertSame(30*elementSize, a0.byteLength); 128 assertSame(30*elementSize, a0.byteLength);
127 assertSame(0, a0.byteOffset); 129 assertSame(0, a0.byteOffset);
128 assertSame(30*elementSize, a0.buffer.byteLength); 130 assertSame(30*elementSize, a0.buffer.byteLength);
129 131
130 var aLen0 = new proto(0); 132 var aLen0 = new constr(0);
131 assertSame(elementSize, aLen0.BYTES_PER_ELEMENT); 133 assertSame(elementSize, aLen0.BYTES_PER_ELEMENT);
132 assertSame(0, aLen0.length); 134 assertSame(0, aLen0.length);
133 assertSame(0, aLen0.byteLength); 135 assertSame(0, aLen0.byteLength);
134 assertSame(0, aLen0.byteOffset); 136 assertSame(0, aLen0.byteOffset);
135 assertSame(0, aLen0.buffer.byteLength); 137 assertSame(0, aLen0.buffer.byteLength);
136 138
137 var aOverBufferLen0 = new proto(ab, 128*elementSize, 0); 139 var aOverBufferLen0 = new constr(ab, 128*elementSize, 0);
138 assertSame(ab, aOverBufferLen0.buffer); 140 assertSame(ab, aOverBufferLen0.buffer);
139 assertSame(elementSize, aOverBufferLen0.BYTES_PER_ELEMENT); 141 assertSame(elementSize, aOverBufferLen0.BYTES_PER_ELEMENT);
140 assertSame(0, aOverBufferLen0.length); 142 assertSame(0, aOverBufferLen0.length);
141 assertSame(0, aOverBufferLen0.byteLength); 143 assertSame(0, aOverBufferLen0.byteLength);
142 assertSame(128*elementSize, aOverBufferLen0.byteOffset); 144 assertSame(128*elementSize, aOverBufferLen0.byteOffset);
143 145
144 var a1 = new proto(ab, 128*elementSize, 128); 146 var a1 = new constr(ab, 128*elementSize, 128);
145 assertSame(ab, a1.buffer); 147 assertSame(ab, a1.buffer);
146 assertSame(elementSize, a1.BYTES_PER_ELEMENT); 148 assertSame(elementSize, a1.BYTES_PER_ELEMENT);
147 assertSame(128, a1.length); 149 assertSame(128, a1.length);
148 assertSame(128*elementSize, a1.byteLength); 150 assertSame(128*elementSize, a1.byteLength);
149 assertSame(128*elementSize, a1.byteOffset); 151 assertSame(128*elementSize, a1.byteOffset);
150 152
151 153
152 var a2 = new proto(ab, 64*elementSize, 128); 154 var a2 = new constr(ab, 64*elementSize, 128);
153 assertSame(ab, a2.buffer); 155 assertSame(ab, a2.buffer);
154 assertSame(elementSize, a2.BYTES_PER_ELEMENT); 156 assertSame(elementSize, a2.BYTES_PER_ELEMENT);
155 assertSame(128, a2.length); 157 assertSame(128, a2.length);
156 assertSame(128*elementSize, a2.byteLength); 158 assertSame(128*elementSize, a2.byteLength);
157 assertSame(64*elementSize, a2.byteOffset); 159 assertSame(64*elementSize, a2.byteOffset);
158 160
159 var a3 = new proto(ab, 192*elementSize); 161 var a3 = new constr(ab, 192*elementSize);
160 assertSame(ab, a3.buffer); 162 assertSame(ab, a3.buffer);
161 assertSame(64, a3.length); 163 assertSame(64, a3.length);
162 assertSame(64*elementSize, a3.byteLength); 164 assertSame(64*elementSize, a3.byteLength);
163 assertSame(192*elementSize, a3.byteOffset); 165 assertSame(192*elementSize, a3.byteOffset);
164 166
165 var a4 = new proto(ab); 167 var a4 = new constr(ab);
166 assertSame(ab, a4.buffer); 168 assertSame(ab, a4.buffer);
167 assertSame(256, a4.length); 169 assertSame(256, a4.length);
168 assertSame(256*elementSize, a4.byteLength); 170 assertSame(256*elementSize, a4.byteLength);
169 assertSame(0, a4.byteOffset); 171 assertSame(0, a4.byteOffset);
170 172
171 173
172 var i; 174 var i;
173 for (i = 0; i < 128; i++) { 175 for (i = 0; i < 128; i++) {
174 a1[i] = typicalElement; 176 a1[i] = typicalElement;
175 } 177 }
(...skipping 15 matching lines...) Expand all
191 } 193 }
192 194
193 for (i = 0; i < 128; i++) { 195 for (i = 0; i < 128; i++) {
194 assertSame(0, a4[i]); 196 assertSame(0, a4[i]);
195 } 197 }
196 198
197 for (i = 128; i < 256; i++) { 199 for (i = 128; i < 256; i++) {
198 assertSame(typicalElement, a4[i]); 200 assertSame(typicalElement, a4[i]);
199 } 201 }
200 202
201 var aAtTheEnd = new proto(ab, 256*elementSize); 203 var aAtTheEnd = new constr(ab, 256*elementSize);
202 assertSame(elementSize, aAtTheEnd.BYTES_PER_ELEMENT); 204 assertSame(elementSize, aAtTheEnd.BYTES_PER_ELEMENT);
203 assertSame(0, aAtTheEnd.length); 205 assertSame(0, aAtTheEnd.length);
204 assertSame(0, aAtTheEnd.byteLength); 206 assertSame(0, aAtTheEnd.byteLength);
205 assertSame(256*elementSize, aAtTheEnd.byteOffset); 207 assertSame(256*elementSize, aAtTheEnd.byteOffset);
206 208
207 assertThrows(function () { new proto(ab, 257*elementSize); }, RangeError); 209 assertThrows(function () { new constr(ab, 257*elementSize); }, RangeError);
208 assertThrows( 210 assertThrows(
209 function () { new proto(ab, 128*elementSize, 192); }, 211 function () { new constr(ab, 128*elementSize, 192); },
210 RangeError); 212 RangeError);
211 213
212 if (elementSize !== 1) { 214 if (elementSize !== 1) {
213 assertThrows(function() { new proto(ab, 128*elementSize - 1, 10); }, 215 assertThrows(function() { new constr(ab, 128*elementSize - 1, 10); },
214 RangeError); 216 RangeError);
215 var unalignedArrayBuffer = new ArrayBuffer(10*elementSize + 1); 217 var unalignedArrayBuffer = new ArrayBuffer(10*elementSize + 1);
216 var goodArray = new proto(unalignedArrayBuffer, 0, 10); 218 var goodArray = new constr(unalignedArrayBuffer, 0, 10);
217 assertSame(10, goodArray.length); 219 assertSame(10, goodArray.length);
218 assertSame(10*elementSize, goodArray.byteLength); 220 assertSame(10*elementSize, goodArray.byteLength);
219 assertThrows(function() { new proto(unalignedArrayBuffer)}, RangeError); 221 assertThrows(function() { new constr(unalignedArrayBuffer)}, RangeError);
220 assertThrows(function() { new proto(unalignedArrayBuffer, 5*elementSize)}, 222 assertThrows(function() { new constr(unalignedArrayBuffer, 5*elementSize)},
221 RangeError); 223 RangeError);
222 } 224 }
223 225
224 var aFromString = new proto("30"); 226 var aFromString = new constr("30");
225 assertSame(elementSize, aFromString.BYTES_PER_ELEMENT); 227 assertSame(elementSize, aFromString.BYTES_PER_ELEMENT);
226 assertSame(30, aFromString.length); 228 assertSame(30, aFromString.length);
227 assertSame(30*elementSize, aFromString.byteLength); 229 assertSame(30*elementSize, aFromString.byteLength);
228 assertSame(0, aFromString.byteOffset); 230 assertSame(0, aFromString.byteOffset);
229 assertSame(30*elementSize, aFromString.buffer.byteLength); 231 assertSame(30*elementSize, aFromString.buffer.byteLength);
230 232
231 var jsArray = []; 233 var jsArray = [];
232 for (i = 0; i < 30; i++) { 234 for (i = 0; i < 30; i++) {
233 jsArray.push(typicalElement); 235 jsArray.push(typicalElement);
234 } 236 }
235 var aFromArray = new proto(jsArray); 237 var aFromArray = new constr(jsArray);
236 assertSame(elementSize, aFromArray.BYTES_PER_ELEMENT); 238 assertSame(elementSize, aFromArray.BYTES_PER_ELEMENT);
237 assertSame(30, aFromArray.length); 239 assertSame(30, aFromArray.length);
238 assertSame(30*elementSize, aFromArray.byteLength); 240 assertSame(30*elementSize, aFromArray.byteLength);
239 assertSame(0, aFromArray.byteOffset); 241 assertSame(0, aFromArray.byteOffset);
240 assertSame(30*elementSize, aFromArray.buffer.byteLength); 242 assertSame(30*elementSize, aFromArray.buffer.byteLength);
241 for (i = 0; i < 30; i++) { 243 for (i = 0; i < 30; i++) {
242 assertSame(typicalElement, aFromArray[i]); 244 assertSame(typicalElement, aFromArray[i]);
243 } 245 }
244 246
245 var abLen0 = new ArrayBuffer(0); 247 var abLen0 = new ArrayBuffer(0);
246 var aOverAbLen0 = new proto(abLen0); 248 var aOverAbLen0 = new constr(abLen0);
247 assertSame(abLen0, aOverAbLen0.buffer); 249 assertSame(abLen0, aOverAbLen0.buffer);
248 assertSame(elementSize, aOverAbLen0.BYTES_PER_ELEMENT); 250 assertSame(elementSize, aOverAbLen0.BYTES_PER_ELEMENT);
249 assertSame(0, aOverAbLen0.length); 251 assertSame(0, aOverAbLen0.length);
250 assertSame(0, aOverAbLen0.byteLength); 252 assertSame(0, aOverAbLen0.byteLength);
251 assertSame(0, aOverAbLen0.byteOffset); 253 assertSame(0, aOverAbLen0.byteOffset);
252 254
253 var aNoParam = new proto(); 255 var aNoParam = new constr();
254 assertSame(elementSize, aNoParam.BYTES_PER_ELEMENT); 256 assertSame(elementSize, aNoParam.BYTES_PER_ELEMENT);
255 assertSame(0, aNoParam.length); 257 assertSame(0, aNoParam.length);
256 assertSame(0, aNoParam.byteLength); 258 assertSame(0, aNoParam.byteLength);
257 assertSame(0, aNoParam.byteOffset); 259 assertSame(0, aNoParam.byteOffset);
258 } 260 }
259 261
260 TestTypedArray(Uint8Array, 1, 0xFF); 262 TestTypedArray(Uint8Array, 1, 0xFF);
261 TestTypedArray(Int8Array, 1, -0x7F); 263 TestTypedArray(Int8Array, 1, -0x7F);
262 TestTypedArray(Uint16Array, 2, 0xFFFF); 264 TestTypedArray(Uint16Array, 2, 0xFFFF);
263 TestTypedArray(Int16Array, 2, -0x7FFF); 265 TestTypedArray(Int16Array, 2, -0x7FFF);
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
571 TestArbitrary(new ArrayBuffer(256)); 573 TestArbitrary(new ArrayBuffer(256));
572 for(i = 0; i < typedArrayConstructors.lenght; i++) { 574 for(i = 0; i < typedArrayConstructors.lenght; i++) {
573 TestArbitary(new typedArrayConstructors[i](10)); 575 TestArbitary(new typedArrayConstructors[i](10));
574 } 576 }
575 TestArbitrary(new DataView(new ArrayBuffer(256))); 577 TestArbitrary(new DataView(new ArrayBuffer(256)));
576 578
577 579
578 // Test direct constructor call 580 // Test direct constructor call
579 assertThrows(function() { ArrayBuffer(); }, TypeError); 581 assertThrows(function() { ArrayBuffer(); }, TypeError);
580 assertThrows(function() { DataView(new ArrayBuffer()); }, TypeError); 582 assertThrows(function() { DataView(new ArrayBuffer()); }, TypeError);
OLDNEW
« no previous file with comments | « src/typedarray.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698