qrloop
Version:
Envelop big blob of data into frames that can be displayed in series of QR Codes
72 lines • 3.59 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
test("empty data", () => {
const str = "";
const framesExport = (0, __1.dataToFrames)(str);
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()).toBe(str);
});
test("'hello world'", () => {
const str = "hello world";
const framesExport = (0, __1.dataToFrames)(str);
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()).toBe(str);
});
test("'hello world' x1000", () => {
let str = Array(1000).fill("hello world").join(" ");
const framesExport = (0, __1.dataToFrames)(Buffer.from(str), 50);
let framesImport = null;
let frameLength = -1;
let frameCompleteReached = false;
let frameProgress = 0;
for (let i = 0; i < framesExport.length; i++) {
expect((0, __1.progressOfFrames)(framesImport)).toBeGreaterThanOrEqual(frameProgress);
frameProgress = (0, __1.progressOfFrames)(framesImport);
expect(frameProgress).toBeGreaterThanOrEqual(0);
expect(frameProgress).toBeLessThanOrEqual(1);
if ((0, __1.areFramesComplete)(framesImport)) {
frameCompleteReached = true;
}
else {
expect(frameCompleteReached).toBe(false); // never go back to uncomplete
}
framesImport = (0, __1.parseFramesReducer)(framesImport, framesExport[i]);
if (frameLength === -1)
frameLength = (0, __1.totalNumberOfFrames)(framesImport);
expect((0, __1.totalNumberOfFrames)(framesImport)).toBe(frameLength);
}
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()).toBe(str);
});
test("binary", () => {
const data = Buffer.from(Array(10000)
.fill(null)
.map((_, i) => i % 256));
const framesExport = (0, __1.dataToFrames)(data, 200);
expect(framesExport).toMatchSnapshot();
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"));
});
test("binary test many size", () => {
for (let i = 0; i < 2000; i++) {
const data = Buffer.from(Array(i)
.fill(null)
.map((_, i) => i % 256));
const framesExport = (0, __1.dataToFrames)(data, 200);
const framesImport = framesExport.reduce(__1.parseFramesReducer, undefined);
expect((0, __1.framesToData)(framesImport).toString("hex")).toBe(data.toString("hex"));
}
});
//# sourceMappingURL=basic.js.map