UNPKG

qrloop

Version:

Envelop big blob of data into frames that can be displayed in series of QR Codes

40 lines 2.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const __1 = require(".."); test("'hello world' with 4 replicas", () => { const str = "hello world"; const framesExport = (0, __1.dataToFrames)(Buffer.from(str), 200, 4); const firstScanned = (0, __1.parseFramesReducer)(null, framesExport[0]); expect((0, __1.areFramesComplete)(firstScanned)).toBe(true); expect((0, __1.progressOfFrames)(firstScanned)).toBe(1); expect((0, __1.currentNumberOfFrames)(firstScanned)).toBe((0, __1.totalNumberOfFrames)(firstScanned)); expect((0, __1.framesToData)(firstScanned).toString()).toBe(str); const secondScanned = (0, __1.parseFramesReducer)(null, framesExport[1]); expect((0, __1.areFramesComplete)(secondScanned)).toBe(true); expect((0, __1.progressOfFrames)(secondScanned)).toBe(1); expect((0, __1.currentNumberOfFrames)(secondScanned)).toBe((0, __1.totalNumberOfFrames)(secondScanned)); expect((0, __1.framesToData)(secondScanned).toString()).toBe(str); const allScanned = framesExport.reduce(__1.parseFramesReducer, undefined); expect((0, __1.areFramesComplete)(allScanned)).toBe(true); expect((0, __1.progressOfFrames)(allScanned)).toBe(1); expect((0, __1.currentNumberOfFrames)(allScanned)).toBe((0, __1.totalNumberOfFrames)(allScanned)); expect((0, __1.framesToData)(allScanned).toString()).toBe(str); }); test("1/3 of the frames dropped in the middle is enough to recover with at least 3 replicas", () => { const data = Buffer.from(Array(1000) .fill(null) .map((_, i) => i % 256)); for (let replicas = 3; replicas < 10; replicas++) { let framesExport = (0, __1.dataToFrames)(data, 40, replicas); // drop 1/3 of the frames in the middle framesExport = framesExport .slice(0, Math.ceil(framesExport.length / 3)) .concat(framesExport.slice(Math.floor((2 * framesExport.length) / 3))); const framesImport = framesExport.reduce(__1.parseFramesReducer, undefined); expect((0, __1.areFramesComplete)(framesImport)).toBe(true); expect((0, __1.progressOfFrames)(framesImport)).toBe(1); expect((0, __1.currentNumberOfFrames)(framesImport)).toBe((0, __1.totalNumberOfFrames)(framesImport)); expect((0, __1.framesToData)(framesImport).toString("hex")).toBe(data.toString("hex")); } }); //# sourceMappingURL=replicas.js.map