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

Unified Diff: test/mjsunit/harmony/typedarrays-foreach.js

Issue 1215863003: Include Harmony Array/TypedArray methods unconditionally (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: remove the flag and move the tests Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/mjsunit/harmony/typedarrays-every.js ('k') | test/mjsunit/harmony/typedarrays-of.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/typedarrays-foreach.js
diff --git a/test/mjsunit/harmony/typedarrays-foreach.js b/test/mjsunit/harmony/typedarrays-foreach.js
deleted file mode 100644
index e1d375da1a08c9e5730436492f89fdc761db791e..0000000000000000000000000000000000000000
--- a/test/mjsunit/harmony/typedarrays-foreach.js
+++ /dev/null
@@ -1,155 +0,0 @@
-// Copyright 2014 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Flags: --harmony-arrays --allow-natives-syntax
-
-var typedArrayConstructors = [
- Uint8Array,
- Int8Array,
- Uint16Array,
- Int16Array,
- Uint32Array,
- Int32Array,
- Uint8ClampedArray,
- Float32Array,
- Float64Array];
-
-function CheckTypedArrayIsNeutered(array) {
- assertEquals(0, array.byteLength);
- assertEquals(0, array.byteOffset);
- assertEquals(0, array.length);
-}
-
-function TestTypedArrayForEach(constructor) {
- assertEquals(1, constructor.prototype.forEach.length);
-
- var a = new constructor(2);
- a[0] = 0;
- a[1] = 1;
-
- var count = 0;
- a.forEach(function (n) { count++; });
- assertEquals(2, count);
-
- // Use specified object as this object when calling the function.
- var o = { value: 42 };
- var result = [];
- a.forEach(function (n, index, array) { result.push(this.value); }, o);
- assertArrayEquals([42, 42], result);
-
- // Modify the original array.
- count = 0;
- a.forEach(function (n, index, array) { array[index] = n + 1; count++ });
- assertEquals(2, count);
- assertArrayEquals([1, 2], a);
-
- // Check that values passed as second argument are wrapped into
- // objects when calling into sloppy mode functions.
- function CheckWrapping(value, wrapper) {
- var wrappedValue = new wrapper(value);
-
- a.forEach(function () {
- assertEquals("object", typeof this);
- assertEquals(wrappedValue, this);
- }, value);
-
- a.forEach(function () {
- "use strict";
- assertEquals(typeof value, typeof this);
- assertEquals(value, this);
- }, value);
- }
- CheckWrapping(true, Boolean);
- CheckWrapping(false, Boolean);
- CheckWrapping("xxx", String);
- CheckWrapping(42, Number);
- CheckWrapping(3.14, Number);
- CheckWrapping({}, Object);
-
- // Throw before completing iteration, only the first element
- // should be modified when thorwing mid-way.
- count = 0;
- a[0] = 42;
- a[1] = 42;
- try {
- a.forEach(function (n, index, array) {
- if (count > 0) throw "meh";
- array[index] = n + 1;
- count++;
- });
- } catch (e) {
- }
- assertEquals(1, count);
- assertEquals(43, a[0]);
- assertEquals(42, a[1]);
-
- // Neutering the buffer backing the typed array mid-way should
- // still make .forEach() finish, but exiting early due to the missing
- // elements, and the array should keep being empty after detaching it.
- // TODO(dehrenberg): According to the ES6 spec, accessing or testing
- // for members on a detached TypedArray should throw, so really this
- // should throw in the third iteration. However, this behavior matches
- // the Khronos spec.
- a = new constructor(3);
- count = 0;
- a.forEach(function (n, index, array) {
- if (count > 0) %ArrayBufferNeuter(array.buffer);
- array[index] = n + 1;
- count++;
- });
- assertEquals(2, count);
- CheckTypedArrayIsNeutered(a);
- assertEquals(undefined, a[0]);
-
- // The method must work for typed arrays created from ArrayBuffer.
- // The length of the ArrayBuffer is chosen so it is a multiple of
- // all lengths of the typed array items.
- a = new constructor(new ArrayBuffer(64));
- count = 0;
- a.forEach(function (n) { count++ });
- assertEquals(a.length, count);
-
- // Externalizing the array mid-way accessing the .buffer property
- // should work.
- a = new constructor(2);
- count = 0;
- var buffer = undefined;
- a.forEach(function (n, index, array) {
- if (count++ > 0)
- buffer = array.buffer;
- });
- assertEquals(2, count);
- assertTrue(!!buffer);
- assertEquals("ArrayBuffer", %_ClassOf(buffer));
- assertSame(buffer, a.buffer);
-
- // The %TypedArray%.forEach() method should not work when
- // transplanted to objects that are not typed arrays.
- assertThrows(function () { constructor.prototype.forEach.call([1, 2, 3], function (x) {}) }, TypeError);
- assertThrows(function () { constructor.prototype.forEach.call("abc", function (x) {}) }, TypeError);
- assertThrows(function () { constructor.prototype.forEach.call({}, function (x) {}) }, TypeError);
- assertThrows(function () { constructor.prototype.forEach.call(0, function (x) {}) }, TypeError);
-
- // Method must be useable on instances of other typed arrays.
- for (var i = 0; i < typedArrayConstructors.length; i++) {
- count = 0;
- a = new typedArrayConstructors[i](4);
- constructor.prototype.forEach.call(a, function (x) { count++ });
- assertEquals(a.length, count);
- }
-
- // Shadowing length doesn't affect forEach, unlike Array.prototype.forEach
- a = new constructor([1, 2]);
- Object.defineProperty(a, 'length', {value: 1});
- var x = 0;
- assertEquals(a.forEach(function(elt) { x += elt; }), undefined);
- assertEquals(x, 3);
- assertEquals(Array.prototype.forEach.call(a,
- function(elt) { x += elt; }), undefined);
- assertEquals(x, 4);
-}
-
-for (i = 0; i < typedArrayConstructors.length; i++) {
- TestTypedArrayForEach(typedArrayConstructors[i]);
-}
« no previous file with comments | « test/mjsunit/harmony/typedarrays-every.js ('k') | test/mjsunit/harmony/typedarrays-of.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698