| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 // | |
| 5 // Flags: --harmony-classes | |
| 6 'use strict'; | |
| 7 | |
| 8 (function TestDefaultConstructor() { | |
| 9 class Stack extends Array { } | |
| 10 { | |
| 11 let s1 = new Stack(); | |
| 12 assertSame(Stack.prototype, s1.__proto__); | |
| 13 assertTrue(Array.isArray(s1)); | |
| 14 assertSame(0, s1.length); | |
| 15 s1[0] = 'xyz'; | |
| 16 assertSame(1, s1.length); | |
| 17 assertSame('xyz', s1[0]); | |
| 18 s1.push(42); | |
| 19 assertSame(2, s1.length); | |
| 20 assertSame('xyz', s1[0]); | |
| 21 assertSame(42, s1[1]); | |
| 22 } | |
| 23 | |
| 24 { | |
| 25 let s2 = new Stack(10); | |
| 26 assertSame(Stack.prototype, s2.__proto__); | |
| 27 assertTrue(Array.isArray(s2)); | |
| 28 assertSame(10, s2.length); | |
| 29 assertSame(undefined, s2[0]); | |
| 30 } | |
| 31 | |
| 32 { | |
| 33 let a = [1,2,3]; | |
| 34 let s3 = new Stack(a); | |
| 35 assertSame(Stack.prototype, s3.__proto__); | |
| 36 assertTrue(Array.isArray(s3)); | |
| 37 assertSame(1, s3.length); | |
| 38 assertSame(a, s3[0]); | |
| 39 } | |
| 40 | |
| 41 { | |
| 42 let s4 = new Stack(1, 2, 3); | |
| 43 assertSame(Stack.prototype, s4.__proto__); | |
| 44 assertTrue(Array.isArray(s4)); | |
| 45 assertSame(3, s4.length); | |
| 46 assertSame(1, s4[0]); | |
| 47 assertSame(2, s4[1]); | |
| 48 assertSame(3, s4[2]); | |
| 49 } | |
| 50 | |
| 51 { | |
| 52 let s5 = new Stack(undefined, undefined, undefined); | |
| 53 assertSame(Stack.prototype, s5.__proto__); | |
| 54 assertTrue(Array.isArray(s5)); | |
| 55 assertSame(3, s5.length); | |
| 56 assertSame(undefined, s5[0]); | |
| 57 assertSame(undefined, s5[1]); | |
| 58 assertSame(undefined, s5[2]); | |
| 59 } | |
| 60 }()); | |
| 61 | |
| 62 | |
| 63 (function TestEmptyArgsSuper() { | |
| 64 class Stack extends Array { | |
| 65 constructor() { super(); } | |
| 66 } | |
| 67 let s1 = new Stack(); | |
| 68 assertSame(Stack.prototype, s1.__proto__); | |
| 69 assertTrue(Array.isArray(s1)); | |
| 70 assertSame(0, s1.length); | |
| 71 s1[0] = 'xyz'; | |
| 72 assertSame(1, s1.length); | |
| 73 assertSame('xyz', s1[0]); | |
| 74 s1.push(42); | |
| 75 assertSame(2, s1.length); | |
| 76 assertSame('xyz', s1[0]); | |
| 77 assertSame(42, s1[1]); | |
| 78 }()); | |
| 79 | |
| 80 | |
| 81 (function TestOneArgSuper() { | |
| 82 class Stack extends Array { | |
| 83 constructor(x) { | |
| 84 super(x); | |
| 85 } | |
| 86 } | |
| 87 | |
| 88 { | |
| 89 let s2 = new Stack(10, 'ignored arg'); | |
| 90 assertSame(Stack.prototype, s2.__proto__); | |
| 91 assertTrue(Array.isArray(s2)); | |
| 92 assertSame(10, s2.length); | |
| 93 assertSame(undefined, s2[0]); | |
| 94 } | |
| 95 | |
| 96 { | |
| 97 let a = [1,2,3]; | |
| 98 let s3 = new Stack(a, 'ignored arg'); | |
| 99 assertSame(Stack.prototype, s3.__proto__); | |
| 100 assertTrue(Array.isArray(s3)); | |
| 101 assertSame(1, s3.length); | |
| 102 assertSame(a, s3[0]); | |
| 103 } | |
| 104 }()); | |
| 105 | |
| 106 | |
| 107 (function TestMultipleArgsSuper() { | |
| 108 class Stack extends Array { | |
| 109 constructor(x, y, z) { | |
| 110 super(x, y, z); | |
| 111 } | |
| 112 } | |
| 113 { | |
| 114 let s4 = new Stack(1, 2, 3, 4, 5); | |
| 115 assertSame(Stack.prototype, s4.__proto__); | |
| 116 assertTrue(Array.isArray(s4)); | |
| 117 assertSame(3, s4.length); | |
| 118 assertSame(1, s4[0]); | |
| 119 assertSame(2, s4[1]); | |
| 120 assertSame(3, s4[2]); | |
| 121 } | |
| 122 | |
| 123 { | |
| 124 let s5 = new Stack(undefined); | |
| 125 assertSame(Stack.prototype, s5.__proto__); | |
| 126 assertTrue(Array.isArray(s5)); | |
| 127 assertTrue(s5.__proto__ == Stack.prototype); | |
| 128 assertSame(3, s5.length); | |
| 129 assertSame(undefined, s5[0]); | |
| 130 assertSame(undefined, s5[1]); | |
| 131 assertSame(undefined, s5[2]); | |
| 132 } | |
| 133 }()); | |
| 134 | |
| 135 | |
| 136 (function TestArrayConcat() { | |
| 137 class Stack extends Array { } | |
| 138 let s1 = new Stack(1,2,3); | |
| 139 | |
| 140 assertArrayEquals([1,2,3,4,5,6], s1.concat([4,5,6])); | |
| 141 assertArrayEquals([4,5,6,1,2,3], [4,5,6].concat(s1)); | |
| 142 }()); | |
| 143 | |
| 144 | |
| 145 (function TestJSONStringify() { | |
| 146 class Stack extends Array { } | |
| 147 | |
| 148 let s1 = new Stack(1,2,3); | |
| 149 assertSame("[1,2,3]", JSON.stringify(s1)); | |
| 150 }()); | |
| OLD | NEW |