test_symbols-01.js (1384B)
1 /* Any copyright is dedicated to the Public Domain. 2 http://creativecommons.org/publicdomain/zero/1.0/ */ 3 4 "use strict"; 5 6 /** 7 * Test that we can represent ES6 Symbols over the RDP. 8 */ 9 10 const URL = "foo.js"; 11 12 add_task( 13 threadFrontTest(async ({ threadFront, debuggee }) => { 14 await testSymbols(threadFront, debuggee); 15 }) 16 ); 17 18 async function testSymbols(threadFront, debuggee) { 19 const evalCode = () => { 20 /* eslint-disable mozilla/var-only-at-top-level, no-unused-vars */ 21 // prettier-ignore 22 Cu.evalInSandbox( 23 "(" + function () { 24 var symbolWithName = Symbol("Chris"); 25 var symbolWithoutName = Symbol(); 26 var iteratorSymbol = Symbol.iterator; 27 debugger; 28 } + "())", 29 debuggee, 30 "1.8", 31 URL, 32 1 33 ); 34 /* eslint-enable mozilla/var-only-at-top-level, no-unused-vars */ 35 }; 36 37 const packet = await executeOnNextTickAndWaitForPause(evalCode, threadFront); 38 const environment = await packet.frame.getEnvironment(); 39 const { symbolWithName, symbolWithoutName, iteratorSymbol } = 40 environment.bindings.variables; 41 42 equal(symbolWithName.value.type, "symbol"); 43 equal(symbolWithName.value.name, "Chris"); 44 45 equal(symbolWithoutName.value.type, "symbol"); 46 ok(!("name" in symbolWithoutName.value)); 47 48 equal(iteratorSymbol.value.type, "symbol"); 49 equal(iteratorSymbol.value.name, "Symbol.iterator"); 50 }