test-codecs-interoperability.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. /* global Blob */
  2. import * as zip from "../../index.js";
  3. const FILENAME = "lorem.txt";
  4. const size = 512000 + Math.floor(Math.random() * 512000);
  5. const BLOB = new getBlob(size);
  6. export { test };
  7. async function test() {
  8. zip.configure({
  9. workerScripts: {
  10. deflate: ["../dist/z-worker-pako.js", "../tests/vendor/pako_deflate.min.js"]
  11. }
  12. });
  13. const blobWriter = new zip.BlobWriter("application/zip");
  14. const zipWriter = new zip.ZipWriter(blobWriter);
  15. await zipWriter.add(FILENAME, new zip.BlobReader(BLOB));
  16. await zipWriter.close();
  17. const zipReader = new zip.ZipReader(new zip.BlobReader(blobWriter.getData()));
  18. const entries = await zipReader.getEntries();
  19. const data = await entries[0].getData(new zip.BlobWriter(zip.getMimeType(entries[0].filename)));
  20. await zipReader.close();
  21. return (await getBlob(size).text()) == (await data.text()) && entries[0].filename == FILENAME && entries[0].uncompressedSize == size;
  22. }
  23. function getBlob(size) {
  24. const data = new Uint8Array(size);
  25. for (let indexData = 0; indexData < data.length; indexData++) {
  26. data[indexData] = 65 + (indexData % 26);
  27. }
  28. return new Blob([data]);
  29. }