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 |