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

Side by Side Diff: test/mjsunit/es6/array-concat.js

Issue 1721993002: Ship ES2015 Symbol.species (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix tests Created 4 years, 10 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 | « src/flag-definitions.h ('k') | test/mjsunit/es6/debug-promises/throw-with-throw-in-reject.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 // Flags: --harmony-proxies --harmony-reflect 5 // Flags: --harmony-proxies --harmony-reflect
6 6
7 (function testArrayConcatArity() { 7 (function testArrayConcatArity() {
8 "use strict"; 8 "use strict";
9 assertEquals(1, Array.prototype.concat.length); 9 assertEquals(1, Array.prototype.concat.length);
10 })(); 10 })();
(...skipping 793 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 var obj = new Proxy(target, handler); 804 var obj = new Proxy(target, handler);
805 805
806 log.length = 0; 806 log.length = 0;
807 assertEquals([obj], [].concat(obj)); 807 assertEquals([obj], [].concat(obj));
808 assertEquals(1, log.length); 808 assertEquals(1, log.length);
809 for (var i in log) assertSame(target, log[i][1]); 809 for (var i in log) assertSame(target, log[i][1]);
810 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); 810 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]);
811 811
812 log.length = 0; 812 log.length = 0;
813 assertEquals([obj], Array.prototype.concat.apply(obj)); 813 assertEquals([obj], Array.prototype.concat.apply(obj));
814 assertEquals(1, log.length); 814 assertEquals(2, log.length); // An extra read for the constructor
815 for (var i in log) assertSame(target, log[i][1]); 815 for (var i in log) assertSame(target, log[i][1]);
816 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); 816 assertEquals(["get", target, "constructor", obj], log[0]);
817 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[1]);
817 })(); 818 })();
818 819
819 820
820 (function testSpreadableArrayLikeProxy() { 821 (function testSpreadableArrayLikeProxy() {
821 var target = ["a", "b"]; 822 var target = ["a", "b"];
822 target[Symbol.isConcatSpreadable] = undefined; 823 target[Symbol.isConcatSpreadable] = undefined;
823 var obj = new Proxy(target, handler); 824 var obj = new Proxy(target, handler);
824 825
825 log.length = 0; 826 log.length = 0;
826 assertEquals(["a", "b"], [].concat(obj)); 827 assertEquals(["a", "b"], [].concat(obj));
827 assertEquals(6, log.length); 828 assertEquals(6, log.length);
828 for (var i in log) assertSame(target, log[i][1]); 829 for (var i in log) assertSame(target, log[i][1]);
829 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); 830 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]);
830 assertEquals(["get", target, "length", obj], log[1]); 831 assertEquals(["get", target, "length", obj], log[1]);
831 assertEquals(["has", target, "0"], log[2]); 832 assertEquals(["has", target, "0"], log[2]);
832 assertEquals(["get", target, "0", obj], log[3]); 833 assertEquals(["get", target, "0", obj], log[3]);
833 assertEquals(["has", target, "1"], log[4]); 834 assertEquals(["has", target, "1"], log[4]);
834 assertEquals(["get", target, "1", obj], log[5]); 835 assertEquals(["get", target, "1", obj], log[5]);
835 836
836 log.length = 0; 837 log.length = 0;
837 assertEquals(["a", "b"], Array.prototype.concat.apply(obj)); 838 assertEquals(["a", "b"], Array.prototype.concat.apply(obj));
838 assertEquals(6, log.length); 839 assertEquals(7, log.length);
839 for (var i in log) assertSame(target, log[i][1]); 840 for (var i in log) assertSame(target, log[i][1]);
840 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[0]); 841 assertEquals(["get", target, "constructor", obj], log[0]);
841 assertEquals(["get", target, "length", obj], log[1]); 842 assertEquals(["get", target, Symbol.isConcatSpreadable, obj], log[1]);
842 assertEquals(["has", target, "0"], log[2]); 843 assertEquals(["get", target, "length", obj], log[2]);
843 assertEquals(["get", target, "0", obj], log[3]); 844 assertEquals(["has", target, "0"], log[3]);
844 assertEquals(["has", target, "1"], log[4]); 845 assertEquals(["get", target, "0", obj], log[4]);
845 assertEquals(["get", target, "1", obj], log[5]); 846 assertEquals(["has", target, "1"], log[5]);
847 assertEquals(["get", target, "1", obj], log[6]);
846 })(); 848 })();
847 849
848 850
849 (function testSpreadableArrayLikeProxyWithNontrivialLength() { 851 (function testSpreadableArrayLikeProxyWithNontrivialLength() {
850 var getTrap = function(t, key) { 852 var getTrap = function(t, key) {
851 if (key === "length") return {[Symbol.toPrimitive]() {return 3}}; 853 if (key === "length") return {[Symbol.toPrimitive]() {return 3}};
852 if (key === "2") return "baz"; 854 if (key === "2") return "baz";
853 if (key === "3") return "bar"; 855 if (key === "3") return "bar";
854 }; 856 };
855 var target = []; 857 var target = [];
856 var obj = new Proxy(target, {get: getTrap, has: () => true}); 858 var obj = new Proxy(target, {get: getTrap, has: () => true});
857 859
858 assertEquals([undefined, undefined, "baz"], [].concat(obj)); 860 assertEquals([undefined, undefined, "baz"], [].concat(obj));
859 assertEquals([undefined, undefined, "baz"], Array.prototype.concat.apply(obj)) 861 assertEquals([undefined, undefined, "baz"], Array.prototype.concat.apply(obj))
860 })(); 862 })();
861 863
862 864
863 (function testSpreadableArrayLikeProxyWithBogusLength() { 865 (function testSpreadableArrayLikeProxyWithBogusLength() {
864 var getTrap = function(t, key) { 866 var getTrap = function(t, key) {
865 if (key === "length") return Symbol(); 867 if (key === "length") return Symbol();
866 if (key === "2") return "baz"; 868 if (key === "2") return "baz";
867 if (key === "3") return "bar"; 869 if (key === "3") return "bar";
868 }; 870 };
869 var target = []; 871 var target = [];
870 var obj = new Proxy(target, {get: getTrap, has: () => true}); 872 var obj = new Proxy(target, {get: getTrap, has: () => true});
871 873
872 assertThrows(() => [].concat(obj), TypeError); 874 assertThrows(() => [].concat(obj), TypeError);
873 assertThrows(() => Array.prototype.concat.apply(obj), TypeError); 875 assertThrows(() => Array.prototype.concat.apply(obj), TypeError);
874 })(); 876 })();
OLDNEW
« no previous file with comments | « src/flag-definitions.h ('k') | test/mjsunit/es6/debug-promises/throw-with-throw-in-reject.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698