This repository has been archived on 2023-01-14. You can view files and clone it, but cannot push or open issues or pull requests.
libsiaweb/test/skylinkBitfield.test.ts

57 lines
2.4 KiB
TypeScript

import {
skylinkV1Bitfield,
parseSkylinkBitfield,
} from "../src/skylinkBitfield.js";
test.each([
{ dataSize: 0n, expectedFetchSize: 4096n },
{ dataSize: 1n, expectedFetchSize: 4096n },
{ dataSize: 100n, expectedFetchSize: 4096n },
{ dataSize: 200n, expectedFetchSize: 4096n },
{ dataSize: 4095n, expectedFetchSize: 4096n },
{ dataSize: 4096n, expectedFetchSize: 4096n },
{ dataSize: 4097n, expectedFetchSize: 8192n },
{ dataSize: 8191n, expectedFetchSize: 8192n },
{ dataSize: 8192n, expectedFetchSize: 8192n },
{ dataSize: 8193n, expectedFetchSize: 12288n },
{ dataSize: 12287n, expectedFetchSize: 12288n },
{ dataSize: 12288n, expectedFetchSize: 12288n },
{ dataSize: 12289n, expectedFetchSize: 16384n },
{ dataSize: 16384n, expectedFetchSize: 16384n },
{ dataSize: 32767n, expectedFetchSize: 32768n },
{ dataSize: 32768n, expectedFetchSize: 32768n },
{ dataSize: 32769n, expectedFetchSize: 36864n },
{ dataSize: 36863n, expectedFetchSize: 36864n },
{ dataSize: 36864n, expectedFetchSize: 36864n },
{ dataSize: 36865n, expectedFetchSize: 40960n },
{ dataSize: 45056n, expectedFetchSize: 45056n },
{ dataSize: 45057n, expectedFetchSize: 49152n },
{ dataSize: 65536n, expectedFetchSize: 65536n },
{ dataSize: 65537n, expectedFetchSize: 73728n },
{ dataSize: 106496n, expectedFetchSize: 106496n },
{ dataSize: 106497n, expectedFetchSize: 114688n },
{ dataSize: 163840n, expectedFetchSize: 163840n },
{ dataSize: 163841n, expectedFetchSize: 180224n },
{ dataSize: 491520n, expectedFetchSize: 491520n },
{ dataSize: 491521n, expectedFetchSize: 524288n },
{ dataSize: 720896n, expectedFetchSize: 720896n },
{ dataSize: 720897n, expectedFetchSize: 786432n },
{ dataSize: 1572864n, expectedFetchSize: 1572864n },
{ dataSize: 1572865n, expectedFetchSize: 1703936n },
{ dataSize: 3407872n, expectedFetchSize: 3407872n },
{ dataSize: 3407873n, expectedFetchSize: 3670016n },
])(
"skylinkV1Bitfield with data size $dataSize",
({ dataSize, expectedFetchSize }) => {
const skylink = new Uint8Array(34);
const [bitfield, errSVB] = skylinkV1Bitfield(dataSize);
expect(errSVB).toBe(null);
skylink.set(bitfield, 0);
const [version, offset, fetchSize, errPSB] = parseSkylinkBitfield(skylink);
expect(errPSB).toBe(null);
expect(version).toBe(1n);
expect(offset).toBe(0n);
expect(fetchSize).toBe(expectedFetchSize);
}
);