test-parallel-writes-ordered.js 1.4 KB

1234567891011121314151617181920212223242526272829303132
  1. /* global Blob */
  2. import * as zip from "../../index.js";
  3. const KB = 1024;
  4. const ENTRIES_DATA = [
  5. { name: "entry #1", blob: getBlob(8.5 * KB) }, { name: "entry #2", blob: getBlob(10.2 * KB) }, { name: "entry #3", blob: getBlob(64.7 * KB) },
  6. { name: "entry #4", blob: getBlob(2.8 * KB) }, { name: "entry #5", blob: getBlob(30.9 * KB) }, { name: "entry #6", blob: getBlob(76.2 * KB) },
  7. { name: "entry #7", blob: getBlob(5.1 * KB) }, { name: "entry #8", blob: getBlob(42.6 * KB) }, { name: "entry #9", blob: getBlob(3.1 * KB) }];
  8. export { test };
  9. async function test() {
  10. zip.configure({ chunkSize: 512 });
  11. const blobWriter = new zip.BlobWriter("application/zip");
  12. const zipWriter = new zip.ZipWriter(blobWriter);
  13. await Promise.all(ENTRIES_DATA.map(entryData => zipWriter.add(entryData.name, new zip.BlobReader(entryData.blob))));
  14. await zipWriter.close();
  15. const zipReader = new zip.ZipReader(new zip.BlobReader(blobWriter.getData()));
  16. const entries = await zipReader.getEntries();
  17. zip.terminateWorkers();
  18. return JSON.stringify(ENTRIES_DATA.map(entry => entry.name)) ==
  19. JSON.stringify(entries.sort((entry1, entry2) => entry1.offset - entry2.offset).map(entry => entry.filename));
  20. }
  21. function getBlob(size) {
  22. const data = new Float64Array(Math.floor(size / 8));
  23. for (let indexData = 0; indexData < data.length; indexData++) {
  24. data[indexData] = Math.random();
  25. }
  26. return new Blob([data]);
  27. }