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

Unified Diff: test/mjsunit/harmony/array-copywithin.js

Issue 1084183004: Revert of [es6] implement Array.prototype.copyWithin() (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/harmony-array.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/array-copywithin.js
diff --git a/test/mjsunit/harmony/array-copywithin.js b/test/mjsunit/harmony/array-copywithin.js
deleted file mode 100644
index c3a0c14663bf29113d463577d565157ef0cdb415..0000000000000000000000000000000000000000
--- a/test/mjsunit/harmony/array-copywithin.js
+++ /dev/null
@@ -1,338 +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
-
-(function copyWithinArity() {
- assertEquals(Array.prototype.copyWithin.length, 2);
-})();
-
-
-(function copyWithinTargetAndStart() {
- // works with two arguemnts
- assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3));
- assertArrayEquals([1, 4, 5, 4, 5], [1, 2, 3, 4, 5].copyWithin(1, 3));
- assertArrayEquals([1, 3, 4, 5, 5], [1, 2, 3, 4, 5].copyWithin(1, 2));
- assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(2, 2));
-})();
-
-
-(function copyWithinTargetStartAndEnd() {
- // works with three arguments
- assertArrayEquals([1, 2, 3, 4, 5].copyWithin(0, 3, 4), [4, 2, 3, 4, 5]);
- assertArrayEquals([1, 2, 3, 4, 5].copyWithin(1, 3, 4), [1, 4, 3, 4, 5]);
- assertArrayEquals([1, 2, 3, 4, 5].copyWithin(1, 2, 4), [1, 3, 4, 4, 5]);
-})();
-
-
-(function copyWithinNegativeRelativeOffsets() {
- // works with negative arguments
- assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, -2));
- assertArrayEquals([4, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, -2, -1));
- assertArrayEquals([1, 3, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3, -2));
- assertArrayEquals([1, 3, 4, 4, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3, -1));
- assertArrayEquals([1, 3, 4, 5, 5], [1, 2, 3, 4, 5].copyWithin(-4, -3));
- // test with arguments equal to -this.length
- assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-5, 0));
-})();
-
-
-(function copyWithinArrayLikeValues() {
- // works with array-like values
- var args = (function () { return arguments; }(1, 2, 3));
- Array.prototype.copyWithin.call(args, -2, 0);
- assertArrayEquals([1, 1, 2], Array.prototype.slice.call(args));
-
- // [[Class]] does not change
- assertArrayEquals("[object Arguments]", Object.prototype.toString.call(args));
-})();
-
-
-(function copyWithinNullThis() {
- // throws on null/undefined values
- assertThrows(function() {
- return Array.prototype.copyWithin.call(null, 0, 3);
- }, TypeError);
-})();
-
-
-(function copyWithinUndefinedThis() {
- assertThrows(function() {
- return Array.prototype.copyWithin.call(undefined, 0, 3);
- }, TypeError);
-})();
-
-
-// TODO(caitp): indexed properties of String are read-only and setting them
-// should throw in strict mode. See bug v8:4042
-// (function copyWithinStringThis() {
-// // test with this value as string
-// assertThrows(function() {
-// return Array.prototype.copyWithin.call("hello world", 0, 3);
-// }, TypeError);
-// })();
-
-
-(function copyWithinNumberThis() {
- // test with this value as number
- assertEquals(34, Array.prototype.copyWithin.call(34, 0, 3).valueOf());
-})();
-
-
-(function copyWithinSymbolThis() {
- // test with this value as number
- var sym = Symbol("test");
- assertEquals(sym, Array.prototype.copyWithin.call(sym, 0, 3).valueOf());
-})();
-
-
-(function copyyWithinTypedArray() {
- // test with this value as TypedArray
- var buffer = new ArrayBuffer(16);
- var int32View = new Int32Array(buffer);
- for (var i=0; i<int32View.length; i++) {
- int32View[i] = i*2;
- }
- assertArrayEquals(new Int32Array([2, 4, 6, 6]),
- Array.prototype.copyWithin.call(int32View, 0, 1));
-})();
-
-
-(function copyWithinSloppyArguments() {
- // if arguments object is sloppy, copyWithin must move the arguments around
- function f(a, b, c, d, e) {
- [].copyWithin.call(arguments, 1, 3);
- return [a, b, c, d, e];
- }
- assertArrayEquals([1, 4, 5, 4, 5], f(1, 2, 3, 4, 5));
-})();
-
-
-(function copyWithinStartLessThanTarget() {
- // test with target > start on 2 arguments
- assertArrayEquals([1, 2, 3, 1, 2], [1, 2, 3, 4, 5].copyWithin(3, 0));
-
- // test with target > start on 3 arguments
- assertArrayEquals([1, 2, 3, 1, 2], [1, 2, 3, 4, 5].copyWithin(3, 0, 4));
-})();
-
-
-(function copyWithinArrayWithHoles() {
- // test on array with holes
- var arr = new Array(6);
- for (var i = 0; i < arr.length; i += 2) {
- arr[i] = i;
- }
- assertArrayEquals([, 4, , , 4, , ], arr.copyWithin(0, 3));
-})();
-
-
-(function copyWithinArrayLikeWithHoles() {
- // test on array-like object with holes
- assertArrayEquals({
- length: 6,
- 1: 4,
- 4: 4
- }, Array.prototype.copyWithin.call({
- length: 6,
- 0: 0,
- 2: 2,
- 4: 4
- }, 0, 3));
-})();
-
-
-(function copyWithinNonIntegerRelativeOffsets() {
- // test on fractional arguments
- assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0.2, 3.9));
-})();
-
-
-(function copyWithinNegativeZeroTarget() {
- // test with -0
- assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-0, 3));
-})();
-
-
-(function copyWithinTargetOutsideStart() {
- // test with arguments more than this.length
- assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 7));
-
- // test with arguments less than -this.length
- assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(-7, 0));
-})();
-
-
-(function copyWithinEmptyArray() {
- // test on empty array
- assertArrayEquals([], [].copyWithin(0, 3));
-})();
-
-
-(function copyWithinTargetCutOff() {
- // test with target range being shorter than end - start
- assertArrayEquals([1, 2, 2, 3, 4], [1, 2, 3, 4, 5].copyWithin(2, 1, 4));
-})();
-
-
-(function copyWithinOverlappingRanges() {
- // test overlapping ranges
- var arr = [1, 2, 3, 4, 5];
- arr.copyWithin(2, 1, 4);
- assertArrayEquals([1, 2, 2, 2, 3], arr.copyWithin(2, 1, 4));
-})();
-
-
-(function copyWithinStrictDelete() {
- // check that [[Delete]] is strict (non-extensible via freeze)
- assertThrows(function() {
- return Object.freeze([1, , 3, , 4, 5]).copyWithin(2, 1, 4);
- }, TypeError);
-
- // check that [[Delete]] is strict (non-extensible via seal)
- assertThrows(function() {
- return Object.seal([1, , 3, , 4, 5]).copyWithin(2, 1, 4);
- }, TypeError);
-
- // check that [[Delete]] is strict (non-extensible via preventExtensions)
- assertThrows(function() {
- return Object.preventExtensions([1, , 3, , 4, 5]).copyWithin(2, 1, 4);
- }, TypeError);
-})();
-
-
-(function copyWithinStrictSet() {
- // check that [[Set]] is strict (non-extensible via freeze)
- assertThrows(function() {
- return Object.freeze([1, 2, 3, 4, 5]).copyWithin(0, 3);
- }, TypeError);
-
- // check that [[Set]] is strict (non-extensible via seal)
- assertThrows(function() {
- return Object.seal([, 2, 3, 4, 5]).copyWithin(0, 3);
- }, TypeError);
-
- // check that [[Set]] is strict (non-extensible via preventExtensions)
- assertThrows(function() {
- return Object.preventExtensions([ , 2, 3, 4, 5]).copyWithin(0, 3);
- }, TypeError);
-})();
-
-
-(function copyWithinSetterThrows() {
- function Boom() {}
- // test if we throw in between
- var arr = Object.defineProperty([1, 2, 3, 4, 5], 1, {
- set: function () {
- throw new Boom();
- }
- });
-
- assertThrows(function() {
- return arr.copyWithin(1, 3);
- }, Boom);
-
- assertArrayEquals([1, , 3, 4, 5], arr);
-})();
-
-
-(function copyWithinDefaultEnd() {
- // undefined as third argument
- assertArrayEquals(
- [4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3, undefined));
-})();
-
-
-(function copyWithinGetLengthOnce() {
- // test that this.length is called only once
- var count = 0;
- var arr = Object.defineProperty({ 0: 1, 1: 2, 2: 3, 3: 4, 4: 5 }, "length", {
- get: function () {
- count++;
- return 5;
- }
- });
- Array.prototype.copyWithin.call(arr, 1, 3);
- assertEquals(1, count);
-
- Array.prototype.copyWithin.call(arr, 1, 3, 4);
- assertEquals(2, count);
-})();
-
-
-(function copyWithinLargeArray() {
- var large = 10000;
-
- // test on a large array
- var arr = new Array(large);
- assertArrayEquals(arr, arr.copyWithin(45, 9000));
-
- var expected = new Array(large);
- // test on floating point numbers
- for (var i = 0; i < large; i++) {
- arr[i] = Math.random();
- expected[i] = arr[i];
- if (i >= 9000) {
- expected[(i - 9000) + 45] = arr[i];
- }
- }
- assertArrayEquals(expected, arr.copyWithin(45, 9000));
-
- // test on array of objects
- for (var i = 0; i < large; i++) {
- arr[i] = { num: Math.random() };
- } + 45
- arr.copyWithin(45, 9000);
-
- // test copied by reference
- for (var i = 9000; i < large; ++i) {
- assertSame(arr[(i - 9000) + 45], arr[i]);
- }
-
- // test array length remains same
- assertEquals(large, arr.length);
-})();
-
-
-(function copyWithinSuperLargeLength() {
- // 2^53 - 1 is the maximum value returned from ToLength()
- var large = Math.pow(2, 53) - 1;
- var object = { length: large };
-
- // Initialize last 10 entries
- for (var i = 1; i <= 10; ++i) {
- object[(large - 11) + i] = { num: i };
- }
-
- Array.prototype.copyWithin.call(object, 1, large - 10);
-
- // Test copied values
- for (var i = 1; i <= 10; ++i) {
- var old_ref = object[(large - 11) + i];
- var new_ref = object[i];
- assertSame(old_ref, new_ref);
- assertSame(new_ref.num, i);
- }
-
- // Assert length has not changed
- assertEquals(large, object.length);
-})();
-
-
-(function copyWithinNullEnd() {
- // test null on third argument is converted to +0
- assertArrayEquals([1, 2, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3, null));
-})();
-
-
-(function copyWithinElementsInObjectsPrototype() {
- // tamper the global Object prototype and test this works
- Object.prototype[2] = 1;
- assertArrayEquals([4, 5, 3, 4, 5], [1, 2, 3, 4, 5].copyWithin(0, 3));
- delete Object.prototype[2];
-
- Object.prototype[3] = "FAKE";
- assertArrayEquals(["FAKE", 5, 3, "FAKE", 5], [1, 2, 3, , 5].copyWithin(0, 3));
- delete Object.prototype[3];
-})();
« no previous file with comments | « src/harmony-array.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698