Added a test for partial matching
This commit is contained in:
committed by
Amir Bandeali
parent
1ea220f44f
commit
29be79814f
@@ -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,
|
||||
|
@@ -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',
|
||||
|
Reference in New Issue
Block a user