diff options
-rw-r--r-- | packages/contracts/test/exchange/wrapper.ts | 174 |
1 files changed, 90 insertions, 84 deletions
diff --git a/packages/contracts/test/exchange/wrapper.ts b/packages/contracts/test/exchange/wrapper.ts index b4ac12730..bf5a89222 100644 --- a/packages/contracts/test/exchange/wrapper.ts +++ b/packages/contracts/test/exchange/wrapper.ts @@ -112,34 +112,38 @@ describe('Exchange', () => { }); it('should transfer the correct amounts', async () => { - const order = await orderFactory.newSignedOrderAsync({ + const signedOrder = await orderFactory.newSignedOrderAsync({ makerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(100), 18), takerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(200), 18), }); - const fillTakerTokenAmount = order.takerTokenAmount.div(2); - await exWrapper.fillOrKillOrderAsync(order, taker, { + const fillTakerTokenAmount = signedOrder.takerTokenAmount.div(2); + await exWrapper.fillOrKillOrderAsync(signedOrder, taker, { fillTakerTokenAmount, }); const newBalances = await dmyBalances.getAsync(); const fillMakerTokenAmount = fillTakerTokenAmount - .times(order.makerTokenAmount) - .dividedToIntegerBy(order.takerTokenAmount); - const makerFee = order.makerFee.times(fillMakerTokenAmount).dividedToIntegerBy(order.makerTokenAmount); - const takerFee = order.takerFee.times(fillMakerTokenAmount).dividedToIntegerBy(order.makerTokenAmount); - expect(newBalances[maker][order.makerTokenAddress]).to.be.bignumber.equal( - balances[maker][order.makerTokenAddress].minus(fillMakerTokenAmount), + .times(signedOrder.makerTokenAmount) + .dividedToIntegerBy(signedOrder.takerTokenAmount); + const makerFee = signedOrder.makerFee + .times(fillMakerTokenAmount) + .dividedToIntegerBy(signedOrder.makerTokenAmount); + const takerFee = signedOrder.takerFee + .times(fillMakerTokenAmount) + .dividedToIntegerBy(signedOrder.makerTokenAmount); + expect(newBalances[maker][signedOrder.makerTokenAddress]).to.be.bignumber.equal( + balances[maker][signedOrder.makerTokenAddress].minus(fillMakerTokenAmount), ); - expect(newBalances[maker][order.takerTokenAddress]).to.be.bignumber.equal( - balances[maker][order.takerTokenAddress].add(fillTakerTokenAmount), + expect(newBalances[maker][signedOrder.takerTokenAddress]).to.be.bignumber.equal( + balances[maker][signedOrder.takerTokenAddress].add(fillTakerTokenAmount), ); expect(newBalances[maker][zrx.address]).to.be.bignumber.equal(balances[maker][zrx.address].minus(makerFee)); - expect(newBalances[taker][order.takerTokenAddress]).to.be.bignumber.equal( - balances[taker][order.takerTokenAddress].minus(fillTakerTokenAmount), + expect(newBalances[taker][signedOrder.takerTokenAddress]).to.be.bignumber.equal( + balances[taker][signedOrder.takerTokenAddress].minus(fillTakerTokenAmount), ); - expect(newBalances[taker][order.makerTokenAddress]).to.be.bignumber.equal( - balances[taker][order.makerTokenAddress].add(fillMakerTokenAmount), + expect(newBalances[taker][signedOrder.makerTokenAddress]).to.be.bignumber.equal( + balances[taker][signedOrder.makerTokenAddress].add(fillMakerTokenAmount), ); expect(newBalances[taker][zrx.address]).to.be.bignumber.equal(balances[taker][zrx.address].minus(takerFee)); expect(newBalances[feeRecipient][zrx.address]).to.be.bignumber.equal( @@ -147,30 +151,30 @@ describe('Exchange', () => { ); }); - it('should throw if an order is expired', async () => { - const order = await orderFactory.newSignedOrderAsync({ + it('should throw if an signedOrder is expired', async () => { + const signedOrder = await orderFactory.newSignedOrderAsync({ expirationUnixTimestampSec: new BigNumber(Math.floor((Date.now() - 10000) / 1000)), }); - return expect(exWrapper.fillOrKillOrderAsync(order, taker)).to.be.rejectedWith(constants.REVERT); + return expect(exWrapper.fillOrKillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); }); it('should throw if entire fillTakerTokenAmount not filled', async () => { - const order = await orderFactory.newSignedOrderAsync(); + const signedOrder = await orderFactory.newSignedOrderAsync(); const from = taker; - await exWrapper.fillOrderAsync(order, from, { - fillTakerTokenAmount: order.takerTokenAmount.div(2), + await exWrapper.fillOrderAsync(signedOrder, from, { + fillTakerTokenAmount: signedOrder.takerTokenAmount.div(2), }); - return expect(exWrapper.fillOrKillOrderAsync(order, taker)).to.be.rejectedWith(constants.REVERT); + return expect(exWrapper.fillOrKillOrderAsync(signedOrder, taker)).to.be.rejectedWith(constants.REVERT); }); }); describe('batch functions', () => { - let orders: SignedOrder[]; + let signedOrders: SignedOrder[]; beforeEach(async () => { - orders = await Promise.all([ + signedOrders = await Promise.all([ orderFactory.newSignedOrderAsync(), orderFactory.newSignedOrderAsync(), orderFactory.newSignedOrderAsync(), @@ -183,17 +187,17 @@ describe('Exchange', () => { const fillTakerTokenAmounts: BigNumber[] = []; const makerTokenAddress = rep.address; const takerTokenAddress = dgd.address; - orders.forEach(order => { - const fillTakerTokenAmount = order.takerTokenAmount.div(2); + signedOrders.forEach(signedOrder => { + const fillTakerTokenAmount = signedOrder.takerTokenAmount.div(2); const fillMakerTokenAmount = fillTakerTokenAmount - .times(order.makerTokenAmount) - .dividedToIntegerBy(order.takerTokenAmount); - const makerFee = order.makerFee + .times(signedOrder.makerTokenAmount) + .dividedToIntegerBy(signedOrder.takerTokenAmount); + const makerFee = signedOrder.makerFee .times(fillMakerTokenAmount) - .dividedToIntegerBy(order.makerTokenAmount); - const takerFee = order.takerFee + .dividedToIntegerBy(signedOrder.makerTokenAmount); + const takerFee = signedOrder.takerFee .times(fillMakerTokenAmount) - .dividedToIntegerBy(order.makerTokenAmount); + .dividedToIntegerBy(signedOrder.makerTokenAmount); fillTakerTokenAmounts.push(fillTakerTokenAmount); balances[maker][makerTokenAddress] = balances[maker][makerTokenAddress].minus(fillMakerTokenAmount); balances[maker][takerTokenAddress] = balances[maker][takerTokenAddress].add(fillTakerTokenAmount); @@ -206,7 +210,7 @@ describe('Exchange', () => { ); }); - await exWrapper.batchFillOrdersAsync(orders, taker, { + await exWrapper.batchFillOrdersAsync(signedOrders, taker, { fillTakerTokenAmounts, }); @@ -220,17 +224,17 @@ describe('Exchange', () => { const fillTakerTokenAmounts: BigNumber[] = []; const makerTokenAddress = rep.address; const takerTokenAddress = dgd.address; - orders.forEach(order => { - const fillTakerTokenAmount = order.takerTokenAmount.div(2); + signedOrders.forEach(signedOrder => { + const fillTakerTokenAmount = signedOrder.takerTokenAmount.div(2); const fillMakerTokenAmount = fillTakerTokenAmount - .times(order.makerTokenAmount) - .dividedToIntegerBy(order.takerTokenAmount); - const makerFee = order.makerFee + .times(signedOrder.makerTokenAmount) + .dividedToIntegerBy(signedOrder.takerTokenAmount); + const makerFee = signedOrder.makerFee .times(fillMakerTokenAmount) - .dividedToIntegerBy(order.makerTokenAmount); - const takerFee = order.takerFee + .dividedToIntegerBy(signedOrder.makerTokenAmount); + const takerFee = signedOrder.takerFee .times(fillMakerTokenAmount) - .dividedToIntegerBy(order.makerTokenAmount); + .dividedToIntegerBy(signedOrder.makerTokenAmount); fillTakerTokenAmounts.push(fillTakerTokenAmount); balances[maker][makerTokenAddress] = balances[maker][makerTokenAddress].minus(fillMakerTokenAmount); balances[maker][takerTokenAddress] = balances[maker][takerTokenAddress].add(fillTakerTokenAmount); @@ -243,7 +247,7 @@ describe('Exchange', () => { ); }); - await exWrapper.batchFillOrKillOrdersAsync(orders, taker, { + await exWrapper.batchFillOrKillOrdersAsync(signedOrders, taker, { fillTakerTokenAmounts, }); @@ -251,17 +255,17 @@ describe('Exchange', () => { expect(newBalances).to.be.deep.equal(balances); }); - it('should throw if a single order does not fill the expected amount', async () => { + it('should throw if a single signedOrder does not fill the expected amount', async () => { const fillTakerTokenAmounts: BigNumber[] = []; - orders.forEach(order => { - const fillTakerTokenAmount = order.takerTokenAmount.div(2); + signedOrders.forEach(signedOrder => { + const fillTakerTokenAmount = signedOrder.takerTokenAmount.div(2); fillTakerTokenAmounts.push(fillTakerTokenAmount); }); - await exWrapper.fillOrKillOrderAsync(orders[0], taker); + await exWrapper.fillOrKillOrderAsync(signedOrders[0], taker); return expect( - exWrapper.batchFillOrKillOrdersAsync(orders, taker, { + exWrapper.batchFillOrKillOrdersAsync(signedOrders, taker, { fillTakerTokenAmounts, }), ).to.be.rejectedWith(constants.REVERT); @@ -270,32 +274,34 @@ describe('Exchange', () => { describe('fillOrdersUpTo', () => { it('should stop when the entire fillTakerTokenAmount is filled', async () => { - const fillTakerTokenAmount = orders[0].takerTokenAmount.plus(orders[1].takerTokenAmount.div(2)); - await exWrapper.fillOrdersUpToAsync(orders, taker, { + const fillTakerTokenAmount = signedOrders[0].takerTokenAmount.plus( + signedOrders[1].takerTokenAmount.div(2), + ); + await exWrapper.fillOrdersUpToAsync(signedOrders, taker, { fillTakerTokenAmount, }); const newBalances = await dmyBalances.getAsync(); - const fillMakerTokenAmount = orders[0].makerTokenAmount.add( - orders[1].makerTokenAmount.dividedToIntegerBy(2), + const fillMakerTokenAmount = signedOrders[0].makerTokenAmount.add( + signedOrders[1].makerTokenAmount.dividedToIntegerBy(2), ); - const makerFee = orders[0].makerFee.add(orders[1].makerFee.dividedToIntegerBy(2)); - const takerFee = orders[0].takerFee.add(orders[1].takerFee.dividedToIntegerBy(2)); - expect(newBalances[maker][orders[0].makerTokenAddress]).to.be.bignumber.equal( - balances[maker][orders[0].makerTokenAddress].minus(fillMakerTokenAmount), + const makerFee = signedOrders[0].makerFee.add(signedOrders[1].makerFee.dividedToIntegerBy(2)); + const takerFee = signedOrders[0].takerFee.add(signedOrders[1].takerFee.dividedToIntegerBy(2)); + expect(newBalances[maker][signedOrders[0].makerTokenAddress]).to.be.bignumber.equal( + balances[maker][signedOrders[0].makerTokenAddress].minus(fillMakerTokenAmount), ); - expect(newBalances[maker][orders[0].takerTokenAddress]).to.be.bignumber.equal( - balances[maker][orders[0].takerTokenAddress].add(fillTakerTokenAmount), + expect(newBalances[maker][signedOrders[0].takerTokenAddress]).to.be.bignumber.equal( + balances[maker][signedOrders[0].takerTokenAddress].add(fillTakerTokenAmount), ); expect(newBalances[maker][zrx.address]).to.be.bignumber.equal( balances[maker][zrx.address].minus(makerFee), ); - expect(newBalances[taker][orders[0].takerTokenAddress]).to.be.bignumber.equal( - balances[taker][orders[0].takerTokenAddress].minus(fillTakerTokenAmount), + expect(newBalances[taker][signedOrders[0].takerTokenAddress]).to.be.bignumber.equal( + balances[taker][signedOrders[0].takerTokenAddress].minus(fillTakerTokenAmount), ); - expect(newBalances[taker][orders[0].makerTokenAddress]).to.be.bignumber.equal( - balances[taker][orders[0].makerTokenAddress].add(fillMakerTokenAmount), + expect(newBalances[taker][signedOrders[0].makerTokenAddress]).to.be.bignumber.equal( + balances[taker][signedOrders[0].makerTokenAddress].add(fillMakerTokenAmount), ); expect(newBalances[taker][zrx.address]).to.be.bignumber.equal( balances[taker][zrx.address].minus(takerFee), @@ -305,28 +311,28 @@ describe('Exchange', () => { ); }); - it('should fill all orders if cannot fill entire fillTakerTokenAmount', async () => { + it('should fill all signedOrders if cannot fill entire fillTakerTokenAmount', async () => { const fillTakerTokenAmount = ZeroEx.toBaseUnitAmount(new BigNumber(100000), 18); - orders.forEach(order => { - balances[maker][order.makerTokenAddress] = balances[maker][order.makerTokenAddress].minus( - order.makerTokenAmount, - ); - balances[maker][order.takerTokenAddress] = balances[maker][order.takerTokenAddress].add( - order.takerTokenAmount, - ); - balances[maker][zrx.address] = balances[maker][zrx.address].minus(order.makerFee); - balances[taker][order.makerTokenAddress] = balances[taker][order.makerTokenAddress].add( - order.makerTokenAmount, + signedOrders.forEach(signedOrder => { + balances[maker][signedOrder.makerTokenAddress] = balances[maker][ + signedOrder.makerTokenAddress + ].minus(signedOrder.makerTokenAmount); + balances[maker][signedOrder.takerTokenAddress] = balances[maker][signedOrder.takerTokenAddress].add( + signedOrder.takerTokenAmount, ); - balances[taker][order.takerTokenAddress] = balances[taker][order.takerTokenAddress].minus( - order.takerTokenAmount, + balances[maker][zrx.address] = balances[maker][zrx.address].minus(signedOrder.makerFee); + balances[taker][signedOrder.makerTokenAddress] = balances[taker][signedOrder.makerTokenAddress].add( + signedOrder.makerTokenAmount, ); - balances[taker][zrx.address] = balances[taker][zrx.address].minus(order.takerFee); + balances[taker][signedOrder.takerTokenAddress] = balances[taker][ + signedOrder.takerTokenAddress + ].minus(signedOrder.takerTokenAmount); + balances[taker][zrx.address] = balances[taker][zrx.address].minus(signedOrder.takerFee); balances[feeRecipient][zrx.address] = balances[feeRecipient][zrx.address].add( - order.makerFee.add(order.takerFee), + signedOrder.makerFee.add(signedOrder.takerFee), ); }); - await exWrapper.fillOrdersUpToAsync(orders, taker, { + await exWrapper.fillOrdersUpToAsync(signedOrders, taker, { fillTakerTokenAmount, }); @@ -334,15 +340,15 @@ describe('Exchange', () => { expect(newBalances).to.be.deep.equal(balances); }); - it('should throw when an order does not use the same takerTokenAddress', async () => { - orders = await Promise.all([ + it('should throw when an signedOrder does not use the same takerTokenAddress', async () => { + signedOrders = await Promise.all([ orderFactory.newSignedOrderAsync(), orderFactory.newSignedOrderAsync({ takerTokenAddress: zrx.address }), orderFactory.newSignedOrderAsync(), ]); return expect( - exWrapper.fillOrdersUpToAsync(orders, taker, { + exWrapper.fillOrdersUpToAsync(signedOrders, taker, { fillTakerTokenAmount: ZeroEx.toBaseUnitAmount(new BigNumber(1000), 18), }), ).to.be.rejectedWith(constants.REVERT); @@ -350,13 +356,13 @@ describe('Exchange', () => { }); describe('batchCancelOrders', () => { - it('should be able to cancel multiple orders', async () => { - const cancelTakerTokenAmounts = _.map(orders, order => order.takerTokenAmount); - await exWrapper.batchCancelOrdersAsync(orders, maker, { + it('should be able to cancel multiple signedOrders', async () => { + const cancelTakerTokenAmounts = _.map(signedOrders, signedOrder => signedOrder.takerTokenAmount); + await exWrapper.batchCancelOrdersAsync(signedOrders, maker, { cancelTakerTokenAmounts, }); - await exWrapper.batchFillOrdersAsync(orders, taker, { + await exWrapper.batchFillOrdersAsync(signedOrders, taker, { fillTakerTokenAmounts: cancelTakerTokenAmounts, }); const newBalances = await dmyBalances.getAsync(); |