From 7bb9d8b03ab3ee457d23e185cd7a658d74f95cd4 Mon Sep 17 00:00:00 2001 From: James Towle Date: Wed, 3 Jul 2019 04:36:34 -0500 Subject: [PATCH] Created a test for case 3 of matchOrdersWithMaximalFill --- contracts/exchange/test/match_orders.ts | 40 +++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/contracts/exchange/test/match_orders.ts b/contracts/exchange/test/match_orders.ts index 4021dbda2a..47e9d78e8f 100644 --- a/contracts/exchange/test/match_orders.ts +++ b/contracts/exchange/test/match_orders.ts @@ -2067,6 +2067,46 @@ describe('matchOrders', () => { ); }); + it('should fully fill both orders and pay out profit in both maker assets', async () => { + // Create orders to match + const signedOrderLeft = await orderFactoryLeft.newSignedOrderAsync({ + makerAddress: makerAddressLeft, + makerAssetAmount: Web3Wrapper.toBaseUnitAmount(7, 0), + takerAssetAmount: Web3Wrapper.toBaseUnitAmount(4, 0), + feeRecipientAddress: feeRecipientAddressLeft, + }); + const signedOrderRight = await orderFactoryRight.newSignedOrderAsync({ + makerAddress: makerAddressRight, + makerAssetAmount: Web3Wrapper.toBaseUnitAmount(8, 0), + takerAssetAmount: Web3Wrapper.toBaseUnitAmount(6, 0), + }); + const expectedTransferAmounts = { + // Left Maker + leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(7, 0), + leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // 100% + rightMakerAssetBoughtByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(4, 0), // 100% + // Right Maker + rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(8, 0), + rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // 100% + leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(6, 0), // 100% + // Taker + leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(1, 0), + rightMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(4, 0), + leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // 100% + rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(100, 16), // + }; + // Match signedOrderLeft with signedOrderRight + await matchOrderTester.matchOrdersAndAssertEffectsAsync( + { + leftOrder: signedOrderLeft, + rightOrder: signedOrderRight, + }, + takerAddress, + expectedTransferAmounts, + true, + ); + }); + it('Should give left maker a better sell price when rounding', async () => { // Create orders to match const signedOrderLeft = await orderFactoryLeft.newSignedOrderAsync({