qrloop
Version:
Envelop big blob of data into frames that can be displayed in series of QR Codes
41 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
test("premature framesToData should throw", () => {
expect(() => (0, __1.framesToData)()).toThrow();
expect(() => (0, __1.framesToData)(null)).toThrow();
const data = Buffer.from(Array(1000)
.fill(null)
.map((_, i) => i % 256));
const framesExport = (0, __1.dataToFrames)(data, 200);
expect(framesExport.length).toBeGreaterThan(2);
const framesImport = (0, __1.parseFramesReducer)((0, __1.parseFramesReducer)(null, framesExport[0]), framesExport[1]);
expect((0, __1.areFramesComplete)(framesImport)).toBe(false);
expect((0, __1.currentNumberOfFrames)(framesImport)).toBeLessThan((0, __1.totalNumberOfFrames)(framesImport) || -1);
expect(() => (0, __1.framesToData)(framesImport)).toThrow();
});
test("corrupted data through framesToData should throw", () => {
const data = Buffer.from(Array(1000)
.fill(null)
.map((_, i) => i % 256));
const framesExport = (0, __1.dataToFrames)(data, 200);
const framesImport = framesExport.reduce(__1.parseFramesReducer, null);
if (!framesImport)
throw new Error("falsy framesImport");
framesImport.frames[1].data[10]++; // corrupt one bit of the second frame
expect(() => (0, __1.framesToData)(framesImport)).toThrow();
});
test("corrupted data can be recoverable", () => {
const data = Buffer.from(Array(1000)
.fill(null)
.map((_, i) => i % 256));
const framesExport = (0, __1.dataToFrames)(data, 200);
const framesImport = framesExport.reduce(__1.parseFramesReducer, null);
if (!framesImport)
throw new Error("falsy framesImport");
framesImport.frames[1].data[10]++; // corrupt one bit of the second frame
expect(() => (0, __1.framesToData)(framesImport)).toThrow();
const framesImport2 = framesExport.reduce(__1.parseFramesReducer, framesImport);
expect((0, __1.framesToData)(framesImport2)).toMatchObject(data);
});
//# sourceMappingURL=errors.js.map