// Copyright 2014 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Flags: --expose-debug-as debug // Test the mirror object for symbols. function testSymbolMirror(symbol, description) { // Create mirror and JSON representation. var mirror = debug.MakeMirror(symbol); var serializer = debug.MakeMirrorSerializer(); var json = JSON.stringify(serializer.serializeValue(mirror)); // Check the mirror hierachy. assertTrue(mirror instanceof debug.Mirror); assertTrue(mirror instanceof debug.ValueMirror); assertTrue(mirror instanceof debug.SymbolMirror); // Check the mirror properties. assertTrue(mirror.isSymbol()); assertEquals(description, mirror.description()); assertEquals('symbol', mirror.type()); assertTrue(mirror.isPrimitive()); var description_text = description === undefined ? "" : description; assertEquals('Symbol(' + description_text + ')', mirror.toText()); assertSame(symbol, mirror.value()); // Parse JSON representation and check. var fromJSON = eval('(' + json + ')'); assertEquals('symbol', fromJSON.type); assertEquals(description, fromJSON.description); } // Test a number of different symbols. testSymbolMirror(Symbol("a"), "a"); testSymbolMirror(Symbol(12), "12"); testSymbolMirror(Symbol.for("b"), "b"); testSymbolMirror(Symbol(), undefined);