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

Side by Side Diff: test/mjsunit/es6/typedarray-iteration.js

Issue 2778623003: [typedarrays] Check detached buffer at start of typed array methods (Closed)
Patch Set: pass test262 for subarray Created 3 years, 8 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
« no previous file with comments | « test/mjsunit/es6/typedarray-indexing.js ('k') | test/mjsunit/es6/typedarray-reduce.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Tests for standard TypedArray array iteration functions. 5 // Tests for standard TypedArray array iteration functions.
6 6
7 // Flags: --allow-natives-syntax
8
7 var typedArrayConstructors = [ 9 var typedArrayConstructors = [
8 Uint8Array, 10 Uint8Array,
9 Int8Array, 11 Int8Array,
10 Uint16Array, 12 Uint16Array,
11 Int16Array, 13 Int16Array,
12 Uint32Array, 14 Uint32Array,
13 Int32Array, 15 Int32Array,
14 Uint8ClampedArray, 16 Uint8ClampedArray,
15 Float32Array, 17 Float32Array,
16 Float64Array 18 Float64Array
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 assertThrows(function() { 72 assertThrows(function() {
71 constructor.prototype.filter.call([], function() {}); 73 constructor.prototype.filter.call([], function() {});
72 }, TypeError); 74 }, TypeError);
73 75
74 // Shadowing the length property doesn't change anything 76 // Shadowing the length property doesn't change anything
75 a = new constructor([1, 2]); 77 a = new constructor([1, 2]);
76 Object.defineProperty(a, 'length', { value: 1 }); 78 Object.defineProperty(a, 'length', { value: 1 });
77 assertArrayLikeEquals([2], a.filter(function(elt) { 79 assertArrayLikeEquals([2], a.filter(function(elt) {
78 return elt == 2; 80 return elt == 2;
79 }), constructor); 81 }), constructor);
82
83 // Detached Operation
84 var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
85 %ArrayBufferNeuter(array.buffer);
86 assertThrows(() => array.filter(() => false), TypeError);
80 })(); 87 })();
81 88
82 (function TypedArrayMapTest() { 89 (function TypedArrayMapTest() {
83 var a = new constructor([0, 1, 2, 3, 4]); 90 var a = new constructor([0, 1, 2, 3, 4]);
84 91
85 // Simple use. 92 // Simple use.
86 var result = [1, 2, 3, 4, 5]; 93 var result = [1, 2, 3, 4, 5];
87 assertArrayLikeEquals(result, a.map(function(n) { return n + 1; }), 94 assertArrayLikeEquals(result, a.map(function(n) { return n + 1; }),
88 constructor); 95 constructor);
89 assertEquals(a, a); 96 assertEquals(a, a);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
123 130
124 // Test that the result is converted to the right type 131 // Test that the result is converted to the right type
125 assertArrayLikeEquals([3, 3], new constructor([1, 2]).map(function() { 132 assertArrayLikeEquals([3, 3], new constructor([1, 2]).map(function() {
126 return "3"; 133 return "3";
127 }), constructor); 134 }), constructor);
128 if (constructor !== Float32Array && constructor !== Float64Array) { 135 if (constructor !== Float32Array && constructor !== Float64Array) {
129 assertArrayLikeEquals([0, 0], new constructor([1, 2]).map(function() { 136 assertArrayLikeEquals([0, 0], new constructor([1, 2]).map(function() {
130 return NaN; 137 return NaN;
131 }), constructor); 138 }), constructor);
132 } 139 }
140
141 // Detached Operation
142 var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
143 %ArrayBufferNeuter(array.buffer);
144 assertThrows(() => array.map((v) => v), TypeError);
133 })(); 145 })();
134 146
135 // 147 //
136 // %TypedArray%.prototype.some 148 // %TypedArray%.prototype.some
137 // 149 //
138 (function TypedArraySomeTest() { 150 (function TypedArraySomeTest() {
139 var a = new constructor([0, 1, 2, 3, 4]); 151 var a = new constructor([0, 1, 2, 3, 4]);
140 152
141 // Simple use. 153 // Simple use.
142 assertTrue(a.some(function(n) { return n == 3})); 154 assertTrue(a.some(function(n) { return n == 3}));
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
182 constructor.prototype.some.call([], function() {}); 194 constructor.prototype.some.call([], function() {});
183 }, TypeError); 195 }, TypeError);
184 196
185 // Shadowing the length property doesn't change anything 197 // Shadowing the length property doesn't change anything
186 a = new constructor([1, 2]); 198 a = new constructor([1, 2]);
187 Object.defineProperty(a, 'length', { value: 1 }); 199 Object.defineProperty(a, 'length', { value: 1 });
188 assertEquals(true, a.some(function(elt) { return elt == 2; })); 200 assertEquals(true, a.some(function(elt) { return elt == 2; }));
189 assertEquals(false, Array.prototype.some.call(a, function(elt) { 201 assertEquals(false, Array.prototype.some.call(a, function(elt) {
190 return elt == 2; 202 return elt == 2;
191 })); 203 }));
204
205 // Detached Operation
206 var array = new constructor([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
207 %ArrayBufferNeuter(array.buffer);
208 assertThrows(() => array.some((v) => false), TypeError);
192 })(); 209 })();
193 210
194 } 211 }
OLDNEW
« no previous file with comments | « test/mjsunit/es6/typedarray-indexing.js ('k') | test/mjsunit/es6/typedarray-reduce.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698