From ec4fb29b0ff021193c46d2da7cd3f447410da51c Mon Sep 17 00:00:00 2001 From: Ewout Stortenbeker <4ewout@gmail.com> Date: Mon, 25 Apr 2022 20:18:06 +0200 Subject: [PATCH] more serializing unit tests --- spec/transport.spec.js | 57 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/spec/transport.spec.js b/spec/transport.spec.js index e77929f..5a881ce 100644 --- a/spec/transport.spec.js +++ b/spec/transport.spec.js @@ -1,5 +1,7 @@ -const { Transport } = require('../dist/transport'); -const { PartialArray } = require('../dist/partial-array') +const { Transport } = require('../dist/cjs/transport'); +const { PartialArray } = require('../dist/cjs/partial-array'); +const { encodeString } = require('../dist/cjs/utils'); +const { PathReference } = require('../dist/cjs/path-reference'); describe('Transport (de)serializing', () => { @@ -22,6 +24,57 @@ describe('Transport (de)serializing', () => { ver = Transport.detectSerializeVersion(ser); expect(ver).toBe(2); + // v1 regexp + val = /test/ig; + ser = Transport.serialize(val); + expect(ser).toEqual({ map: 'regexp', val: { pattern: 'test', flags: 'gi' } }); + check = Transport.deserialize(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(1); + + // v2 regexp + ser = Transport.serialize2(val); + expect(ser).toEqual({ '.type': 'regexp', '.val': `/${val.source}/${val.flags}` }); + check = Transport.deserialize2(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(2); + + // v1 binary + val = encodeString('AceBase rocks').buffer; + ser = Transport.serialize(val); + expect(ser).toEqual({ map: 'binary', val:`<~6"=Im@<6!&Ec5H'Er~>` }); + check = Transport.deserialize(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(1); + + // v2 binary + ser = Transport.serialize2(val); + expect(ser).toEqual({ '.type': 'binary', '.val': `<~6"=Im@<6!&Ec5H'Er~>` }); + check = Transport.deserialize2(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(2); + + // v1 path reference + val = new PathReference('other/path'); + ser = Transport.serialize(val); + expect(ser).toEqual({ map: 'reference', val: `other/path` }); + check = Transport.deserialize(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(1); + + // v2 path reference + ser = Transport.serialize2(val); + expect(ser).toEqual({ '.type': 'reference', '.val': `other/path` }); + check = Transport.deserialize2(ser); + expect(check).toEqual(val); + ver = Transport.detectSerializeVersion(ser); + expect(ver).toBe(2); + }); it('object values', () => {