UNPKG

@node-dlc/messaging

Version:
118 lines (104 loc) 4.03 kB
import { expect } from 'chai'; import { HyperbolaPayoutCurvePiece, PolynomialPayoutCurvePiece, } from '../../lib/messages/PayoutCurvePiece'; describe('PayoutCurvePiece', () => { describe('PolynomialPayoutCurvePiece', () => { it('serializes', () => { const instance = new PolynomialPayoutCurvePiece(); instance.points = [ { eventOutcome: BigInt(0), outcomePayout: BigInt(0), extraPrecision: 0, }, { eventOutcome: BigInt(1), outcomePayout: BigInt(1), extraPrecision: 0, }, ]; expect(instance.serialize().toString("hex")).to.equal( 'fda728' + // type '0a' + // length '0002' + // num_points '00' + // event_outcome[0] '00' + // outcome_payout[0] '0000' + // extra_precision[0] '01' + // event_outcome[1] '01' + // outcome_payout[1] '0000'// extra_precision[1] ); // prettier-ignore }); it('deserializes', () => { const buf = Buffer.from( 'fda728' + // type '0a' + // length '0002' + // num_points '00' + // event_outcome[0] '00' + // outcome_payout[0] '0000' + // extra_precision[0] '01' + // event_outcome[1] '01' + // outcome_payout[1] '0000'// extra_precision[1] , 'hex'); // prettier-ignore const instance = PolynomialPayoutCurvePiece.deserialize(buf); expect(instance.points[0].eventOutcome).to.equal(BigInt(0)); expect(instance.points[0].outcomePayout).to.equal(BigInt(0)); expect(instance.points[0].extraPrecision).to.equal(0); expect(instance.points[1].eventOutcome).to.equal(BigInt(1)); expect(instance.points[1].outcomePayout).to.equal(BigInt(1)); expect(instance.points[1].extraPrecision).to.equal(0); }); }); describe('HyperbolaPayoutCurvePiece', () => { const piece = 'fda72a1901010000000100000000010000000100000001000000010000'; it('serializes', () => { const instance = new HyperbolaPayoutCurvePiece(); instance.usePositivePiece = true; instance.translateOutcomeSign = true; instance.translateOutcome = BigInt(0); instance.translateOutcomeExtraPrecision = 0; instance.translatePayoutSign = true; instance.translatePayout = BigInt(0); instance.translatePayoutExtraPrecision = 0; instance.a = BigInt(1); instance.aExtraPrecision = 0; instance.aSign = false; instance.b = BigInt(1); instance.bExtraPrecision = 0; instance.bSign = false; instance.c = BigInt(1); instance.cExtraPrecision = 0; instance.cSign = false; instance.d = BigInt(1); instance.dExtraPrecision = 0; instance.dSign = false; expect(instance.serialize().toString('hex')).to.equal(piece); }); it('deserializes', () => { const buf = Buffer.from(piece, 'hex'); const instance = HyperbolaPayoutCurvePiece.deserialize(buf); expect(instance.usePositivePiece).to.equal(true); expect(instance.translateOutcomeSign).to.equal(true); expect(instance.translateOutcome).to.equal(BigInt(0)); expect(instance.translateOutcomeExtraPrecision).to.equal(0); expect(instance.translatePayoutSign).to.equal(true); expect(instance.translatePayout).to.equal(BigInt(0)); expect(instance.translatePayoutExtraPrecision).to.equal(0); expect(instance.a).to.equal(BigInt(1)); expect(instance.aExtraPrecision).to.equal(0); expect(instance.aSign).to.equal(false); expect(instance.b).to.equal(BigInt(1)); expect(instance.bExtraPrecision).to.equal(0); expect(instance.bSign).to.equal(false); expect(instance.c).to.equal(BigInt(1)); expect(instance.cExtraPrecision).to.equal(0); expect(instance.cSign).to.equal(false); expect(instance.d).to.equal(BigInt(1)); expect(instance.dExtraPrecision).to.equal(0); expect(instance.dSign).to.equal(false); }); }); });