1
0
Fork 0
mirror of https://github.com/demostf/demo.js synced 2026-06-04 00:54:14 +02:00

simple parser for menu

This commit is contained in:
Robin Appelman 2017-09-01 23:15:51 +02:00
commit 70bdf0257e
4 changed files with 48 additions and 16 deletions

View file

@ -78,6 +78,32 @@ suite('Parser generator', () => {
assertGeneratedParser('length{u2}foo{$length}', stream, {length: 3, foo: expectedStream.readBitStream(3)}, 5);
});
test('Variable length *8', () => {
const stream = new BitStream(new ArrayBuffer(256));
stream.writeUint8(0b11111111);
stream.writeUint8(0b00001100);
stream.writeUint8(0b00001100);
stream.writeUint8(0b00001100);
stream.writeUint8(0b00001100);
stream.writeUint8(0b00001100);
stream.writeASCIIString('remaining');
stream.index = 0;
const expectedStream = new BitStream(new ArrayBuffer(256));
expectedStream.writeUint8(0b11111111);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.index = 2;
assertGeneratedParser('length{u2}foo{$length*8}', stream, {
length: 3,
foo: expectedStream.readBitStream(3 * 8)
}, 2 + 3 * 8);
});
test('Float32', () => {
const stream = new BitStream(new ArrayBuffer(64));
stream.writeFloat32(12.234233856201172);
@ -121,6 +147,21 @@ suite('Parser generator', () => {
bar: expectedStream.readBitStream(3)
}, 2 + 3);
});
test('Encode variable length*8', () => {
const expectedStream = new BitStream(new ArrayBuffer(256));
expectedStream.writeUint8(0b11111111);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.writeUint8(0b00001100);
expectedStream.index = 0;
assertGeneratedEncoder('foo{u2}bar{$foo*8}', {
foo: 3,
bar: expectedStream.readBitStream(3 * 8)
}, 2 + (3 * 8));
});
test('Encode float', () => {
assertGeneratedEncoder('foo{f32}', {
foo: 3.5