Added a test for partial matching

This commit is contained in:
James Towle
2019-06-28 12:49:10 -05:00
committed by Amir Bandeali
parent 1ea220f44f
commit 29be79814f
3 changed files with 45 additions and 3 deletions

View File

@@ -1851,7 +1851,7 @@ describe('matchOrders', () => {
}
});
});
describe('batchMatchOrders', () => {
describe.only('batchMatchOrders', () => {
it('should fail if there are zero leftOrders', async () => {
const leftOrders: SignedOrder[] = [];
const rightOrders = [
@@ -1920,7 +1920,49 @@ describe('matchOrders', () => {
expectedTransferAmounts,
);
});
it('should correctly match two left orders to one complementary right order', async () => {
it('Should correctly match a partial fill', async () => {
const leftOrders = [
await orderFactoryLeft.newSignedOrderAsync({
makerAddress: makerAddressLeft,
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(4, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(2, 0),
feeRecipientAddress: feeRecipientAddressLeft,
}),
];
const rightOrders = [
await orderFactoryRight.newSignedOrderAsync({
makerAddress: makerAddressRight,
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(2, 0),
feeRecipientAddress: feeRecipientAddressRight,
}),
];
const expectedTransferAmounts = [
{
// Left Maker
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(2, 0),
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(50, 16), // 50%
// Right Maker
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // 100%
// Taker
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(50, 16), // 50%
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // 100%
},
];
await matchOrderTester.batchMatchOrdersAndAssertEffectsAsync(
{
leftOrders,
rightOrders,
leftOrdersTakerAssetFilledAmounts: [ZERO],
rightOrdersTakerAssetFilledAmounts: [ZERO],
},
takerAddress,
[[0, 0]],
expectedTransferAmounts,
);
});
it('should correctly match two left orders to one complementary right order', async () => {
const leftOrders = [
await orderFactoryLeft.newSignedOrderAsync({
makerAddress: makerAddressLeft,

View File

@@ -9,6 +9,7 @@ export const constants = {
'MARKET_BUY_ORDERS',
'MARKET_SELL_ORDERS',
'MATCH_ORDERS',
'BATCH_MATCH_ORDERS',
'CANCEL_ORDER',
'BATCH_CANCEL_ORDERS',
'CANCEL_ORDERS_UP_TO',