UNPKG

@se-puu/qpack

Version:

Quick serializer and de-serializer

117 lines (111 loc) 6.95 kB
import { QDecoder } from "../../src/decoder/decoder"; import { QEncoder } from "../../src/encoder/encoder"; import { Object16, Object5, Object8 } from "../../src/lib/size-enum"; import { isEqual, logTextMaker, randomHeavyObject, randomLightObject, randomPositiveIntBetween, runGc } from "../lib"; function _testObjectSync(data: object): boolean { const encoder = QEncoder.create(); const buf = encoder.encode(data); if (!buf) { return false; } // console.log("object",buf.__bufferOffset,((new TextEncoder()).encode(JSON.stringify(data))).length); const decoder=QDecoder.create(); const decode = decoder.decode<undefined>(buf); if (decode === undefined) { return false; } return isEqual(data, decode,encoder.__extRegistry);; } export function testObject5bitSync(): boolean { let ranVal = 0; let outputText = "Object\t\t>>>"; let status = true; outputText += logTextMaker(_testObjectSync({}) ? status &&= true : status = false, `5bit min Len:0`, "✓", "✗"); outputText += logTextMaker(_testObjectSync(randomHeavyObject(Object5.Max)) ? status &&= true : status = false, `5bit max Len:${Object5.Max}`, "✓", "✗"); ranVal = randomPositiveIntBetween(0, Object5.Max); outputText += logTextMaker(_testObjectSync(randomHeavyObject(ranVal)) ? status &&= true : status = false, `5bit random Len:${ranVal}`, "✓", "✗"); console.log(outputText); runGc(); return status; } export function testObject8bitSync(): boolean { let ranVal = 0; let outputText = "\t\t>>>"; let status = true; outputText += logTextMaker(_testObjectSync(randomLightObject(Object5.Max + 1)) ? status &&= true : status = false, `8bit min Len:${Object5.Max + 1}`, "✓", "✗"); outputText += logTextMaker(_testObjectSync(randomLightObject(Object8.Max)) ? status &&= true : status = false, `8bit max Len:${Object8.Max}`, "✓", "✗"); ranVal = randomPositiveIntBetween(Object5.Max + 1, Object8.Max); outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `8bit random Len:${ranVal}`, "✓", "✗"); console.log(outputText); runGc(); return status; } export function testObject16bitSync(): boolean { let ranVal = 0; let outputText = "\t\t>>>"; let status = true; outputText += logTextMaker(_testObjectSync(randomLightObject(Object8.Max + 1)) ? status &&= true : status = false, `16bit min Len:${Object8.Max + 1}`, "✓", "✗"); outputText += logTextMaker(_testObjectSync(randomLightObject(Object16.Max)) ? status &&= true : status = false, `16bit max Len:${Object16.Max}`, "✓", "✗"); ranVal = randomPositiveIntBetween(Object8.Max + 1, Object16.Max); outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `16bit random Len:${ranVal}`, "✓", "✗"); console.log(outputText); runGc(); return status; } export function testObject32bitSync(): boolean { let ranVal = 0; let outputText = "\t\t>>>"; let status = true; outputText += logTextMaker(_testObjectSync(randomLightObject(Object16.Max + 1)) ? status &&= true : status = false, `32bit min Len:${Object16.Max + 1}`, "✓", "✗"); outputText += logTextMaker(_testObjectSync(randomLightObject(2**20)) ? status &&= true : status = false, `32bit max Len:${2**20}`, "✓", "✗"); ranVal = randomPositiveIntBetween(Object16.Max + 1, 2**20); outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `32bit random Len:${ranVal}`, "✓", "✗"); console.log(outputText); runGc(); return status; } export function testObjectSync(): boolean { const status = testObject5bitSync() && testObject8bitSync(); return status; } export function testObjectSyncHeavy(): boolean { const status = testObject5bitSync() && testObject8bitSync() && testObject16bitSync() && testObject32bitSync(); return status; } // export function testObjectSyncHeavya(): boolean { // let ranVal = 0; // let outputText = "Object\t\t>>>"; // let status = true; // outputText += logTextMaker(_testObjectSync({}) ? status &&= true : status = false, `5bit min Len:0`, "✓", "✗"); // outputText += logTextMaker(_testObjectSync(randomHeavyObject(Object5.Max)) ? status &&= true : status = false, `5bit max Len:${Object5.Max}`, "✓", "✗"); // ranVal = randomPositiveIntBetween(0, Object5.Max); // outputText += logTextMaker(_testObjectSync(randomHeavyObject(ranVal)) ? status &&= true : status = false, `5bit random Len:${ranVal}`, "✓", "✗"); // console.log(outputText); // runGc(); // outputText = "\t\t>>>"; // outputText += logTextMaker(_testObjectSync(randomLightObject(Object5.Max + 1)) ? status &&= true : status = false, `8bit min Len:${Object5.Max + 1}`, "✓", "✗"); // outputText += logTextMaker(_testObjectSync(randomLightObject(Object8.Max + 1)) ? status &&= true : status = false, `8bit max Len:${Object8.Max}`, "✓", "✗"); // ranVal = randomPositiveIntBetween(Object5.Max + 1, Object8.Max); // outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `8bit random Len:${ranVal}`, "✓", "✗"); // console.log(outputText); // runGc(); // outputText = "\t\t>>>"; // outputText += logTextMaker(_testObjectSync(randomLightObject(Object8.Max + 1)) ? status &&= true : status = false, `16bit min Len:${Object8.Max + 1}`, "✓", "✗"); // outputText += logTextMaker(_testObjectSync(randomLightObject(Object16.Max)) ? status &&= true : status = false, `16bit max Len:${Object16.Max}`, "✓", "✗"); // ranVal = randomPositiveIntBetween(Object8.Max + 1, Object16.Max); // outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `16bit random Len:${ranVal}`, "✓", "✗"); // console.log(outputText); // runGc(); // outputText = "\t\t>>>"; // outputText += logTextMaker(_testObjectSync(randomLightObject(Object16.Max + 1)) ? status &&= true : status = false, `32bit min Len:${Object16.Max + 1}`, "✓", "✗"); // outputText += logTextMaker(_testObjectSync(randomLightObject(2**20)) ? status &&= true : status = false, `32bit max Len:${2**20}`, "✓", "✗"); // ranVal = randomPositiveIntBetween(Object16.Max + 1, 2**20); // outputText += logTextMaker(_testObjectSync(randomLightObject(ranVal)) ? status &&= true : status = false, `32bit random Len:${ranVal}`, "✓", "✗"); // console.log(outputText); // runGc(); // outputText = "\t\t>>>"; // outputText += logTextMaker(_testObjectSync({1:23,valuea:randomLightObject(322),te:"st",valueb:randomLightObject(10),nest:{data:randomLightObject(100)}}) ? status &&= true : status = false, `nested`, "✓", "✗"); // console.log(outputText); // runGc(); // return status; // }