| import LowLevelBinary, * as LLB from '../LowLevelBinary.js'; |
| import * as assert from '../assert.js'; |
| |
| let values = []; |
| for (let i = LLB.varuint32Min; i !== LLB.varuint32Min + 1024; ++i) values.push(i); |
| for (let i = LLB.varuint32Max; i !== LLB.varuint32Max - 1024; --i) values.push(i); |
| |
| for (const i of values) { |
| let b = new LowLevelBinary(); |
| b.varuint32(i); |
| const v = b.getVaruint32(0); |
| if (v.value !== i) |
| throw new Error(`Wrote "${i}" and read back "${v}"`); |
| if (v.next !== b.getSize()) |
| throw new Error(`Size ${v.next}, expected ${b.getSize()}`); |
| } |
| |
| for (let i = 0; i < LLB.varBitsMax + 1; ++i) { |
| let b = new LowLevelBinary(); |
| for (let j = 0; j < i; ++j) |
| b.uint8(0x80); |
| assert.throws(() => b.getVarint32(0), RangeError, `[${i}, ${i+1}) is out of buffer range [0, ${i})`); |
| } |
| |
| let b = new LowLevelBinary(); |
| for (let i = 0; i < LLB.varBitsMax; ++i) |
| b.uint8(0x80); |
| b.uint8(0x00); |
| assert.throws(() => b.getVarint32(0), RangeError, `Shifting too much at 6`); |