@0x/contracts-exchange
: Fix broken match orders tests
This commit is contained in:
parent
d2f10d5834
commit
1ab62b7a80
@ -4,8 +4,6 @@ import { DummyERC721TokenContract } from '@0x/contracts-erc721';
|
|||||||
import {
|
import {
|
||||||
chaiSetup,
|
chaiSetup,
|
||||||
constants,
|
constants,
|
||||||
ERC20BalancesByOwner,
|
|
||||||
ERC721TokenIdsByOwner,
|
|
||||||
OrderFactory,
|
OrderFactory,
|
||||||
provider,
|
provider,
|
||||||
txDefaults,
|
txDefaults,
|
||||||
@ -33,7 +31,7 @@ const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
|||||||
chaiSetup.configure();
|
chaiSetup.configure();
|
||||||
const expect = chai.expect;
|
const expect = chai.expect;
|
||||||
|
|
||||||
describe('matchOrders', () => {
|
describe.only('matchOrders', () => {
|
||||||
let chainId: number;
|
let chainId: number;
|
||||||
let makerAddressLeft: string;
|
let makerAddressLeft: string;
|
||||||
let makerAddressRight: string;
|
let makerAddressRight: string;
|
||||||
@ -51,8 +49,6 @@ describe('matchOrders', () => {
|
|||||||
let erc20Proxy: ERC20ProxyContract;
|
let erc20Proxy: ERC20ProxyContract;
|
||||||
let erc721Proxy: ERC721ProxyContract;
|
let erc721Proxy: ERC721ProxyContract;
|
||||||
|
|
||||||
let erc20BalancesByOwner: ERC20BalancesByOwner;
|
|
||||||
let erc721TokenIdsByOwner: ERC721TokenIdsByOwner;
|
|
||||||
let exchangeWrapper: ExchangeWrapper;
|
let exchangeWrapper: ExchangeWrapper;
|
||||||
let erc20Wrapper: ERC20Wrapper;
|
let erc20Wrapper: ERC20Wrapper;
|
||||||
let erc721Wrapper: ERC721Wrapper;
|
let erc721Wrapper: ERC721Wrapper;
|
||||||
@ -82,23 +78,14 @@ describe('matchOrders', () => {
|
|||||||
chainId = await providerUtils.getChainIdAsync(provider);
|
chainId = await providerUtils.getChainIdAsync(provider);
|
||||||
// Create accounts
|
// Create accounts
|
||||||
const accounts = await web3Wrapper.getAvailableAddressesAsync();
|
const accounts = await web3Wrapper.getAvailableAddressesAsync();
|
||||||
// Hack(albrow): Both Prettier and TSLint insert a trailing comma below
|
const usedAddresses = [
|
||||||
// but that is invalid syntax as of TypeScript version >= 2.8. We don't
|
|
||||||
// have the right fine-grained configuration options in TSLint,
|
|
||||||
// Prettier, or TypeScript, to reconcile this, so we will just have to
|
|
||||||
// wait for them to sort it out. We disable TSLint and Prettier for
|
|
||||||
// this part of the code for now. This occurs several times in this
|
|
||||||
// file. See https://github.com/prettier/prettier/issues/4624.
|
|
||||||
// prettier-ignore
|
|
||||||
const usedAddresses = ([
|
|
||||||
owner,
|
owner,
|
||||||
makerAddressLeft,
|
makerAddressLeft,
|
||||||
makerAddressRight,
|
makerAddressRight,
|
||||||
takerAddress,
|
takerAddress,
|
||||||
feeRecipientAddressLeft,
|
feeRecipientAddressLeft,
|
||||||
// tslint:disable-next-line:trailing-comma
|
feeRecipientAddressRight,
|
||||||
feeRecipientAddressRight
|
] = accounts;
|
||||||
] = _.slice(accounts, 0, 6));
|
|
||||||
// Create wrappers
|
// Create wrappers
|
||||||
erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner);
|
erc20Wrapper = new ERC20Wrapper(provider, usedAddresses, owner);
|
||||||
erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner);
|
erc721Wrapper = new ERC721Wrapper(provider, usedAddresses, owner);
|
||||||
@ -151,8 +138,8 @@ describe('matchOrders', () => {
|
|||||||
// Set default addresses
|
// Set default addresses
|
||||||
defaultERC20MakerAssetAddress = erc20TokenA.address;
|
defaultERC20MakerAssetAddress = erc20TokenA.address;
|
||||||
defaultERC20TakerAssetAddress = erc20TokenB.address;
|
defaultERC20TakerAssetAddress = erc20TokenB.address;
|
||||||
defaultFeeTokenAddress = feeToken.address;
|
|
||||||
defaultERC721AssetAddress = erc721Token.address;
|
defaultERC721AssetAddress = erc721Token.address;
|
||||||
|
defaultFeeTokenAddress = feeToken.address;
|
||||||
const domain = {
|
const domain = {
|
||||||
verifyingContractAddress: exchange.address,
|
verifyingContractAddress: exchange.address,
|
||||||
chainId,
|
chainId,
|
||||||
@ -198,11 +185,6 @@ describe('matchOrders', () => {
|
|||||||
await blockchainLifecycle.revertAsync();
|
await blockchainLifecycle.revertAsync();
|
||||||
});
|
});
|
||||||
describe('matchOrders', () => {
|
describe('matchOrders', () => {
|
||||||
beforeEach(async () => {
|
|
||||||
erc20BalancesByOwner = await erc20Wrapper.getBalancesAsync();
|
|
||||||
erc721TokenIdsByOwner = await erc721Wrapper.getBalancesAsync();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('Should transfer correct amounts when right order is fully filled and values pass isRoundingErrorFloor but fail isRoundingErrorCeil', async () => {
|
it('Should transfer correct amounts when right order is fully filled and values pass isRoundingErrorFloor but fail isRoundingErrorCeil', async () => {
|
||||||
// Create orders to match
|
// Create orders to match
|
||||||
const signedOrderLeft = await orderFactoryLeft.newSignedOrderAsync({
|
const signedOrderLeft = await orderFactoryLeft.newSignedOrderAsync({
|
||||||
@ -213,8 +195,6 @@ describe('matchOrders', () => {
|
|||||||
});
|
});
|
||||||
const signedOrderRight = await orderFactoryRight.newSignedOrderAsync({
|
const signedOrderRight = await orderFactoryRight.newSignedOrderAsync({
|
||||||
makerAddress: makerAddressRight,
|
makerAddress: makerAddressRight,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
|
||||||
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(75), 0),
|
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(75), 0),
|
||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
||||||
feeRecipientAddress: feeRecipientAddressRight,
|
feeRecipientAddress: feeRecipientAddressRight,
|
||||||
@ -245,24 +225,21 @@ describe('matchOrders', () => {
|
|||||||
// Fees can be thought of as a tax paid by the seller, derived from the sale price.
|
// Fees can be thought of as a tax paid by the seller, derived from the sale price.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(75), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16), // 76.47%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16), // 76.47%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(75), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(75), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), 0),
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16), // 76.53%
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16), // 76.53%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -277,8 +254,6 @@ describe('matchOrders', () => {
|
|||||||
});
|
});
|
||||||
const signedOrderRight = await orderFactoryRight.newSignedOrderAsync({
|
const signedOrderRight = await orderFactoryRight.newSignedOrderAsync({
|
||||||
makerAddress: makerAddressRight,
|
makerAddress: makerAddressRight,
|
||||||
makerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20TakerAssetAddress),
|
|
||||||
takerAssetData: assetDataUtils.encodeERC20AssetData(defaultERC20MakerAssetAddress),
|
|
||||||
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(97), 0),
|
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(97), 0),
|
||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(14), 0),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(14), 0),
|
||||||
feeRecipientAddress: feeRecipientAddressRight,
|
feeRecipientAddress: feeRecipientAddressRight,
|
||||||
@ -309,24 +284,23 @@ describe('matchOrders', () => {
|
|||||||
// Fees can be thought of as a tax paid by the seller, derived from the sale price.
|
// Fees can be thought of as a tax paid by the seller, derived from the sale price.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(15), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(15), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.7835051546391752'), 16), // 92.78%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.7835051546391752'), 16), // 92.78%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.8571428571428571'), 16), // 92.85%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.8571428571428571'), 16), // 92.85%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -356,25 +330,24 @@ describe('matchOrders', () => {
|
|||||||
// fee slightly lower than the right taker.
|
// fee slightly lower than the right taker.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(16), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(16), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5060240963855421'), 16), // 26.506%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5060240963855421'), 16), // 26.506%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5306122448979591'), 16), // 26.531%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5306122448979591'), 16), // 26.531%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -401,25 +374,24 @@ describe('matchOrders', () => {
|
|||||||
// slightly lower than the left taker.
|
// slightly lower than the left taker.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(11), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(11), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -448,25 +420,24 @@ describe('matchOrders', () => {
|
|||||||
// fee slightly lower than the right taker.
|
// fee slightly lower than the right taker.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(16), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(16), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(22), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(13), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2650), 0), // 2650.6 rounded down tro 2650
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2650), 0), // 2650.6 rounded down tro 2650
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(2653), 0), // 2653.1 rounded down to 2653
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2653), 0), // 2653.1 rounded down to 2653
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -495,25 +466,24 @@ describe('matchOrders', () => {
|
|||||||
// fee slightly lower than the left taker.
|
// fee slightly lower than the left taker.
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(11), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(11), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(9166), 0), // 9166.6 rounded down to 9166
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(9166), 0), // 9166.6 rounded down to 9166
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(89), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(9175), 0), // 9175.2 rounded down to 9175
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(9175), 0), // 9175.2 rounded down to 9175
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -536,9 +506,8 @@ describe('matchOrders', () => {
|
|||||||
});
|
});
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1000), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1000), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1005), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
// Notes:
|
// Notes:
|
||||||
// i.
|
// i.
|
||||||
@ -554,21 +523,21 @@ describe('matchOrders', () => {
|
|||||||
// iv.
|
// iv.
|
||||||
// The right maker fee differs from the right taker fee because their exchange rate differs.
|
// The right maker fee differs from the right taker fee because their exchange rate differs.
|
||||||
// The right maker always receives the better exchange and fee price.
|
// The right maker always receives the better exchange and fee price.
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1005), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1005), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(503), 0),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(503), 0),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.2718720602069614'), 16), // 47.27%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.2718720602069614'), 16), // 47.27%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(497), 0),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(497), 0),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.3189087488240827'), 16), // 47.31%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.3189087488240827'), 16), // 47.31%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -613,24 +582,23 @@ describe('matchOrders', () => {
|
|||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -648,25 +616,22 @@ describe('matchOrders', () => {
|
|||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), 18),
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -684,25 +649,24 @@ describe('matchOrders', () => {
|
|||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 16), // 50%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 16), // 50%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 16), // 50%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 16), // 50%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -720,25 +684,24 @@ describe('matchOrders', () => {
|
|||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
// Match signedOrderLeft with signedOrderRight
|
// Match signedOrderLeft with signedOrderRight
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -754,33 +717,26 @@ describe('matchOrders', () => {
|
|||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
});
|
});
|
||||||
// Match orders
|
// Match orders
|
||||||
let newERC20BalancesByOwner: ERC20BalancesByOwner;
|
|
||||||
let newERC721TokenIdsByOwner: ERC721TokenIdsByOwner;
|
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 16), // 10%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
// prettier-ignore
|
// prettier-ignore
|
||||||
[
|
const matchResults = await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
newERC20BalancesByOwner,
|
{
|
||||||
// tslint:disable-next-line:trailing-comma
|
leftOrder: signedOrderLeft,
|
||||||
newERC721TokenIdsByOwner
|
rightOrder: signedOrderRight,
|
||||||
] = await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
},
|
||||||
signedOrderLeft,
|
|
||||||
signedOrderRight,
|
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
// Construct second right order
|
// Construct second right order
|
||||||
@ -792,31 +748,27 @@ describe('matchOrders', () => {
|
|||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 18),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 18),
|
||||||
});
|
});
|
||||||
// Match signedOrderLeft with signedOrderRight2
|
// Match signedOrderLeft with signedOrderRight2
|
||||||
const leftTakerAssetFilledAmount = signedOrderRight.makerAssetAmount;
|
|
||||||
const rightTakerAssetFilledAmount = new BigNumber(0);
|
|
||||||
const expectedTransferAmounts2 = {
|
const expectedTransferAmounts2 = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(45), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(45), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90% (10% paid earlier)
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90% (10% paid earlier)
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(45), 18),
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90%
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90%
|
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), 18),
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90% (10% paid earlier)
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90% (10% paid earlier)
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(90), 16), // 90%
|
|
||||||
};
|
};
|
||||||
|
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight2,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight2,
|
||||||
|
leftOrderTakerAssetFilledAmount: matchResults.orders.leftOrderTakerAssetFilledAmount,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
newERC20BalancesByOwner,
|
|
||||||
newERC721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts2,
|
expectedTransferAmounts2,
|
||||||
leftTakerAssetFilledAmount,
|
await matchOrderTester.getBalancesAsync(),
|
||||||
rightTakerAssetFilledAmount,
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -832,33 +784,25 @@ describe('matchOrders', () => {
|
|||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 18),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 18),
|
||||||
});
|
});
|
||||||
// Match orders
|
// Match orders
|
||||||
let newERC20BalancesByOwner: ERC20BalancesByOwner;
|
|
||||||
let newERC721TokenIdsByOwner: ERC721TokenIdsByOwner;
|
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 16), // 4%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 16), // 4%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(6), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(6), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 16), // 4%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(4), 16), // 4%
|
||||||
};
|
};
|
||||||
// prettier-ignore
|
const matchResults = await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
[
|
{
|
||||||
newERC20BalancesByOwner,
|
leftOrder: signedOrderLeft,
|
||||||
// tslint:disable-next-line:trailing-comma
|
rightOrder: signedOrderRight,
|
||||||
newERC721TokenIdsByOwner
|
},
|
||||||
] = await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
|
||||||
signedOrderLeft,
|
|
||||||
signedOrderRight,
|
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -871,34 +815,26 @@ describe('matchOrders', () => {
|
|||||||
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 18),
|
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(50), 18),
|
||||||
});
|
});
|
||||||
// Match signedOrderLeft2 with signedOrderRight
|
// Match signedOrderLeft2 with signedOrderRight
|
||||||
const leftTakerAssetFilledAmount = new BigNumber(0);
|
|
||||||
const takerAmountReceived = newERC20BalancesByOwner[takerAddress][defaultERC20MakerAssetAddress].minus(
|
|
||||||
erc20BalancesByOwner[takerAddress][defaultERC20MakerAssetAddress],
|
|
||||||
);
|
|
||||||
const rightTakerAssetFilledAmount = signedOrderLeft.makerAssetAmount.minus(takerAmountReceived);
|
|
||||||
const expectedTransferAmounts2 = {
|
const expectedTransferAmounts2 = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(48), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(48), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(48), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 18),
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), 18),
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(96), 16), // 96%
|
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft2,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft2,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
rightOrderTakerAssetFilledAmount: matchResults.orders.rightOrderTakerAssetFilledAmount,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
newERC20BalancesByOwner,
|
|
||||||
newERC721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts2,
|
expectedTransferAmounts2,
|
||||||
leftTakerAssetFilledAmount,
|
await matchOrderTester.getBalancesAsync(),
|
||||||
rightTakerAssetFilledAmount,
|
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -917,24 +853,23 @@ describe('matchOrders', () => {
|
|||||||
// Match orders
|
// Match orders
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -953,24 +888,23 @@ describe('matchOrders', () => {
|
|||||||
takerAddress = signedOrderLeft.makerAddress;
|
takerAddress = signedOrderLeft.makerAddress;
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -989,24 +923,23 @@ describe('matchOrders', () => {
|
|||||||
takerAddress = signedOrderRight.makerAddress;
|
takerAddress = signedOrderRight.makerAddress;
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1025,24 +958,23 @@ describe('matchOrders', () => {
|
|||||||
takerAddress = feeRecipientAddressLeft;
|
takerAddress = feeRecipientAddressLeft;
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1061,24 +993,23 @@ describe('matchOrders', () => {
|
|||||||
takerAddress = feeRecipientAddressRight;
|
takerAddress = feeRecipientAddressRight;
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1096,24 +1027,23 @@ describe('matchOrders', () => {
|
|||||||
// Match orders
|
// Match orders
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(5), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(3), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1248,24 +1178,21 @@ describe('matchOrders', () => {
|
|||||||
// Match orders
|
// Match orders
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(0), 18),
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 50%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 50%
|
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
@ -1286,24 +1213,23 @@ describe('matchOrders', () => {
|
|||||||
// Match orders
|
// Match orders
|
||||||
const expectedTransferAmounts = {
|
const expectedTransferAmounts = {
|
||||||
// Left Maker
|
// Left Maker
|
||||||
amountSoldByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
leftMakerAssetSoldByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(10), 18),
|
||||||
amountBoughtByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
leftMakerFeeAssetPaidByLeftMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByLeftMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
|
||||||
// Right Maker
|
// Right Maker
|
||||||
amountSoldByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
rightMakerAssetSoldByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(1), 0),
|
||||||
amountBoughtByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(8), 18),
|
leftMakerAssetBoughtByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(8), 18),
|
||||||
feePaidByRightMaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightMakerFeeAssetPaidByRightMakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
// Taker
|
// Taker
|
||||||
amountReceivedByTaker: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
leftMakerAssetReceivedByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(2), 18),
|
||||||
feePaidByTakerLeft: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
leftTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
feePaidByTakerRight: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
rightTakerFeeAssetPaidByTakerAmount: Web3Wrapper.toBaseUnitAmount(new BigNumber(100), 16), // 100%
|
||||||
};
|
};
|
||||||
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
await matchOrderTester.matchOrdersAndAssertEffectsAsync(
|
||||||
signedOrderLeft,
|
{
|
||||||
signedOrderRight,
|
leftOrder: signedOrderLeft,
|
||||||
|
rightOrder: signedOrderRight,
|
||||||
|
},
|
||||||
takerAddress,
|
takerAddress,
|
||||||
erc20BalancesByOwner,
|
|
||||||
erc721TokenIdsByOwner,
|
|
||||||
expectedTransferAmounts,
|
expectedTransferAmounts,
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
@ -32,14 +32,22 @@ export interface FillEventArgs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface MatchTransferAmounts {
|
export interface MatchTransferAmounts {
|
||||||
leftMakerAssetReceivedByRightMakerAmount: BigNumber;
|
// Assets being traded.
|
||||||
rightMakerAssetReceivedByLeftMakerAmount: BigNumber;
|
leftMakerAssetSoldByLeftMakerAmount: BigNumber; // leftMakerAssetBoughtByRightMakerAmount if omitted.
|
||||||
leftMakerFeeAssetPaidByLeftMakerAmount: BigNumber;
|
rightMakerAssetSoldByRightMakerAmount: BigNumber; // rightMakerAssetBoughtByLeftMakerAmount if omitted.
|
||||||
rightMakerFeeAssetPaidByRightMakerAmount: BigNumber;
|
rightMakerAssetBoughtByLeftMakerAmount: BigNumber; // rightMakerAssetSoldByRightMakerAmount if omitted.
|
||||||
leftMakerAssetReceivedByTakerAmount: BigNumber;
|
leftMakerAssetBoughtByRightMakerAmount: BigNumber; // leftMakerAssetSoldByLeftMakerAmount if omitted.
|
||||||
rightMakerAssetReceivedByTakerAmount: BigNumber;
|
|
||||||
leftTakerFeeAssetPaidByTakerAmount: BigNumber;
|
// Taker profit.
|
||||||
rightTakerFeeAssetPaidByTakerAmount: BigNumber;
|
leftMakerAssetReceivedByTakerAmount: BigNumber; // 0 if omitted.
|
||||||
|
rightMakerAssetReceivedByTakerAmount: BigNumber; // 0 if omitted.
|
||||||
|
|
||||||
|
// Maker fees.
|
||||||
|
leftMakerFeeAssetPaidByLeftMakerAmount: BigNumber; // 0 if omitted.
|
||||||
|
rightMakerFeeAssetPaidByRightMakerAmount: BigNumber; // 0 if omitted.
|
||||||
|
// Taker fees.
|
||||||
|
leftTakerFeeAssetPaidByTakerAmount: BigNumber; // 0 if omitted.
|
||||||
|
rightTakerFeeAssetPaidByTakerAmount: BigNumber; // 0 if omitted.
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface MatchResults {
|
export interface MatchResults {
|
||||||
@ -64,6 +72,7 @@ export class MatchOrderTester {
|
|||||||
public erc20Wrapper: ERC20Wrapper;
|
public erc20Wrapper: ERC20Wrapper;
|
||||||
public erc721Wrapper: ERC721Wrapper;
|
public erc721Wrapper: ERC721Wrapper;
|
||||||
public matchOrdersCallAsync?: MatchOrdersAsyncCall;
|
public matchOrdersCallAsync?: MatchOrdersAsyncCall;
|
||||||
|
private readonly _initialTokenBalancesPromise: Promise<TokenBalancesByOwner>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dev Constructs new MatchOrderTester.
|
* @dev Constructs new MatchOrderTester.
|
||||||
@ -83,6 +92,7 @@ export class MatchOrderTester {
|
|||||||
this.erc20Wrapper = erc20Wrapper;
|
this.erc20Wrapper = erc20Wrapper;
|
||||||
this.erc721Wrapper = erc721Wrapper;
|
this.erc721Wrapper = erc721Wrapper;
|
||||||
this.matchOrdersCallAsync = matchOrdersCallAsync;
|
this.matchOrdersCallAsync = matchOrdersCallAsync;
|
||||||
|
this._initialTokenBalancesPromise = this.getBalancesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -90,16 +100,20 @@ export class MatchOrderTester {
|
|||||||
* @param orders The matched orders and filled states.
|
* @param orders The matched orders and filled states.
|
||||||
* @param takerAddress Address of taker (the address who matched the two orders)
|
* @param takerAddress Address of taker (the address who matched the two orders)
|
||||||
* @param expectedTransferAmounts Expected amounts transferred as a result of order matching.
|
* @param expectedTransferAmounts Expected amounts transferred as a result of order matching.
|
||||||
|
* Omitted fields are either set to 0 or their complementary
|
||||||
|
* field.
|
||||||
* @return Results of `matchOrders()`.
|
* @return Results of `matchOrders()`.
|
||||||
*/
|
*/
|
||||||
public async matchOrdersAndAssertEffectsAsync(
|
public async matchOrdersAndAssertEffectsAsync(
|
||||||
orders: MatchedOrders,
|
orders: MatchedOrders,
|
||||||
takerAddress: string,
|
takerAddress: string,
|
||||||
expectedTransferAmounts: Partial<MatchTransferAmounts>,
|
expectedTransferAmounts: Partial<MatchTransferAmounts>,
|
||||||
|
initialTokenBalances?: TokenBalancesByOwner,
|
||||||
): Promise<MatchResults> {
|
): Promise<MatchResults> {
|
||||||
await assertInitialOrderStatesAsync(orders, this.exchangeWrapper);
|
await assertInitialOrderStatesAsync(orders, this.exchangeWrapper);
|
||||||
// Get the token balances before executing `matchOrders()`.
|
// Get the token balances before executing `matchOrders()`.
|
||||||
const initialTokenBalances = await this._getBalancesAsync();
|
const _initialTokenBalances = initialTokenBalances ?
|
||||||
|
initialTokenBalances : await this._initialTokenBalancesPromise;
|
||||||
// Execute `matchOrders()`
|
// Execute `matchOrders()`
|
||||||
const transactionReceipt = await this._executeMatchOrdersAsync(
|
const transactionReceipt = await this._executeMatchOrdersAsync(
|
||||||
orders.leftOrder,
|
orders.leftOrder,
|
||||||
@ -110,14 +124,14 @@ export class MatchOrderTester {
|
|||||||
const matchResults = simulateMatchOrders(
|
const matchResults = simulateMatchOrders(
|
||||||
orders,
|
orders,
|
||||||
takerAddress,
|
takerAddress,
|
||||||
initialTokenBalances,
|
_initialTokenBalances,
|
||||||
toFullMatchTransferAmounts(expectedTransferAmounts),
|
toFullMatchTransferAmounts(expectedTransferAmounts),
|
||||||
);
|
);
|
||||||
// Validate the simulation against realit.
|
// Validate the simulation against realit.
|
||||||
await assertMatchResultsAsync(
|
await assertMatchResultsAsync(
|
||||||
matchResults,
|
matchResults,
|
||||||
transactionReceipt,
|
transactionReceipt,
|
||||||
await this._getBalancesAsync(),
|
await this.getBalancesAsync(),
|
||||||
this.exchangeWrapper,
|
this.exchangeWrapper,
|
||||||
);
|
);
|
||||||
return matchResults;
|
return matchResults;
|
||||||
@ -126,15 +140,8 @@ export class MatchOrderTester {
|
|||||||
/**
|
/**
|
||||||
* @dev Fetch the current token balances of all known accounts.
|
* @dev Fetch the current token balances of all known accounts.
|
||||||
*/
|
*/
|
||||||
private async _getBalancesAsync(): Promise<TokenBalancesByOwner> {
|
public async getBalancesAsync(): Promise<TokenBalancesByOwner> {
|
||||||
const [ erc20, erc721 ] = await Promise.all([
|
return getTokenBalancesAsync(this.erc20Wrapper, this.erc721Wrapper);
|
||||||
this.erc20Wrapper.getBalancesAsync(),
|
|
||||||
this.erc721Wrapper.getBalancesAsync(),
|
|
||||||
]);
|
|
||||||
return {
|
|
||||||
erc20,
|
|
||||||
erc721,
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _executeMatchOrdersAsync(
|
private async _executeMatchOrdersAsync(
|
||||||
@ -161,15 +168,36 @@ export class MatchOrderTester {
|
|||||||
function toFullMatchTransferAmounts(
|
function toFullMatchTransferAmounts(
|
||||||
partial: Partial<MatchTransferAmounts>,
|
partial: Partial<MatchTransferAmounts>,
|
||||||
): MatchTransferAmounts {
|
): MatchTransferAmounts {
|
||||||
|
// prettier-ignore
|
||||||
return {
|
return {
|
||||||
leftMakerAssetReceivedByRightMakerAmount: partial.leftMakerAssetReceivedByRightMakerAmount || ZERO,
|
leftMakerAssetSoldByLeftMakerAmount:
|
||||||
rightMakerAssetReceivedByLeftMakerAmount: partial.rightMakerAssetReceivedByLeftMakerAmount || ZERO,
|
partial.leftMakerAssetSoldByLeftMakerAmount ||
|
||||||
leftMakerFeeAssetPaidByLeftMakerAmount: partial.leftMakerFeeAssetPaidByLeftMakerAmount || ZERO,
|
partial.leftMakerAssetBoughtByRightMakerAmount ||
|
||||||
rightMakerFeeAssetPaidByRightMakerAmount: partial.rightMakerFeeAssetPaidByRightMakerAmount || ZERO,
|
ZERO,
|
||||||
leftMakerAssetReceivedByTakerAmount: partial.leftMakerAssetReceivedByTakerAmount || ZERO,
|
rightMakerAssetSoldByRightMakerAmount:
|
||||||
rightMakerAssetReceivedByTakerAmount: partial.rightMakerAssetReceivedByTakerAmount || ZERO,
|
partial.rightMakerAssetSoldByRightMakerAmount ||
|
||||||
leftTakerFeeAssetPaidByTakerAmount: partial.leftTakerFeeAssetPaidByTakerAmount || ZERO,
|
partial.rightMakerAssetBoughtByLeftMakerAmount ||
|
||||||
rightTakerFeeAssetPaidByTakerAmount: partial.rightTakerFeeAssetPaidByTakerAmount || ZERO,
|
ZERO,
|
||||||
|
rightMakerAssetBoughtByLeftMakerAmount:
|
||||||
|
partial.rightMakerAssetBoughtByLeftMakerAmount ||
|
||||||
|
partial.rightMakerAssetSoldByRightMakerAmount ||
|
||||||
|
ZERO,
|
||||||
|
leftMakerAssetBoughtByRightMakerAmount:
|
||||||
|
partial.leftMakerAssetBoughtByRightMakerAmount ||
|
||||||
|
partial.leftMakerAssetSoldByLeftMakerAmount ||
|
||||||
|
ZERO,
|
||||||
|
leftMakerFeeAssetPaidByLeftMakerAmount:
|
||||||
|
partial.leftMakerFeeAssetPaidByLeftMakerAmount || ZERO,
|
||||||
|
rightMakerFeeAssetPaidByRightMakerAmount:
|
||||||
|
partial.rightMakerFeeAssetPaidByRightMakerAmount || ZERO,
|
||||||
|
leftMakerAssetReceivedByTakerAmount:
|
||||||
|
partial.leftMakerAssetReceivedByTakerAmount || ZERO,
|
||||||
|
rightMakerAssetReceivedByTakerAmount:
|
||||||
|
partial.rightMakerAssetReceivedByTakerAmount || ZERO,
|
||||||
|
leftTakerFeeAssetPaidByTakerAmount:
|
||||||
|
partial.leftTakerFeeAssetPaidByTakerAmount || ZERO,
|
||||||
|
rightTakerFeeAssetPaidByTakerAmount:
|
||||||
|
partial.rightTakerFeeAssetPaidByTakerAmount || ZERO,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,17 +216,18 @@ function simulateMatchOrders(
|
|||||||
tokenBalances: TokenBalancesByOwner,
|
tokenBalances: TokenBalancesByOwner,
|
||||||
transferAmounts: MatchTransferAmounts,
|
transferAmounts: MatchTransferAmounts,
|
||||||
): MatchResults {
|
): MatchResults {
|
||||||
|
// prettier-ignore
|
||||||
const matchResults = {
|
const matchResults = {
|
||||||
orders: {
|
orders: {
|
||||||
leftOrder: orders.leftOrder,
|
leftOrder: orders.leftOrder,
|
||||||
leftOrderTakerAssetFilledAmount:
|
leftOrderTakerAssetFilledAmount:
|
||||||
(orders.leftOrderTakerAssetFilledAmount || ZERO).plus(
|
(orders.leftOrderTakerAssetFilledAmount || ZERO).plus(
|
||||||
transferAmounts.rightMakerAssetReceivedByLeftMakerAmount,
|
transferAmounts.rightMakerAssetBoughtByLeftMakerAmount,
|
||||||
),
|
),
|
||||||
rightOrder: orders.rightOrder,
|
rightOrder: orders.rightOrder,
|
||||||
rightOrderTakerAssetFilledAmount:
|
rightOrderTakerAssetFilledAmount:
|
||||||
(orders.rightOrderTakerAssetFilledAmount || ZERO).plus(
|
(orders.rightOrderTakerAssetFilledAmount || ZERO).plus(
|
||||||
transferAmounts.leftMakerAssetReceivedByRightMakerAmount,
|
transferAmounts.leftMakerAssetBoughtByRightMakerAmount,
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
fills: simulateFillEvents(orders, takerAddress, transferAmounts),
|
fills: simulateFillEvents(orders, takerAddress, transferAmounts),
|
||||||
@ -208,7 +237,7 @@ function simulateMatchOrders(
|
|||||||
transferAsset(
|
transferAsset(
|
||||||
orders.leftOrder.makerAddress,
|
orders.leftOrder.makerAddress,
|
||||||
orders.rightOrder.makerAddress,
|
orders.rightOrder.makerAddress,
|
||||||
transferAmounts.leftMakerAssetReceivedByRightMakerAmount,
|
transferAmounts.leftMakerAssetBoughtByRightMakerAmount,
|
||||||
orders.leftOrder.makerAssetData,
|
orders.leftOrder.makerAssetData,
|
||||||
matchResults,
|
matchResults,
|
||||||
);
|
);
|
||||||
@ -216,7 +245,7 @@ function simulateMatchOrders(
|
|||||||
transferAsset(
|
transferAsset(
|
||||||
orders.rightOrder.makerAddress,
|
orders.rightOrder.makerAddress,
|
||||||
orders.leftOrder.makerAddress,
|
orders.leftOrder.makerAddress,
|
||||||
transferAmounts.rightMakerAssetReceivedByLeftMakerAmount,
|
transferAmounts.rightMakerAssetBoughtByLeftMakerAmount,
|
||||||
orders.rightOrder.makerAssetData,
|
orders.rightOrder.makerAssetData,
|
||||||
matchResults,
|
matchResults,
|
||||||
);
|
);
|
||||||
@ -364,13 +393,14 @@ function assertFillEvents(
|
|||||||
// Validate event arguments.
|
// Validate event arguments.
|
||||||
const fillPairs = _.zip(expectedFills, actualFills) as Array<[FillEventArgs, FillEventArgs]>;
|
const fillPairs = _.zip(expectedFills, actualFills) as Array<[FillEventArgs, FillEventArgs]>;
|
||||||
for (const [expected, actual] of fillPairs) {
|
for (const [expected, actual] of fillPairs) {
|
||||||
expect(actual.orderHash, 'Fill event: orderHash').to.equal(expected.orderHash);
|
const side = expected === expectedFills[0] ? 'Left' : 'Right';
|
||||||
expect(actual.makerAddress, 'Fill event: makerAddress').to.equal(expected.makerAddress);
|
expect(actual.orderHash, `${side} order Fill event orderHash`).to.equal(expected.orderHash);
|
||||||
expect(actual.takerAddress, 'Fill event: takerAddress').to.equal(expected.takerAddress);
|
expect(actual.makerAddress, `${side} order Fill event makerAddress`).to.equal(expected.makerAddress);
|
||||||
expect(actual.makerAssetFilledAmount, 'Fill event: makerAssetFilledAmount').to.equal(expected.makerAssetFilledAmount);
|
expect(actual.takerAddress, `${side} order Fill event takerAddress`).to.equal(expected.takerAddress);
|
||||||
expect(actual.takerAssetFilledAmount, 'Fill event: takerAssetFilledAmount').to.equal(expected.takerAssetFilledAmount);
|
expect(actual.makerAssetFilledAmount, `${side} order Fill event makerAssetFilledAmount`).to.bignumber.equal(expected.makerAssetFilledAmount);
|
||||||
expect(actual.makerFeePaid, 'Fill event: makerFeePaid').to.equal(expected.makerFeePaid);
|
expect(actual.takerAssetFilledAmount, `${side} order Fill event takerAssetFilledAmount`).to.bignumber.equal(expected.takerAssetFilledAmount);
|
||||||
expect(actual.takerFeePaid, 'Fill event: takerFeePaid').to.equal(expected.takerFeePaid);
|
expect(actual.makerFeePaid, `${side} order Fill event makerFeePaid`).to.bignumber.equal(expected.makerFeePaid);
|
||||||
|
expect(actual.takerFeePaid, `${side} order Fill event takerFeePaid`).to.bignumber.equal(expected.takerFeePaid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,14 +412,15 @@ function simulateFillEvents(
|
|||||||
takerAddress: string,
|
takerAddress: string,
|
||||||
transferAmounts: MatchTransferAmounts,
|
transferAmounts: MatchTransferAmounts,
|
||||||
): [FillEventArgs, FillEventArgs] {
|
): [FillEventArgs, FillEventArgs] {
|
||||||
|
// prettier-ignore
|
||||||
return [
|
return [
|
||||||
// Left order Fill
|
// Left order Fill
|
||||||
{
|
{
|
||||||
orderHash: orderHashUtils.getOrderHashHex(orders.leftOrder),
|
orderHash: orderHashUtils.getOrderHashHex(orders.leftOrder),
|
||||||
makerAddress: orders.leftOrder.makerAddress,
|
makerAddress: orders.leftOrder.makerAddress,
|
||||||
takerAddress,
|
takerAddress,
|
||||||
makerAssetFilledAmount: transferAmounts.leftMakerAssetReceivedByRightMakerAmount,
|
makerAssetFilledAmount: transferAmounts.leftMakerAssetSoldByLeftMakerAmount,
|
||||||
takerAssetFilledAmount: transferAmounts.rightMakerAssetReceivedByLeftMakerAmount,
|
takerAssetFilledAmount: transferAmounts.rightMakerAssetBoughtByLeftMakerAmount,
|
||||||
makerFeePaid: transferAmounts.leftMakerFeeAssetPaidByLeftMakerAmount,
|
makerFeePaid: transferAmounts.leftMakerFeeAssetPaidByLeftMakerAmount,
|
||||||
takerFeePaid: transferAmounts.leftTakerFeeAssetPaidByTakerAmount,
|
takerFeePaid: transferAmounts.leftTakerFeeAssetPaidByTakerAmount,
|
||||||
},
|
},
|
||||||
@ -398,8 +429,8 @@ function simulateFillEvents(
|
|||||||
orderHash: orderHashUtils.getOrderHashHex(orders.rightOrder),
|
orderHash: orderHashUtils.getOrderHashHex(orders.rightOrder),
|
||||||
makerAddress: orders.rightOrder.makerAddress,
|
makerAddress: orders.rightOrder.makerAddress,
|
||||||
takerAddress,
|
takerAddress,
|
||||||
makerAssetFilledAmount: transferAmounts.rightMakerAssetReceivedByLeftMakerAmount,
|
makerAssetFilledAmount: transferAmounts.rightMakerAssetSoldByRightMakerAmount,
|
||||||
takerAssetFilledAmount: transferAmounts.leftMakerAssetReceivedByRightMakerAmount,
|
takerAssetFilledAmount: transferAmounts.leftMakerAssetBoughtByRightMakerAmount,
|
||||||
makerFeePaid: transferAmounts.rightMakerFeeAssetPaidByRightMakerAmount,
|
makerFeePaid: transferAmounts.rightMakerFeeAssetPaidByRightMakerAmount,
|
||||||
takerFeePaid: transferAmounts.rightTakerFeeAssetPaidByTakerAmount,
|
takerFeePaid: transferAmounts.rightTakerFeeAssetPaidByTakerAmount,
|
||||||
},
|
},
|
||||||
@ -505,20 +536,35 @@ async function assertPostExchangeStateAsync(
|
|||||||
] as Array<[SignedOrder, BigNumber]>;
|
] as Array<[SignedOrder, BigNumber]>;
|
||||||
await Promise.all(pairs.map(async ([ order, expectedFilledAmount ]) => {
|
await Promise.all(pairs.map(async ([ order, expectedFilledAmount ]) => {
|
||||||
const side = order === matchResults.orders.leftOrder ? 'left' : 'right';
|
const side = order === matchResults.orders.leftOrder ? 'left' : 'right';
|
||||||
const orderHash = orderHashUtils.getOrderHashHex(order);
|
const orderInfo = await exchangeWrapper.getOrderInfoAsync(order);
|
||||||
// Check filled amount of order.
|
// Check filled amount of order.
|
||||||
const actualFilledAmount = await exchangeWrapper.getTakerAssetFilledAmountAsync(
|
const actualFilledAmount = orderInfo.orderTakerAssetFilledAmount;
|
||||||
orderHash,
|
|
||||||
);
|
|
||||||
expect(actualFilledAmount, `${side} order final filled amount`)
|
expect(actualFilledAmount, `${side} order final filled amount`)
|
||||||
.to.be.bignumber.equal(expectedFilledAmount);
|
.to.be.bignumber.equal(expectedFilledAmount);
|
||||||
// Check status of order.
|
// Check status of order.
|
||||||
const expectedStatus =
|
const expectedStatus =
|
||||||
expectedFilledAmount.isGreaterThanOrEqualTo(order.takerAssetAmount) ?
|
expectedFilledAmount.isGreaterThanOrEqualTo(order.takerAssetAmount) ?
|
||||||
OrderStatus.FullyFilled : OrderStatus.Fillable;
|
OrderStatus.FullyFilled : OrderStatus.Fillable;
|
||||||
const actualStatus = (await exchangeWrapper.getOrderInfoAsync(order)).orderStatus;
|
const actualStatus = orderInfo.orderStatus;
|
||||||
expect(actualStatus, `${side} order final status`).to.equal(expectedStatus);
|
expect(actualStatus, `${side} order final status`).to.equal(expectedStatus);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dev Retrive the current token balances of all known addresses.
|
||||||
|
*/
|
||||||
|
export async function getTokenBalancesAsync(
|
||||||
|
erc20Wrapper: ERC20Wrapper,
|
||||||
|
erc721Wrapper: ERC721Wrapper,
|
||||||
|
): Promise<TokenBalancesByOwner> {
|
||||||
|
const [ erc20, erc721 ] = await Promise.all([
|
||||||
|
erc20Wrapper.getBalancesAsync(),
|
||||||
|
erc721Wrapper.getBalancesAsync(),
|
||||||
|
]);
|
||||||
|
return {
|
||||||
|
erc20,
|
||||||
|
erc721,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
// tslint:disable-line:max-file-line-count
|
// tslint:disable-line:max-file-line-count
|
||||||
|
Loading…
x
Reference in New Issue
Block a user