| Index: test/mjsunit/mirror-object.js
|
| diff --git a/test/mjsunit/mirror-object.js b/test/mjsunit/mirror-object.js
|
| index 8bf8a2d4f83181d46340bf00a34ec8f450ebcf86..e719b9b47997defbeea75b13e391d64f6a69e714 100644
|
| --- a/test/mjsunit/mirror-object.js
|
| +++ b/test/mjsunit/mirror-object.js
|
| @@ -40,6 +40,10 @@ MirrorRefCache.prototype.lookup = function(handle) {
|
| return this.refs_[handle];
|
| };
|
|
|
| +function isName(val) {
|
| + return typeof val === 'string' || typeof val === 'symbol';
|
| +}
|
| +
|
| function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) {
|
| // Create mirror and JSON representation.
|
| var mirror = debug.MakeMirror(obj);
|
| @@ -72,6 +76,7 @@ function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) {
|
| assertTrue(properties[i] instanceof debug.Mirror, 'Unexpected mirror hierarchy');
|
| assertTrue(properties[i] instanceof debug.PropertyMirror, 'Unexpected mirror hierarchy');
|
| assertEquals('property', properties[i].type(), 'Unexpected mirror type');
|
| + assertTrue(isName(names[i]), "Expected string or symbol property name");
|
| assertEquals(names[i], properties[i].name(), 'Unexpected property name');
|
| }
|
|
|
| @@ -111,12 +116,14 @@ function testObjectMirror(obj, cls_name, ctor_name, hasSpecialProperties) {
|
|
|
| // Check that the serialization contains all properties.
|
| assertEquals(names.length, fromJSON.properties.length, 'Some properties missing in JSON');
|
| - for (var i = 0; i < fromJSON.properties.length; i++) {
|
| - var name = fromJSON.properties[i].name;
|
| - if (typeof name == 'undefined') name = fromJSON.properties[i].index;
|
| + for (var j = 0; j < names.length; j++) {
|
| + var name = names[j];
|
| + // Serialization of symbol-named properties to JSON doesn't really
|
| + // work currently, as they don't get a {name: ...} entry.
|
| + if (typeof name === 'symbol') continue;
|
| var found = false;
|
| - for (var j = 0; j < names.length; j++) {
|
| - if (names[j] == name) {
|
| + for (var i = 0; i < fromJSON.properties.length; i++) {
|
| + if (fromJSON.properties[i].name == name) {
|
| // Check that serialized handle is correct.
|
| assertEquals(properties[i].value().handle(), fromJSON.properties[i].ref, 'Unexpected serialized handle');
|
|
|
| @@ -170,6 +177,9 @@ function Point(x,y) {
|
| this.y_ = y;
|
| }
|
|
|
| +var object_with_symbol = {};
|
| +object_with_symbol[Symbol.iterator] = 42;
|
| +
|
| // Test a number of different objects.
|
| testObjectMirror({}, 'Object', 'Object');
|
| testObjectMirror({'a':1,'b':2}, 'Object', 'Object');
|
| @@ -180,6 +190,7 @@ testObjectMirror(this.__proto__, 'Object', '');
|
| testObjectMirror([], 'Array', 'Array');
|
| testObjectMirror([1,2], 'Array', 'Array');
|
| testObjectMirror(Object(17), 'Number', 'Number');
|
| +testObjectMirror(object_with_symbol, 'Object', 'Object');
|
|
|
| // Test circular references.
|
| o = {};
|
|
|