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

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

Issue 1128273002: TypedArray.prototype.every method (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: s/ToObject/$toObject/ Created 5 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
« no previous file with comments | « src/harmony-typedarray.js ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/mjsunit/harmony/typedarrays-every.js
diff --git a/test/mjsunit/harmony/typedarrays-foreach.js b/test/mjsunit/harmony/typedarrays-every.js
similarity index 62%
copy from test/mjsunit/harmony/typedarrays-foreach.js
copy to test/mjsunit/harmony/typedarrays-every.js
index 4bfa655449363e50e6817fe0fb38bc3656035a71..3f95ba9d4c0e374b11302dbeb38d4f36ae6b03fb 100644
--- a/test/mjsunit/harmony/typedarrays-foreach.js
+++ b/test/mjsunit/harmony/typedarrays-every.js
@@ -22,39 +22,53 @@ function CheckTypedArrayIsNeutered(array) {
}
function TestTypedArrayForEach(constructor) {
- assertEquals(1, constructor.prototype.forEach.length);
+ assertEquals(1, constructor.prototype.every.length);
- var a = new constructor(2);
+ var a = new constructor(3);
a[0] = 0;
a[1] = 1;
+ a[2] = 2;
- var count = 0;
- a.forEach(function (n) { count++; });
- assertEquals(2, count);
+ var result = a.every(function (n) { return n < 2; });
+ assertFalse(result);
+
+ var result = a.every(function (n) { return n > 2; });
+ assertFalse(result);
+
+ var result = a.every(function (n) { return n >= 0; });
+ assertEquals(true, result);
// 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);
+ result = a.every(function (n, index, array) { return n == index && n < this.value; }, o);
+ assertEquals(true, result);
+
+ // Early exit happens when appropriate
+ count = 0;
+ result = a.every(function () { count++; return false; });
+ assertEquals(1, count);
+ assertFalse(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);
+ result = a.every(function (n, index, array) {
+ array[index] = n + 1; count++; return true;
+ });
+ assertEquals(3, count);
+ assertEquals(true, result);
+ assertArrayEquals([1, 2, 3], 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 () {
+ a.every(function () {
assertEquals("object", typeof this);
assertEquals(wrappedValue, this);
}, value);
- a.forEach(function () {
+ a.every(function () {
"use strict";
assertEquals(typeof value, typeof this);
assertEquals(value, this);
@@ -67,33 +81,19 @@ function TestTypedArrayForEach(constructor) {
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, and the array should keep being
// empty after neutering it.
count = 0;
- a.forEach(function (n, index, array) {
+ a = new constructor(2);
+ result = a.every(function (n, index, array) {
if (count > 0) %ArrayBufferNeuter(array.buffer);
array[index] = n + 1;
count++;
+ return count > 1 ? array[index] === undefined : true;
});
assertEquals(2, count);
+ assertEquals(true, result);
CheckTypedArrayIsNeutered(a);
assertEquals(undefined, a[0]);
@@ -102,35 +102,36 @@ function TestTypedArrayForEach(constructor) {
// all lengths of the typed array items.
a = new constructor(new ArrayBuffer(64));
count = 0;
- a.forEach(function (n) { count++ });
- assertEquals(a.length, count);
+ result = a.every(function (n) { return n == 0; });
+ assertEquals(result, true);
// 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) {
+ a.every(function (n, index, array) {
if (count++ > 0)
buffer = array.buffer;
+ return true;
});
assertEquals(2, count);
assertTrue(!!buffer);
assertEquals("ArrayBuffer", %_ClassOf(buffer));
assertSame(buffer, a.buffer);
- // The %TypedArray%.forEach() method should not work when
+ // The %TypedArray%.every() 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);
+ assertThrows(function () { constructor.prototype.every.call([1, 2, 3], function (x) {}) }, TypeError);
+ assertThrows(function () { constructor.prototype.every.call("abc", function (x) {}) }, TypeError);
+ assertThrows(function () { constructor.prototype.every.call({}, function (x) {}) }, TypeError);
+ assertThrows(function () { constructor.prototype.every.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++ });
+ constructor.prototype.every.call(a, function (x) { count++; return true; });
assertEquals(a.length, count);
}
}
« no previous file with comments | « src/harmony-typedarray.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698