UNPKG

packme-js

Version:

Blazing fast binary serialization via auto-generated classes from simple JSON manifest files.

163 lines (157 loc) 7.12 kB
import { PackMe } from 'packme'; import { packmeTestMessageFactory, TestMessage, SubObject, SubSubObject, NestedObject, TestEnum } from './generated/packme-test.generated.js'; function generateTestMessage() { return new TestMessage( new Uint8Array([1,2,3,4,5,6,7,8,9,10,11,12]), new Uint8Array([1,2,3,4,5,6,7,8,9,10,11,12]), [ new Uint8Array([1,2,3,4]), new Uint8Array([2,3,4,1]), new Uint8Array([3,4,1,2]), new Uint8Array([5,1,2,3]) ], [ new Uint8Array([1,2,3,4]), new Uint8Array([2,3,4,1]), new Uint8Array([3,4,1,2]), new Uint8Array([5,1,2,3]) ], -128, 255, -32768, 65535, -2147483648, 4294967295, -9223372036854775808n, 9223372036854775807n, Infinity, Number.MAX_VALUE, true, "'👍 You're pretty good!", [9,8,7,6,5,4,3,2,1,0], TestEnum.two, new NestedObject(255, 'I am nested 😎'), [[1],[2,3],[4,5,6],[7,8,9,10]], new SubObject(128, 'I am inherited from nested 😎', Infinity), new SubSubObject(129, 'I am inherited from sub 😎', -Infinity, 1234567890), [ new SubSubObject(100, '200', 300, 400), new NestedObject(1, '22'), new SubObject(3, '44',5.55) ], -128, 255, -32768, 65535, -2147483648, 4294967295, -9223372036854775808n, 9223372036854775807n, Infinity, Number.MAX_VALUE, true, "'👍 You're pretty good!", [9,8,7,6,5,4,3,2,1,0], TestEnum.two, new NestedObject(255, 'I am nested 😎'), [[1],[2,3],[4,5,6],[7,8,9,10]], new SubObject(128, 'I am inherited from nested 😎', Infinity), new SubSubObject(129, 'I am inherited from sub 😎', -Infinity, 1234567890), [ new SubSubObject(100, '200', 300, 400), new NestedObject(1, '22'), new SubObject(3, '44',5.55) ] ); } describe('PackMe', () => { test('PackMe.pack(PackMeMessage message) returns Uint8Array', () => { let packme = new PackMe(); let data = packme.pack(generateTestMessage()); expect(data).toBeInstanceOf(Uint8Array); }); test('PackMe.unpack(Uint8Array data) returns TestMessage', () => { let packme = new PackMe((err, stack) => { console.error(err); if (stack) console.error(stack); }); packme.register(packmeTestMessageFactory); let data = packme.pack(generateTestMessage()); let message = packme.unpack(data); expect(message).toBeInstanceOf(TestMessage); }); test('PackMe.unpack(PackMe.pack(message)) returns message with matching properties', () => { let packme = new PackMe(); packme.register(packmeTestMessageFactory); let data = packme.pack(generateTestMessage()); let message = packme.unpack(data); let sample = generateTestMessage(); expect(message.reqId).toEqual(sample.reqId); expect(message.reqIds).toEqual(sample.reqIds); expect(message.reqInt8).toEqual(sample.reqInt8); expect(message.reqUint8).toEqual(sample.reqUint8); expect(message.reqInt16).toEqual(sample.reqInt16); expect(message.reqUint16).toEqual(sample.reqUint16); expect(message.reqInt32).toEqual(sample.reqInt32); expect(message.reqUint32).toEqual(sample.reqUint32); expect(message.reqInt64).toEqual(sample.reqInt64); expect(message.reqUint64).toEqual(sample.reqUint64); expect(message.reqFloat).toEqual(sample.reqFloat); expect(message.reqDouble).toEqual(sample.reqDouble); expect(message.reqBool).toEqual(sample.reqBool); expect(message.reqString).toEqual(sample.reqString); expect(message.reqList).toEqual(sample.reqList); expect(message.reqEnum).toEqual(sample.reqEnum); expect(message.reqNested.a).toEqual(sample.reqNested.a); expect(message.reqNested.b).toEqual(sample.reqNested.b); expect(message.reqNestedList).toEqual(sample.reqNestedList); expect(message.reqInherited.constructor.name).toEqual('SubObject'); expect(message.reqInherited.a).toEqual(sample.reqInherited.a); expect(message.reqInherited.b).toEqual(sample.reqInherited.b); expect(message.reqInherited.c).toEqual(sample.reqInherited.c); expect(message.reqInheritedMore.constructor.name).toEqual('SubSubObject'); expect(message.reqInheritedMore.a).toEqual(sample.reqInheritedMore.a); expect(message.reqInheritedMore.b).toEqual(sample.reqInheritedMore.b); expect(message.reqInheritedMore.c).toEqual(sample.reqInheritedMore.c); expect(message.reqInheritedMore.d).toEqual(sample.reqInheritedMore.d); expect(message.reqMixedInherited[0] instanceof SubSubObject).toBe(true); expect(message.reqMixedInherited[2] instanceof SubObject).toBe(true); expect(message.optId).toEqual(sample.optId); expect(message.optIds).toEqual(sample.optIds); expect(message.optInt8).toEqual(sample.optInt8); expect(message.optUint8).toEqual(sample.optUint8); expect(message.optInt16).toEqual(sample.optInt16); expect(message.optUint16).toEqual(sample.optUint16); expect(message.optInt32).toEqual(sample.optInt32); expect(message.optUint32).toEqual(sample.optUint32); expect(message.optInt64).toEqual(sample.optInt64); expect(message.optUint64).toEqual(sample.optUint64); expect(message.optFloat).toEqual(sample.optFloat); expect(message.optDouble).toEqual(sample.optDouble); expect(message.optBool).toEqual(sample.optBool); expect(message.optString).toEqual(sample.optString); expect(message.optList).toEqual(sample.optList); expect(message.optEnum).toEqual(sample.optEnum); expect(message.optNested.a).toEqual(sample.optNested.a); expect(message.optNested.b).toEqual(sample.optNested.b); expect(message.optNestedList).toEqual(sample.optNestedList); expect(message.optInherited.constructor.name).toEqual('SubObject'); expect(message.optInherited.a).toEqual(sample.optInherited.a); expect(message.optInherited.b).toEqual(sample.optInherited.b); expect(message.optInherited.c).toEqual(sample.optInherited.c); expect(message.optInheritedMore.constructor.name).toEqual('SubSubObject'); expect(message.optInheritedMore.a).toEqual(sample.optInheritedMore.a); expect(message.optInheritedMore.b).toEqual(sample.optInheritedMore.b); expect(message.optInheritedMore.c).toEqual(sample.optInheritedMore.c); expect(message.optInheritedMore.d).toEqual(sample.optInheritedMore.d); expect(message.optMixedInherited[0] instanceof SubSubObject).toBe(true); expect(message.optMixedInherited[2] instanceof SubObject).toBe(true); }); });