Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/js/xpconnect/tests/unit/   (Browser von der Mozilla Stiftung Version 136.0.1©)  Datei vom 10.2.2025 mit Größe 2 kB image not shown  

Quelle  test_json_parse_with_source.js   Sprache: JAVA

 
'use strict';

const { addDebuggerToGlobal } = ChromeUtils.importESModule(
  "resource://gre/modules/jsdebugger.sys.mjs"
);

const SYSTEM_PRINCIPAL = Cc["@mozilla.org/systemprincipal;1"].createInstance(
  Ci.nsIPrincipal
);

function addTestingFunctionsToGlobal(global) {
  global.eval(
    `
      const testingFunctions = Cu.getJSTestingFunctions();
      for (let k in testingFunctions) {

        this[k] = testingFunctions[k];
      }
      `
  );
  if (!global.print) {
    global.print = info;
  }
  if (!global.newGlobal) {
    global.newGlobal = newGlobal;
  }
  if (!global.Debugger) {
    addDebuggerToGlobal(global);
  }
}

addTestingFunctionsToGlobal(this);

/* Create a new global, with all the JS shell testing functions. Similar to the
 * newGlobal function exposed to JS shells, and useful for porting JS shell
 * tests to xpcshell tests.
 */

function newGlobal(args) {
  const global = new Cu.Sandbox(SYSTEM_PRINCIPAL, {
    freshCompartment: true,
    ...args,
  });
  addTestingFunctionsToGlobal(global);
  return global;
}

add_task(function test_json_parse_with_source_xrays() {
  let sandbox = new Cu.Sandbox("about:blank");

  var sourceWrapper = Cu.evalInSandbox("JSON.parse('5.0', (k,v,{source}) => ({src: source, val: v}));", sandbox);
  Assert.deepEqual(sourceWrapper, {src: "5.0", val: 5});
  sandbox.reviver = (k,v,{source}) => { return { orig: source }};
  sourceWrapper = Cu.evalInSandbox("JSON.parse('2.4', reviver);", sandbox);
  Assert.deepEqual(sourceWrapper, { orig: "2.4"});

  // Get rid of the extra global when experimental.json_parse_with_source pref is removed
  var g = newGlobal({ newCompartment: true });
  Cu.evalInSandbox(`
    let other = new Cu.Sandbox("about:blank");
    let rawWrapper = other.eval('JSON.rawJSON(4.32)');
  `, g);
  Assert.ok(g.eval("JSON.isRawJSON(rawWrapper);"));
  Assert.equal(Cu.evalInSandbox("JSON.stringify(rawWrapper)", g), "4.32");

  // rawJSON is a data property, so the Xray should hide it
  Assert.equal(g.eval("rawWrapper.wrappedJSObject.rawJSON"), "4.32");
  Assert.equal(g.eval("rawWrapper.rawJSON"), undefined);

  let src = Cu.evalInSandbox(`
    other.eval('JSON.parse("4.32", (k,v,{source}) => { return {source,v}})');
  `, g);
  Assert.ok(Cu.isXrayWrapper(src));
  Assert.deepEqual(src, {source:"4.32", v:4.32});
});

Messung V0.5
C=97 H=98 G=97

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.