| OLD | NEW |
| 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-tostring |
| 5 | 6 |
| 6 function TestStringPrototypeIterator() { | 7 function TestStringPrototypeIterator() { |
| 7 assertTrue(String.prototype.hasOwnProperty(Symbol.iterator)); | 8 assertTrue(String.prototype.hasOwnProperty(Symbol.iterator)); |
| 8 assertFalse("".hasOwnProperty(Symbol.iterator)); | 9 assertFalse("".hasOwnProperty(Symbol.iterator)); |
| 9 assertFalse("".propertyIsEnumerable(Symbol.iterator)); | 10 assertFalse("".propertyIsEnumerable(Symbol.iterator)); |
| 10 } | 11 } |
| 11 TestStringPrototypeIterator(); | 12 TestStringPrototypeIterator(); |
| 12 | 13 |
| 13 | 14 |
| 14 function assertIteratorResult(value, done, result) { | 15 function assertIteratorResult(value, done, result) { |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 | 53 |
| 53 | 54 |
| 54 function TestStringIteratorPrototype() { | 55 function TestStringIteratorPrototype() { |
| 55 var iterator = ""[Symbol.iterator](); | 56 var iterator = ""[Symbol.iterator](); |
| 56 var StringIteratorPrototype = iterator.__proto__; | 57 var StringIteratorPrototype = iterator.__proto__; |
| 57 assertFalse(StringIteratorPrototype.hasOwnProperty('constructor')); | 58 assertFalse(StringIteratorPrototype.hasOwnProperty('constructor')); |
| 58 assertEquals(StringIteratorPrototype.__proto__, Object.prototype); | 59 assertEquals(StringIteratorPrototype.__proto__, Object.prototype); |
| 59 assertArrayEquals(['next'], | 60 assertArrayEquals(['next'], |
| 60 Object.getOwnPropertyNames(StringIteratorPrototype)); | 61 Object.getOwnPropertyNames(StringIteratorPrototype)); |
| 61 assertEquals('[object String Iterator]', "" + iterator); | 62 assertEquals('[object String Iterator]', "" + iterator); |
| 63 assertEquals("String Iterator", StringIteratorPrototype[Symbol.toStringTag]); |
| 64 var desc = Object.getOwnPropertyDescriptor( |
| 65 StringIteratorPrototype, Symbol.toStringTag); |
| 66 assertTrue(desc.configurable); |
| 67 assertFalse(desc.writable); |
| 68 assertEquals("String Iterator", desc.value); |
| 62 } | 69 } |
| 63 TestStringIteratorPrototype(); | 70 TestStringIteratorPrototype(); |
| 64 | 71 |
| 65 | 72 |
| 66 function TestForOf() { | 73 function TestForOf() { |
| 67 var lo = "\uD834"; | 74 var lo = "\uD834"; |
| 68 var hi = "\uDF06"; | 75 var hi = "\uDF06"; |
| 69 var pair = lo + hi; | 76 var pair = lo + hi; |
| 70 var string = "abc" + pair + "def" + lo + pair + hi + lo; | 77 var string = "abc" + pair + "def" + lo + pair + hi + lo; |
| 71 var expected = ['a', 'b', 'c', pair, 'd', 'e', 'f', lo, pair, hi, lo]; | 78 var expected = ['a', 'b', 'c', pair, 'd', 'e', 'f', lo, pair, hi, lo]; |
| 72 | 79 |
| 73 var i = 0; | 80 var i = 0; |
| 74 for (var char of string) { | 81 for (var char of string) { |
| 75 assertEquals(expected[i++], char); | 82 assertEquals(expected[i++], char); |
| 76 } | 83 } |
| 77 | 84 |
| 78 assertEquals(expected.length, i); | 85 assertEquals(expected.length, i); |
| 79 } | 86 } |
| 80 TestForOf(); | 87 TestForOf(); |
| 81 | 88 |
| 82 | 89 |
| 83 function TestNonOwnSlots() { | 90 function TestNonOwnSlots() { |
| 84 var iterator = ""[Symbol.iterator](); | 91 var iterator = ""[Symbol.iterator](); |
| 85 var object = {__proto__: iterator}; | 92 var object = {__proto__: iterator}; |
| 86 | 93 |
| 87 assertThrows(function() { object.next(); }, TypeError); | 94 assertThrows(function() { object.next(); }, TypeError); |
| 88 } | 95 } |
| 89 TestNonOwnSlots(); | 96 TestNonOwnSlots(); |
| OLD | NEW |