UNPKG

factom

Version:

Library to build applications on the Factom blockchain

61 lines (55 loc) 3.12 kB
const assert = require('chai').assert, { encodeVarInt } = require('../src/util'); describe('Test Util', function () { it('should encode to VarInt_F from number', function () { assert.deepEqual(encodeVarInt(0), Buffer.from([0])); assert.deepEqual(encodeVarInt(3), Buffer.from([3])); assert.deepEqual(encodeVarInt(127), Buffer.from([127])); assert.deepEqual(encodeVarInt(128), Buffer.from([129, 0])); assert.deepEqual(encodeVarInt(130), Buffer.from([129, 2])); assert.deepEqual(encodeVarInt(Math.pow(2, 16) - 1), Buffer.from([131, 255, 127])); assert.deepEqual(encodeVarInt(Math.pow(2, 16)), Buffer.from([132, 128, 0])); assert.deepEqual(encodeVarInt(Math.pow(2, 32) - 1), Buffer.from([143, 255, 255, 255, 127])); assert.deepEqual(encodeVarInt(Math.pow(2, 32)), Buffer.from([144, 128, 128, 128, 0])); }); it('should encode to VarInt_F from string', function () { assert.deepEqual(encodeVarInt('0'), Buffer.from([0])); assert.deepEqual(encodeVarInt('3'), Buffer.from([3])); assert.deepEqual(encodeVarInt('127'), Buffer.from([127])); assert.deepEqual(encodeVarInt('128'), Buffer.from([129, 0])); assert.deepEqual(encodeVarInt('130'), Buffer.from([129, 2])); assert.deepEqual(encodeVarInt('65535'), Buffer.from([131, 255, 127])); assert.deepEqual(encodeVarInt('65536'), Buffer.from([132, 128, 0])); assert.deepEqual(encodeVarInt('4294967295'), Buffer.from([143, 255, 255, 255, 127])); assert.deepEqual(encodeVarInt('4294967296'), Buffer.from([144, 128, 128, 128, 0])); // 2^64 - 1 assert.deepEqual( encodeVarInt('18446744073709551615'), Buffer.from([129, 255, 255, 255, 255, 255, 255, 255, 255, 127]) ); }); it('should have correct length once encoded', function () { assert.lengthOf(encodeVarInt(0), 1); assert.lengthOf(encodeVarInt(1), 1); assert.lengthOf(encodeVarInt(127), 1); assert.lengthOf(encodeVarInt(128), 2); assert.lengthOf(encodeVarInt(16383), 2); assert.lengthOf(encodeVarInt(16384), 3); assert.lengthOf(encodeVarInt(2097151), 3); assert.lengthOf(encodeVarInt(2097152), 4); assert.lengthOf(encodeVarInt(268435455), 4); assert.lengthOf(encodeVarInt(268435456), 5); assert.lengthOf(encodeVarInt(34359738367), 5); assert.lengthOf(encodeVarInt(34359738368), 6); assert.lengthOf(encodeVarInt(4398046511103), 6); assert.lengthOf(encodeVarInt(4398046511104), 7); assert.lengthOf(encodeVarInt(562949953421311), 7); assert.lengthOf(encodeVarInt(562949953421312), 8); assert.lengthOf(encodeVarInt(Number.MAX_SAFE_INTEGER), 8); assert.lengthOf(encodeVarInt('72057594037927935'), 8); assert.lengthOf(encodeVarInt('72057594037927936'), 9); assert.lengthOf(encodeVarInt('9223372036854775807'), 9); assert.lengthOf(encodeVarInt('9223372036854775808'), 10); assert.lengthOf(encodeVarInt('18446744073709551615'), 10); }); });