// This tests Object.getOwnPropertySymbols. var global = (Function("return this")()); // private names for privileged code should not be exposed. if (Object.getOwnPropertySymbols(global).length !== 0) throw "Error: bad value " + Object.getOwnPropertySymbols(global).length; var object = {}; var symbol = Symbol("Cocoa"); object[symbol] = "Cappuccino"; if (Object.getOwnPropertyNames(object).length !== 0) throw "Error: bad value " + Object.getOwnPropertyNames(object).length; if (Object.getOwnPropertySymbols(object).length !== 1) throw "Error: bad value " + Object.getOwnPropertySymbols(object).length; if (Object.getOwnPropertySymbols(object)[0] !== symbol) throw "Error: bad value " + String(Object.getOwnPropertySymbols(object)[0]); function forIn(obj) { var array = []; // Symbol should not be enumerated. for (var key in obj) array.push(key); return array; } if (forIn(object).length !== 0) throw "Error: bad value " + forIn(object).length; if (Object.keys(object).length !== 0) throw "Error: bad value " + Object.keys(object).length; delete object[symbol]; if (Object.getOwnPropertyNames(object).length !== 0) throw "Error: bad value " + Object.getOwnPropertyNames(object).length; if (Object.getOwnPropertySymbols(object).length !== 0) throw "Error: bad value " + Object.getOwnPropertySymbols(object).length;