gm-resource.test.js 897 B

123456789101112131415161718192021
  1. import { buffer2string } from '@/common';
  2. import { decodeResource } from '@/injected/content/util';
  3. const stringAsBase64 = str => btoa(buffer2string(new TextEncoder().encode(str).buffer));
  4. const blobAsText = async blob => new Promise(resolve => {
  5. const fr = new FileReader();
  6. fr.onload = () => resolve(new TextDecoder().decode(fr.result));
  7. fr.readAsArrayBuffer(blob);
  8. });
  9. // WARNING: don't include D800-DFFF range which is for surrogate pairs
  10. const RESOURCE_TEXT = 'abcd\u1234\u2345\u3456\u4567\u5678\u6789\u789A\u89AB\u9ABC\uABCD';
  11. const DATA = `text/plain,${stringAsBase64(RESOURCE_TEXT)}`;
  12. const DATA_URL = `data:${DATA.replace(',', ';base64,')}`;
  13. test('@resource decoding', async () => {
  14. expect(decodeResource(DATA)).toEqual(RESOURCE_TEXT);
  15. expect(await blobAsText(decodeResource(DATA, true))).toEqual(RESOURCE_TEXT);
  16. expect(decodeResource(DATA, false)).toEqual(DATA_URL);
  17. });