58 lines
2.7 KiB
TypeScript
58 lines
2.7 KiB
TypeScript
import * as chai from 'chai';
|
|
import * as _ from 'lodash';
|
|
import 'mocha';
|
|
|
|
import { calculateLiquidity } from '../src/utils/calculate_liquidity';
|
|
|
|
import { chaiSetup } from './utils/chai_setup';
|
|
import { testOrders } from './utils/test_orders';
|
|
import { baseUnitAmount } from './utils/utils';
|
|
|
|
chaiSetup.configure();
|
|
const expect = chai.expect;
|
|
const {
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEELESS,
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_MAKER_ASSET,
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_TAKER_ASSET,
|
|
} = testOrders;
|
|
|
|
// tslint:disable:custom-no-magic-numbers
|
|
describe('#calculateLiquidity', () => {
|
|
it('should provide correct liquidity result with feeless orders', () => {
|
|
const prunedSignedOrders = SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEELESS;
|
|
const { makerAssetAvailableInBaseUnits, takerAssetAvailableInBaseUnits } = calculateLiquidity(
|
|
prunedSignedOrders,
|
|
);
|
|
expect(makerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(11));
|
|
expect(takerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(9));
|
|
});
|
|
it('should provide correct liquidity result with orders with takerFees in takerAsset', () => {
|
|
const prunedSignedOrders = SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_TAKER_ASSET;
|
|
const { makerAssetAvailableInBaseUnits, takerAssetAvailableInBaseUnits } = calculateLiquidity(
|
|
prunedSignedOrders,
|
|
);
|
|
expect(makerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(11));
|
|
expect(takerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(15));
|
|
});
|
|
it('should provide correct liquidity result with orders with takerFees in makerAsset', () => {
|
|
const prunedSignedOrders = SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_MAKER_ASSET;
|
|
const { makerAssetAvailableInBaseUnits, takerAssetAvailableInBaseUnits } = calculateLiquidity(
|
|
prunedSignedOrders,
|
|
);
|
|
expect(makerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(5));
|
|
expect(takerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(9));
|
|
});
|
|
it('should provide correct liquidity result with mixed orders with fees and no fees', () => {
|
|
const prunedSignedOrders = _.concat(
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_MAKER_ASSET,
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEE_IN_TAKER_ASSET,
|
|
SIGNED_ORDERS_WITH_FILLABLE_AMOUNTS_FEELESS,
|
|
);
|
|
const { makerAssetAvailableInBaseUnits, takerAssetAvailableInBaseUnits } = calculateLiquidity(
|
|
prunedSignedOrders,
|
|
);
|
|
expect(makerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(27));
|
|
expect(takerAssetAvailableInBaseUnits).to.bignumber.eq(baseUnitAmount(33));
|
|
});
|
|
});
|