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

Quelle  urlSearchParams_commons.js   Sprache: JAVA

 
/* import-globals-from urlSearchParams_worker.js */

// This file gets included into a worker which doesn't have any
// assertion methods besides `ok` and `is`.
/* eslint-disable mozilla/no-comparison-or-assignment-inside-ok */

function testSimpleURLSearchParams() {
  var u = new URLSearchParams();
  ok(u, "URLSearchParams created");
  is(u.has("foo"), false"URLSearchParams.has(foo)");
  is(u.get("foo"), null"URLSearchParams.get(foo)");
  is(u.getAll("foo").length, 0, "URLSearchParams.getAll(foo)");

  u.append("foo""bar");
  is(u.has("foo"), true"URLSearchParams.has(foo)");
  is(u.get("foo"), "bar""URLSearchParams.get(foo)");
  is(u.getAll("foo").length, 1, "URLSearchParams.getAll(foo)");

  u.set("foo""bar2");
  is(u.get("foo"), "bar2""URLSearchParams.get(foo)");
  is(u.getAll("foo").length, 1, "URLSearchParams.getAll(foo)");

  is(u + """foo=bar2""stringifier");

  u.delete("foo");

  runTest();
}

function testCopyURLSearchParams() {
  var u = new URLSearchParams();
  ok(u, "URLSearchParams created");
  u.append("foo""bar");

  var uu = new URLSearchParams(u);
  is(uu.get("foo"), "bar""uu.get()");

  u.append("foo""bar2");
  is(u.getAll("foo").length, 2, "u.getAll()");
  is(uu.getAll("foo").length, 1, "uu.getAll()");

  runTest();
}

function testURL() {
  var url = new URL("http://www.example.net?a=b&c=d");
  ok(url.searchParams, "URL searchParams exists!");
  ok(url.searchParams.has("a"), "URL.searchParams.has('a')");
  is(url.searchParams.get("a"), "b""URL.searchParams.get('a')");
  ok(url.searchParams.has("c"), "URL.searchParams.has('c')");
  is(url.searchParams.get("c"), "d""URL.searchParams.get('c')");

  url.searchParams.set("e""f");
  ok(url.href.indexOf("e=f") != 1, "URL right");

  url = new URL("mailto:a@b.com?subject=Hi");
  ok(url.searchParams, "URL searchParams exists!");
  ok(url.searchParams.has("subject"), "Hi");

  runTest();
}

function testParserURLSearchParams() {
  var checks = [
    { input: "", data: {} },
    { input: "a", data: { a: [""] } },
    { input: "a=b", data: { a: ["b"] } },
    { input: "a=", data: { a: [""] } },
    { input: "=b", data: { "": ["b"] } },
    { input: "&", data: {} },
    { input: "&a", data: { a: [""] } },
    { input: "a&", data: { a: [""] } },
    { input: "a&a", data: { a: [""""] } },
    { input: "a&b&c", data: { a: [""], b: [""], c: [""] } },
    { input: "a=b&c=d", data: { a: ["b"], c: ["d"] } },
    { input: "a=b&c=d&", data: { a: ["b"], c: ["d"] } },
    { input: "&&&a=b&&&&c=d&", data: { a: ["b"], c: ["d"] } },
    { input: "a=a&a=b&a=c", data: { a: ["a""b""c"] } },
    { input: "a==a", data: { a: ["=a"] } },
    { input: "a=a+b+c+d", data: { a: ["a b c d"] } },
    { input: "%=a", data: { "%": ["a"] } },
    { input: "%a=a", data: { "%a": ["a"] } },
    { input: "%a_=a", data: { "%a_": ["a"] } },
    { input: "%61=a", data: { a: ["a"] } },
    { input: "%=a", data: { "%": ["a"] } },
    { input: "%a=a", data: { "%a": ["a"] } },
    { input: "%a_=a", data: { "%a_": ["a"] } },
    { input: "%61=a", data: { a: ["a"] } },
    { input: "%61+%4d%4D=", data: { "a MM": [""] } },
    { input: "?a=1", data: { a: ["1"] } },
    { input: "?", data: {} },
    { input: "?=b", data: { "": ["b"] } },
  ];

  for (var i = 0; i < checks.length; ++i) {
    var u = new URLSearchParams(checks[i].input);

    var count = 0;
    for (var key in checks[i].data) {
      count = count + 1;
      ok(u.has(key), "key " + key + " found");

      var all = u.getAll(key);
      is(all.length, checks[i].data[key].length, "same number of elements");

      for (var k = 0; k < all.length; ++k) {
        is(all[k], checks[i].data[key][k], "value matches");
      }
    }
  }

  runTest();
}

function testEncoding() {
  var encoding = [
    ["1""1"],
    ["a b""a+b"],
    ["<>""%3C%3E"],
    ["\u0541""%D5%81"],
  ];

  for (var i = 0; i < encoding.length; ++i) {
    var url = new URL("http://www.example.net");
    url.searchParams.set("a", encoding[i][0]);
    is(url.href, "http://www.example.net/?a=" + encoding[i][1]);

    var url2 = new URL(url.href);
    is(url2.searchParams.get("a"), encoding[i][0], "a is still there");
  }

  runTest();
}

function testCopyConstructor() {
  var url = new URL("http://example.com/");
  var p = url.searchParams;
  var q = new URLSearchParams(p);
  q.set("a""b");
  is(
    url.href,
    "http://example.com/",
    "Messing with copy of URLSearchParams should not affect URL"
  );
  p.set("c""d");
  is(
    url.href,
    "http://example.com/?c=d",
    "Messing with URLSearchParams should affect URL"
  );

  runTest();
}

function testOrdering() {
  var a = new URLSearchParams("a=1&a=2&b=3&c=4&c=5&a=6");
  is(a.toString(), "a=1&a=2&b=3&c=4&c=5&a=6""Order is correct");
  is(a.getAll("a").length, 3, "Correct length of getAll()");

  var b = new URLSearchParams();
  b.append("a""1");
  b.append("b""2");
  b.append("a""3");
  is(b.toString(), "a=1&b=2&a=3""Order is correct");
  is(b.getAll("a").length, 2, "Correct length of getAll()");

  runTest();
}

function testDelete() {
  var a = new URLSearchParams("a=1&a=2&b=3&c=4&c=5&a=6");
  is(a.toString(), "a=1&a=2&b=3&c=4&c=5&a=6""Order is correct");
  is(a.getAll("a").length, 3, "Correct length of getAll()");

  a.delete("a");
  is(a.getAll("a").length, 0, "Correct length of getAll()");
  is(a.toString(), "b=3&c=4&c=5""Order is correct");

  runTest();
}

function testGetNULL() {
  var u = new URLSearchParams();
  is(typeof u.get(""), "object""typeof URL.searchParams.get('')");
  is(u.get(""), null"URL.searchParams.get('') should be null");

  var url = new URL("http://www.example.net?a=b");
  is(
    url.searchParams.get("b"),
    null,
    "URL.searchParams.get('b') should be null"
  );
  is(url.searchParams.get("a"), "b""URL.searchParams.get('a')");

  runTest();
}

function testSet() {
  var u = new URLSearchParams();
  u.set("a""b");
  u.set("e""c");
  u.set("i""d");
  u.set("o""f");
  u.set("u""g");

  is(u.get("a"), "b""URL.searchParams.get('a') should return b");
  is(u.getAll("a").length, 1, "URLSearchParams.getAll('a').length should be 1");

  u.set("a""h1");
  u.set("a""h2");
  u.set("a""h3");
  u.set("a""h4");
  is(u.get("a"), "h4""URL.searchParams.get('a') should return h4");
  is(u.getAll("a").length, 1, "URLSearchParams.getAll('a').length should be 1");

  is(u.get("e"), "c""URL.searchParams.get('e') should return c");
  is(u.get("i"), "d""URL.searchParams.get('i') should return d");
  is(u.get("o"), "f""URL.searchParams.get('o') should return f");
  is(u.get("u"), "g""URL.searchParams.get('u') should return g");

  is(u.getAll("e").length, 1, "URLSearchParams.getAll('e').length should be 1");
  is(u.getAll("i").length, 1, "URLSearchParams.getAll('i').length should be 1");
  is(u.getAll("o").length, 1, "URLSearchParams.getAll('o').length should be 1");
  is(u.getAll("u").length, 1, "URLSearchParams.getAll('u').length should be 1");

  u = new URLSearchParams("name1=value1&name1=value2&name1=value3");
  is(
    u.get("name1"),
    "value1",
    "URL.searchParams.get('name1') should return value1"
  );
  is(
    u.getAll("name1").length,
    3,
    "URLSearchParams.getAll('name1').length should be 3"
  );
  u.set("name1""firstPair");
  is(
    u.get("name1"),
    "firstPair",
    "URL.searchParams.get('name1') should return firstPair"
  );
  is(
    u.getAll("name1").length,
    1,
    "URLSearchParams.getAll('name1').length should be 1"
  );

  runTest();
}

function testIterable() {
  var u = new URLSearchParams();
  u.set("1""2");
  u.set("2""4");
  u.set("3""6");
  u.set("4""8");
  u.set("5""10");

  var key_iter = u.keys();
  var value_iter = u.values();
  var entries_iter = u.entries();
  for (var i = 0; i < 5; ++i) {
    var v = i + 1;
    var key = key_iter.next();
    var value = value_iter.next();
    var entry = entries_iter.next();
    is(key.value, v.toString(), "Correct Key iterator: " + v.toString());
    ok(!key.done, "Key.done is false");
    is(
      value.value,
      (v * 2).toString(),
      "Correct Value iterator: " + (v * 2).toString()
    );
    ok(!value.done, "Value.done is false");
    is(
      entry.value[0],
      v.toString(),
      "Correct Entry 0 iterator: " + v.toString()
    );
    is(
      entry.value[1],
      (v * 2).toString(),
      "Correct Entry 1 iterator: " + (v * 2).toString()
    );
    ok(!entry.done, "Entry.done is false");
  }

  var last = key_iter.next();
  ok(last.done, "Nothing more to read.");
  is(last.value, undefined, "Undefined is the last key");

  last = value_iter.next();
  ok(last.done, "Nothing more to read.");
  is(last.value, undefined, "Undefined is the last value");

  last = entries_iter.next();
  ok(last.done, "Nothing more to read.");

  key_iter = u.keys();
  key_iter.next();
  key_iter.next();
  u.delete("1");
  u.delete("2");
  u.delete("3");
  u.delete("4");
  u.delete("5");

  last = key_iter.next();
  ok(last.done, "Nothing more to read.");
  is(last.value, undefined, "Undefined is the last key");

  runTest();
}
function testZeroHandling() {
  var u = new URLSearchParams();
  u.set("a""b\0c");
  u.set("d\0e""f");
  u.set("g\0h""i\0j");
  is(
    u.toString(),
    "a=b%00c&d%00e=f&g%00h=i%00j",
    "Should encode U+0000 as %00"
  );

  runTest();
}

function testCTORs() {
  var a = new URLSearchParams("a=b");
  is(a.get("a"), "b""CTOR with string");

  var b = new URLSearchParams([
    ["a""b"],
    ["c""d"],
  ]);
  is(b.get("a"), "b""CTOR with sequence");
  is(b.get("c"), "d""CTOR with sequence");

  ok(new URLSearchParams([]), "CTOR with empty sequence");

  let result;
  try {
    result = new URLSearchParams([[1]]);
  } catch (e) {
    result = 42;
  }

  is(
    result,
    42,
    "CTOR throws if the sequence doesn't contain exactly 2 elements"
  );

  try {
    result = new URLSearchParams([[1, 2, 3]]);
  } catch (e) {
    result = 43;
  }
  is(
    result,
    43,
    "CTOR throws if the sequence doesn't contain exactly 2 elements"
  );

  var c = new URLSearchParams({
    a: "b",
    c: 42,
    d: null,
    e: [1, 2, 3],
    f: { a: 42 },
  });
  is(c.get("a"), "b""CTOR with record<>");
  is(c.get("c"), "42""CTOR with record<>");
  is(c.get("d"), "null""CTOR with record<>");
  is(c.get("e"), [1, 2, 3].toString(), "CTOR with record<>");
  is(c.get("f"), { a: 42 }.toString(), "CTOR with record<>");

  runTest();
}

Messung V0.5
C=98 H=90 G=94

¤ Dauer der Verarbeitung: 0.13 Sekunden  (vorverarbeitet)  ¤

*© 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.