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

Quelle  test_basics.js   Sprache: JAVA

 
/**
 * Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/
 */


// This test must be first, since we need the actor not to be created already.
exported_symbols.testGetDirectoryTwice = async function () {
  const promise1 = navigator.storage.getDirectory();
  const promise2 = navigator.storage.getDirectory();

  await Promise.all([promise1, promise2]);

  Assert.ok(true"Should not have thrown");
};

exported_symbols.testGetDirectoryDoesNotThrow = async function () {
  await navigator.storage.getDirectory();

  Assert.ok(true"Should not have thrown");
};

exported_symbols.testGetDirectoryKindIsDirectory = async function () {
  const root = await navigator.storage.getDirectory();

  Assert.equal(root.kind, "directory");
};

exported_symbols.testDirectoryHandleStringConversion = async function () {
  const root = await navigator.storage.getDirectory();

  Assert.equal(
    "" + root,
    "[object FileSystemDirectoryHandle]",
    "Is directoryHandle convertible to string?"
  );
};

exported_symbols.testNewDirectoryHandleFromPrototype = async function () {
  const root = await navigator.storage.getDirectory();

  try {
    Object.create(root.prototype);
    Assert.ok(false"Should have thrown");
  } catch (ex) {
    Assert.ok(true"Should have thrown");
    Assert.ok(ex instanceof TypeError, "Threw the right error type");
  }
};

exported_symbols.testIsSameEntryRoot = async function () {
  const root = await navigator.storage.getDirectory();
  try {
    await root.move(root);
    Assert.ok(false"root should not be movable");
  } catch (ex) {
    Assert.ok(true"root isn't movable");
  }
};

exported_symbols.testDirectoryHandleSupportsKeysIterator = async function () {
  const root = await navigator.storage.getDirectory();

  const it = await root.keys();
  Assert.ok(!!it, "Does root support keys iterator?");
};

exported_symbols.testKeysIteratorNextIsCallable = async function () {
  const root = await navigator.storage.getDirectory();

  const it = await root.keys();
  Assert.ok(!!it, "Does root support keys iterator?");

  const item = await it.next();
  Assert.ok(!!item, "Should return an item");
};

exported_symbols.testDirectoryHandleSupportsValuesIterator = async function () {
  const root = await navigator.storage.getDirectory();

  const it = await root.values();
  Assert.ok(!!it, "Does root support values iterator?");
};

exported_symbols.testValuesIteratorNextIsCallable = async function () {
  const root = await navigator.storage.getDirectory();

  const it = await root.values();
  Assert.ok(!!it, "Does root support values iterator?");

  const item = await it.next();
  Assert.ok(!!item, "Should return an item");
};

exported_symbols.testDirectoryHandleSupportsEntriesIterator =
  async function () {
    const root = await navigator.storage.getDirectory();

    const it = await root.entries();
    Assert.ok(!!it, "Does root support entries iterator?");
  };

exported_symbols.testEntriesIteratorNextIsCallable = async function () {
  const root = await navigator.storage.getDirectory();

  const it = await root.entries();
  Assert.ok(!!it, "Does root support entries iterator?");

  const item = await it.next();
  Assert.ok(!!item, "Should return an item");
};

exported_symbols.testGetFileHandleIsCallable = async function () {
  const root = await navigator.storage.getDirectory();
  const allowCreate = { create: true };

  const item = await root.getFileHandle("fileName", allowCreate);
  Assert.ok(!!item, "Should return an item");

  await root.removeEntry("fileName");
};

exported_symbols.testGetDirectoryHandleIsCallable = async function () {
  const root = await navigator.storage.getDirectory();
  const allowCreate = { create: true };

  const item = await root.getDirectoryHandle("dirName", allowCreate);
  Assert.ok(!!item, "Should return an item");

  await root.removeEntry("dirName");
};

exported_symbols.testRemoveEntryIsCallable = async function () {
  const root = await navigator.storage.getDirectory();
  const removeOptions = { recursive: true };
  const allowCreate = { create: true };

  // Ensure file and directory items exists
  await root.getFileHandle("fileName", allowCreate);
  await root.getDirectoryHandle("dirName", allowCreate);
  await root.removeEntry("fileName", removeOptions);
  await root.removeEntry("dirName", removeOptions);
  try {
    await root.removeEntry("doesNotExist", removeOptions);
    Assert.ok(false"Should have thrown");
  } catch (ex) {
    Assert.ok(true"Should have thrown");
    Assert.equal(
      ex.message,
      "Entry not found",
      "Threw the right error message"
    );
  }
};

exported_symbols.testResolveIsCallable = async function () {
  const root = await navigator.storage.getDirectory();
  const allowCreate = { create: true };
  const item = await root.getFileHandle("fileName", allowCreate);

  let path = await root.resolve(item);
  Assert.equal(path.length, 1);
  Assert.equal(path[0], "fileName""Resolve got the right path");

  await root.removeEntry("fileName");
};

exported_symbols.testFileType = async function () {
  const root = await navigator.storage.getDirectory();
  const allowCreate = { create: true };
  const nameStem = "testFileType";
  const empty = "";

  const extensions = [
    "txt",
    "jS",
    "JSON",
    "css",
    "html",
    "htm",
    "xhtml",
    "xml",
    "xhtml+xml",
    "png",
    "apng",
    "jPg",
    "Jpeg",
    "pdF",
    "out",
    "sh",
    "ExE",
    "psid",
    "EXE ",
    " EXE",
    "EX\uff65",
    "\udbff\udbff\udbff",
    // XXX: Invalid surrogate combos like "\udc00\udc00\udc00" may map to the same names impacting cleanup.
    "js\udbff",
    "\udc00js",
    "???",
    "\root",
    empty,
    "AXS",
    "dll",
    "ocx",
    "1",
    "ps1",
    "cmd",
    "xpi",
    "swf",
  ];

  const expectedTypes = [
    "text/plain",
    "application/javascript",
    "application/json",
    "text/css",
    "text/html",
    "text/html",
    "application/xhtml+xml",
    "text/xml",
    empty,
    "image/png",
    "image/apng",
    "image/jpeg",
    "image/jpeg",
    "application/pdf",
    empty,
    "application/x-sh",
    "application/octet-stream",
    empty,
    empty,
    empty,
    empty,
    empty,
    empty,
    empty,
    empty,
    empty,
    empty,
    "application/olescript",
    "application/x-msdownload",
    "application/octet-stream",
    empty,
    empty,
    "text/plain",
    "application/x-xpinstall",
    "application/x-shockwave-flash",
  ];

  Assert.equal(extensions.length, expectedTypes.length);

  await Promise.all(
    extensions.map(async (ext, i) => {
      const fileName = nameStem + "." + ext;
      const fileHandle = await root.getFileHandle(fileName, allowCreate);
      const fileObject = await fileHandle.getFile();
      Assert.equal(fileObject.name, fileHandle.name);
      Assert.equal(fileObject.type, expectedTypes[i]);
      await root.removeEntry(fileName);
    })
  );
};

exported_symbols.testContentTypeChangesOnFileMove = async function () {
  const allowCreate = { create: true };
  const root = await navigator.storage.getDirectory();
  const oldName = "testFile.txt";
  const oldType = "text/plain";
  const subdir = await root.getDirectoryHandle("subdir", allowCreate);

  const fileHandle = await root.getFileHandle(oldName, allowCreate);

  async function checkMove(newName, newType) {
    Assert.equal(fileHandle.name, newName, "Has filename changed?");
    {
      const fileObject = await fileHandle.getFile();
      Assert.equal(fileObject.name, newName, "Is the fileobject renamed?");
      Assert.equal(fileObject.type, newType, "Is the fileobject type updated?");
    }
  }

  async function restoreTest() {
    await fileHandle.move(root, oldName);
    await checkMove(oldName, oldType);
  }

  // No name change
  await checkMove(oldName, oldType);
  await fileHandle.move(subdir);
  await checkMove(oldName, oldType);
  await restoreTest();

  // With name change

  async function testMoveWithParams(testName, testType) {
    async function testFileMoveCall(...combo) {
      await fileHandle.move(...combo);
      await checkMove(testName, testType);
      await restoreTest();
    }

    await testFileMoveCall(subdir, testName);
    await testFileMoveCall(root, testName);
    await testFileMoveCall(testName);
  }

  const testParams = {
    "testFile.json""application/json",
    testFile: oldType,
    "testFile.äüö""",
  };

  for (const [aName, aType] of Object.entries(testParams)) {
    await testMoveWithParams(aName, aType);
  }
};

exported_symbols.testContentTypeChangesOnDirMove = async function () {
  const allowCreate = { create: true };
  const root = await navigator.storage.getDirectory();
  const oldName = "testFile.txt";
  const oldType = "text/plain";
  const subDirOrig = await root.getDirectoryHandle("subDirOrig", allowCreate);
  const subDirOther = await root.getDirectoryHandle("subDirOther", allowCreate);
  const subSubDir = await subDirOrig.getDirectoryHandle(
    "subSubDir",
    allowCreate
  );

  const testName = "testFile.json";
  const testType = "application/json";

  async function checkMove(newName, newType) {
    const fileHandle = await subSubDir.getFileHandle(newName, allowCreate);

    Assert.equal(fileHandle.name, newName, "Has filename changed?");
    {
      const fileObject = await fileHandle.getFile();
      Assert.equal(fileObject.name, newName, "Is the fileobject renamed?");
      Assert.equal(fileObject.type, newType, "Is the fileobject type updated?");
    }
  }

  async function restoreTest() {
    await subSubDir.move(subDirOrig, "subSubDir");
    await checkMove(oldName, oldType);
  }

  await checkMove(oldName, oldType);

  // No name change
  await subSubDir.move(subDirOther, "other");
  await checkMove(oldName, oldType);
  await restoreTest();

  // With name change

  async function testDirMoveCall(...combo) {
    await subSubDir.move(...combo);
    await checkMove(testName, testType);
    await restoreTest();
  }

  await testDirMoveCall(subDirOther);
  await testDirMoveCall(subDirOther, testName);
  await testDirMoveCall(subDirOrig, testName);
  await testDirMoveCall(subDirOrig);
};

for (const [key, value] of Object.entries(exported_symbols)) {
  Object.defineProperty(value, "name", {
    value: key,
    writable: false,
  });
}

Messung V0.5
C=96 H=91 G=93

¤ Dauer der Verarbeitung: 0.12 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.