@node-dlc/messaging
Version:
DLC Messaging Protocol
79 lines (68 loc) • 2.66 kB
text/typescript
import { expect } from 'chai';
import { HyperbolaPayoutCurvePiece } from '../../lib/messages/PayoutCurvePiece';
import { PayoutFunctionV0 } from '../../lib/messages/PayoutFunction';
describe('PayoutFunctionV0', () => {
describe('serialize', () => {
it('serializes', () => {
const instance = new PayoutFunctionV0();
instance.endpoint0 = BigInt(50000);
instance.endpointPayout0 = BigInt(100000);
instance.extraPrecision0 = 0;
const payoutCurvePiece = HyperbolaPayoutCurvePiece.deserialize(
Buffer.from(
'fda72c23010100000000fd1388000001010000010000000100000001ff000000012a05f2000000',
'hex',
),
);
instance.pieces = [
{
payoutCurvePiece,
endpoint: BigInt(999999),
endpointPayout: BigInt(0),
extraPrecision: 0,
},
];
expect(instance.serialize().toString("hex")).to.equal(
'fda726' + // type
'3b' + // length
'0001' + // num_pieces
'fdc350' + // endpoint_0
'fe000186a0' + // endpoint_payout_0
'0000' + // extra_precision
'fda72a23010100000000fd1388000001010000010000000100000001ff000000012a05f2000000' + // payout_curve_piece
'fe000f423f' + // endpoint_1
'00' + // endpoint_payout_1
'0000' // extra_precision_1
); // prettier-ignore
});
});
describe('deserialize', () => {
it('deserializes', () => {
const buf = Buffer.from(
'fda726' + // type
'3b' + // length
'0001' + // num_pieces
'fdc350' + // endpoint_0
'fe000186a0' + // endpoint_payout_0
'0000' + // extra_precision
'fda72c23010100000000fd1388000001010000010000000100000001ff000000012a05f2000000' + // payout_curve_piece
'fe000f423f' + // endpoint_1
'00' + // endpoint_payout_1
'0000' // extra_precision_1
, 'hex'); // prettier-ignore
const instance = PayoutFunctionV0.deserialize(buf);
expect(instance.endpoint0).to.equal(BigInt(50000));
expect(instance.endpointPayout0).to.equal(BigInt(100000));
expect(instance.extraPrecision0).to.equal(0);
expect(instance.pieces.length).to.equal(1);
expect(
instance.pieces[0].payoutCurvePiece.serialize().toString('hex'),
).to.equal(
'fda72a23010100000000fd1388000001010000010000000100000001ff000000012a05f2000000',
);
expect(instance.pieces[0].endpoint).to.equal(BigInt(999999));
expect(instance.pieces[0].endpointPayout).to.equal(BigInt(0));
expect(instance.pieces[0].extraPrecision).to.equal(0);
});
});
});