@0x/contracts-exchange
: Removed dependency on OrderValidationUtils. The tests using it didn't really warrant the full validation suite.
`@0x/contracts-test-utils`: Move all the `OrderScenario` related types into the `contracts-exchange` package because no one else is using them.
This commit is contained in:
committed by
Amir Bandeali
parent
acd857a8c0
commit
f7f55cad43
@@ -1,8 +1,11 @@
|
||||
import { chaiSetup, txDefaults, web3Wrapper } from '@0x/contracts-test-utils';
|
||||
import { BlockchainLifecycle } from '@0x/dev-utils';
|
||||
import * as _ from 'lodash';
|
||||
|
||||
import {
|
||||
AllowanceAmountScenario,
|
||||
AssetDataScenario,
|
||||
BalanceAmountScenario,
|
||||
chaiSetup,
|
||||
ExpirationTimeSecondsScenario,
|
||||
FeeAssetDataScenario,
|
||||
FeeRecipientAddressScenario,
|
||||
@@ -10,13 +13,12 @@ import {
|
||||
OrderAssetAmountScenario,
|
||||
TakerAssetFillAmountScenario,
|
||||
TakerScenario,
|
||||
txDefaults,
|
||||
web3Wrapper,
|
||||
} from '@0x/contracts-test-utils';
|
||||
import { BlockchainLifecycle } from '@0x/dev-utils';
|
||||
import * as _ from 'lodash';
|
||||
} from './utils/fill_order_scenarios';
|
||||
|
||||
import { FillOrderCombinatorialUtils, fillOrderCombinatorialUtilsFactoryAsync } from '../src';
|
||||
import {
|
||||
FillOrderCombinatorialUtils,
|
||||
fillOrderCombinatorialUtilsFactoryAsync,
|
||||
} from './utils/fill_order_combinatorial_utils';
|
||||
|
||||
chaiSetup.configure();
|
||||
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
||||
@@ -35,7 +37,7 @@ const defaultFillScenario = {
|
||||
makerFeeAssetDataScenario: FeeAssetDataScenario.ERC20EighteenDecimals,
|
||||
takerFeeAssetDataScenario: FeeAssetDataScenario.ERC20EighteenDecimals,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.LessThanRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.LessThanTakerAssetAmount,
|
||||
makerStateScenario: {
|
||||
traderAssetBalance: BalanceAmountScenario.Higher,
|
||||
traderAssetAllowance: AllowanceAmountScenario.Unlimited,
|
||||
@@ -134,7 +136,7 @@ describe('FillOrder Tests', () => {
|
||||
it('should fill remaining value if takerAssetFillAmount > remaining takerAssetAmount', async () => {
|
||||
const fillScenario = {
|
||||
...defaultFillScenario,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioSuccessAsync(fillScenario);
|
||||
});
|
||||
@@ -189,7 +191,7 @@ describe('FillOrder Tests', () => {
|
||||
...defaultFillScenario.orderScenario,
|
||||
makerAssetAmountScenario: OrderAssetAmountScenario.Zero,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioFailureAsync(fillScenario);
|
||||
});
|
||||
@@ -201,7 +203,7 @@ describe('FillOrder Tests', () => {
|
||||
...defaultFillScenario.orderScenario,
|
||||
takerAssetAmountScenario: OrderAssetAmountScenario.Zero,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.GreaterThanTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioFailureAsync(fillScenario);
|
||||
});
|
||||
@@ -323,7 +325,7 @@ describe('FillOrder Tests', () => {
|
||||
makerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
takerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioSuccessAsync(fillScenario);
|
||||
});
|
||||
@@ -336,7 +338,7 @@ describe('FillOrder Tests', () => {
|
||||
makerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
takerAssetDataScenario: AssetDataScenario.ERC20EighteenDecimals,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioSuccessAsync(fillScenario);
|
||||
});
|
||||
@@ -349,7 +351,7 @@ describe('FillOrder Tests', () => {
|
||||
makerAssetDataScenario: AssetDataScenario.ERC20EighteenDecimals,
|
||||
takerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
};
|
||||
await fillOrderCombinatorialUtils.testFillOrderScenarioSuccessAsync(fillScenario);
|
||||
});
|
||||
@@ -362,7 +364,7 @@ describe('FillOrder Tests', () => {
|
||||
makerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
takerAssetDataScenario: AssetDataScenario.ERC20EighteenDecimals,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
makerStateScenario: {
|
||||
...defaultFillScenario.makerStateScenario,
|
||||
traderAssetAllowance: AllowanceAmountScenario.Unlimited,
|
||||
@@ -379,7 +381,7 @@ describe('FillOrder Tests', () => {
|
||||
makerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
takerAssetDataScenario: AssetDataScenario.ERC721,
|
||||
},
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
makerStateScenario: {
|
||||
...defaultFillScenario.makerStateScenario,
|
||||
traderAssetAllowance: AllowanceAmountScenario.Unlimited,
|
||||
|
@@ -1,30 +1,10 @@
|
||||
import { ERC20Wrapper, ERC721Wrapper } from '@0x/contracts-asset-proxy';
|
||||
import {
|
||||
AllowanceAmountScenario,
|
||||
AssetDataScenario,
|
||||
BalanceAmountScenario,
|
||||
chaiSetup,
|
||||
constants,
|
||||
ExpirationTimeSecondsScenario,
|
||||
FeeAssetDataScenario,
|
||||
FeeRecipientAddressScenario,
|
||||
FillResults,
|
||||
FillScenario,
|
||||
OrderAssetAmountScenario,
|
||||
OrderScenario,
|
||||
orderUtils,
|
||||
signingUtils,
|
||||
TakerAssetFillAmountScenario,
|
||||
TakerScenario,
|
||||
TraderStateScenario,
|
||||
} from '@0x/contracts-test-utils';
|
||||
import { chaiSetup, constants, FillResults, orderUtils, signingUtils } from '@0x/contracts-test-utils';
|
||||
import {
|
||||
assetDataUtils,
|
||||
BalanceAndProxyAllowanceLazyStore,
|
||||
ExchangeRevertErrors,
|
||||
orderHashUtils,
|
||||
OrderStateUtils,
|
||||
OrderValidationUtils,
|
||||
} from '@0x/order-utils';
|
||||
import { AssetProxyId, Order, SignatureType, SignedOrder } from '@0x/types';
|
||||
import { BigNumber, errorUtils, providerUtils, RevertError, StringRevertError } from '@0x/utils';
|
||||
@@ -38,6 +18,20 @@ import { artifacts, ExchangeContract, ExchangeFillEventArgs } from '../../src';
|
||||
|
||||
import { AssetWrapper } from './asset_wrapper';
|
||||
import { ExchangeWrapper } from './exchange_wrapper';
|
||||
import {
|
||||
AllowanceAmountScenario,
|
||||
AssetDataScenario,
|
||||
BalanceAmountScenario,
|
||||
ExpirationTimeSecondsScenario,
|
||||
FeeAssetDataScenario,
|
||||
FeeRecipientAddressScenario,
|
||||
FillScenario,
|
||||
OrderAssetAmountScenario,
|
||||
OrderScenario,
|
||||
TakerAssetFillAmountScenario,
|
||||
TakerScenario,
|
||||
TraderStateScenario,
|
||||
} from './fill_order_scenarios';
|
||||
import { FillOrderError, FillOrderSimulator } from './fill_order_simulator';
|
||||
import { OrderFactoryFromScenario } from './order_factory_from_scenario';
|
||||
import { SimpleAssetBalanceAndProxyAllowanceFetcher } from './simple_asset_balance_and_proxy_allowance_fetcher';
|
||||
@@ -159,7 +153,6 @@ export class FillOrderCombinatorialUtils {
|
||||
public assetWrapper: AssetWrapper;
|
||||
public balanceAndProxyAllowanceFetcher: SimpleAssetBalanceAndProxyAllowanceFetcher;
|
||||
public orderFilledCancelledFetcher: SimpleOrderFilledCancelledFetcher;
|
||||
public orderValidationUtils: OrderValidationUtils;
|
||||
|
||||
public static generateFillOrderCombinations(): FillScenario[] {
|
||||
const takerScenarios = [
|
||||
@@ -220,10 +213,9 @@ export class FillOrderCombinatorialUtils {
|
||||
FeeAssetDataScenario.TakerToken,
|
||||
];
|
||||
const takerAssetFillAmountScenario = [
|
||||
TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount,
|
||||
// TakerAssetFillAmountScenario.GreaterThanRemainingFillableTakerAssetAmount,
|
||||
// TakerAssetFillAmountScenario.LessThanRemainingFillableTakerAssetAmount,
|
||||
TakerAssetFillAmountScenario.ExactlyTakerAssetAmount,
|
||||
// TakerAssetFillAmountScenario.GreaterThanTakerAssetAmount,
|
||||
// TakerAssetFillAmountScenario.LessThanTakerAssetAmount,
|
||||
];
|
||||
const makerAssetBalanceScenario = [
|
||||
BalanceAmountScenario.Higher,
|
||||
@@ -383,7 +375,6 @@ export class FillOrderCombinatorialUtils {
|
||||
this.assetWrapper = assetWrapper;
|
||||
this.balanceAndProxyAllowanceFetcher = new SimpleAssetBalanceAndProxyAllowanceFetcher(assetWrapper);
|
||||
this.orderFilledCancelledFetcher = new SimpleOrderFilledCancelledFetcher(exchangeWrapper);
|
||||
this.orderValidationUtils = new OrderValidationUtils(this.orderFilledCancelledFetcher, provider);
|
||||
}
|
||||
|
||||
public async testFillOrderScenarioAsync(fillScenario: FillScenario): Promise<void> {
|
||||
@@ -408,7 +399,7 @@ export class FillOrderCombinatorialUtils {
|
||||
): Promise<void> {
|
||||
const lazyStore = new BalanceAndProxyAllowanceLazyStore(this.balanceAndProxyAllowanceFetcher);
|
||||
const signedOrder = await this._generateSignedOrder(fillScenario.orderScenario);
|
||||
const takerAssetFillAmount = await this._getTakerAssetFillAmountAsync(
|
||||
const takerAssetFillAmount = getTakerAssetFillAmountAsync(
|
||||
signedOrder,
|
||||
fillScenario.takerAssetFillAmountScenario,
|
||||
);
|
||||
@@ -647,60 +638,6 @@ export class FillOrderCombinatorialUtils {
|
||||
);
|
||||
}
|
||||
|
||||
private async _getTakerAssetFillAmountAsync(
|
||||
signedOrder: SignedOrder,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario,
|
||||
): Promise<BigNumber> {
|
||||
const orderStateUtils = new OrderStateUtils(
|
||||
this.balanceAndProxyAllowanceFetcher,
|
||||
this.orderFilledCancelledFetcher,
|
||||
);
|
||||
// TODO: Write our own version of orderStateUtils.getMaxFillableTakerAssetAmountAsync
|
||||
// because it doesn't properly take into account paying for maker/taker fees with received
|
||||
// assets.
|
||||
const fillableTakerAssetAmount = await orderStateUtils.getMaxFillableTakerAssetAmountAsync(
|
||||
signedOrder,
|
||||
this.takerAddress,
|
||||
);
|
||||
|
||||
let takerAssetFillAmount;
|
||||
switch (takerAssetFillAmountScenario) {
|
||||
case TakerAssetFillAmountScenario.Zero:
|
||||
takerAssetFillAmount = new BigNumber(0);
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.ExactlyTakerAssetAmount:
|
||||
takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.ExactlyRemainingFillableTakerAssetAmount:
|
||||
takerAssetFillAmount = fillableTakerAssetAmount;
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.GreaterThanRemainingFillableTakerAssetAmount:
|
||||
takerAssetFillAmount = fillableTakerAssetAmount.plus(1);
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.LessThanRemainingFillableTakerAssetAmount:
|
||||
const takerAssetProxyId = assetDataUtils.decodeAssetProxyId(signedOrder.takerAssetData);
|
||||
const makerAssetProxyId = assetDataUtils.decodeAssetProxyId(signedOrder.makerAssetData);
|
||||
const isEitherAssetERC721 =
|
||||
takerAssetProxyId === AssetProxyId.ERC721 || makerAssetProxyId === AssetProxyId.ERC721;
|
||||
if (isEitherAssetERC721) {
|
||||
throw new Error(
|
||||
'Cannot test `TakerAssetFillAmountScenario.LessThanRemainingFillableTakerAssetAmount` together with ERC721 assets since orders involving ERC721 must always be filled exactly.',
|
||||
);
|
||||
}
|
||||
takerAssetFillAmount = fillableTakerAssetAmount.div(2).integerValue(BigNumber.ROUND_FLOOR);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw errorUtils.spawnSwitchErr('TakerAssetFillAmountScenario', takerAssetFillAmountScenario);
|
||||
}
|
||||
|
||||
return takerAssetFillAmount;
|
||||
}
|
||||
|
||||
private async _modifyTraderStateAsync(
|
||||
makerStateScenario: TraderStateScenario,
|
||||
takerStateScenario: TraderStateScenario,
|
||||
@@ -983,6 +920,44 @@ export class FillOrderCombinatorialUtils {
|
||||
}
|
||||
}
|
||||
|
||||
function getTakerAssetFillAmountAsync(
|
||||
signedOrder: SignedOrder,
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario,
|
||||
): BigNumber {
|
||||
let takerAssetFillAmount;
|
||||
switch (takerAssetFillAmountScenario) {
|
||||
case TakerAssetFillAmountScenario.Zero:
|
||||
takerAssetFillAmount = new BigNumber(0);
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.ExactlyTakerAssetAmount:
|
||||
takerAssetFillAmount = signedOrder.takerAssetAmount;
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.GreaterThanTakerAssetAmount:
|
||||
takerAssetFillAmount = signedOrder.takerAssetAmount.plus(1);
|
||||
break;
|
||||
|
||||
case TakerAssetFillAmountScenario.LessThanTakerAssetAmount:
|
||||
const takerAssetProxyId = assetDataUtils.decodeAssetProxyId(signedOrder.takerAssetData);
|
||||
const makerAssetProxyId = assetDataUtils.decodeAssetProxyId(signedOrder.makerAssetData);
|
||||
const isEitherAssetERC721 =
|
||||
takerAssetProxyId === AssetProxyId.ERC721 || makerAssetProxyId === AssetProxyId.ERC721;
|
||||
if (isEitherAssetERC721) {
|
||||
throw new Error(
|
||||
'Cannot test `TakerAssetFillAmountScenario.LessThanTakerAssetAmount` together with ERC721 assets since orders involving ERC721 must always be filled exactly.',
|
||||
);
|
||||
}
|
||||
takerAssetFillAmount = signedOrder.takerAssetAmount.div(2).integerValue(BigNumber.ROUND_FLOOR);
|
||||
break;
|
||||
|
||||
default:
|
||||
throw errorUtils.spawnSwitchErr('TakerAssetFillAmountScenario', takerAssetFillAmountScenario);
|
||||
}
|
||||
|
||||
return takerAssetFillAmount;
|
||||
}
|
||||
|
||||
function fillErrorToRevertError(order: Order, error: FillOrderError): RevertError {
|
||||
const orderHash = orderHashUtils.getOrderHashHex(order);
|
||||
switch (error) {
|
||||
|
96
contracts/exchange/test/utils/fill_order_scenarios.ts
Normal file
96
contracts/exchange/test/utils/fill_order_scenarios.ts
Normal file
@@ -0,0 +1,96 @@
|
||||
import { BigNumber } from '@0x/utils';
|
||||
|
||||
export enum FeeRecipientAddressScenario {
|
||||
BurnAddress = 'BURN_ADDRESS',
|
||||
EthUserAddress = 'ETH_USER_ADDRESS',
|
||||
}
|
||||
|
||||
export enum OrderAssetAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Large = 'LARGE',
|
||||
Small = 'SMALL',
|
||||
}
|
||||
|
||||
export enum TakerScenario {
|
||||
CorrectlySpecified = 'CORRECTLY_SPECIFIED',
|
||||
IncorrectlySpecified = 'INCORRECTLY_SPECIFIED',
|
||||
Unspecified = 'UNSPECIFIED',
|
||||
}
|
||||
|
||||
export enum ExpirationTimeSecondsScenario {
|
||||
InPast = 'IN_PAST',
|
||||
InFuture = 'IN_FUTURE',
|
||||
}
|
||||
|
||||
export enum AssetDataScenario {
|
||||
ERC20ZeroDecimals = 'ERC20_ZERO_DECIMALS',
|
||||
ERC20FiveDecimals = 'ERC20_FIVE_DECIMALS',
|
||||
ERC20EighteenDecimals = 'ERC20_EIGHTEEN_DECIMALS',
|
||||
ERC721 = 'ERC721',
|
||||
}
|
||||
|
||||
export enum FeeAssetDataScenario {
|
||||
ERC20ZeroDecimals = 'ERC20_ZERO_DECIMALS',
|
||||
ERC20FiveDecimals = 'ERC20_FIVE_DECIMALS',
|
||||
ERC20EighteenDecimals = 'ERC20_EIGHTEEN_DECIMALS',
|
||||
ERC721 = 'ERC721',
|
||||
MakerToken = 'MAKER_TOKEN',
|
||||
TakerToken = 'TAKER_TOKEN',
|
||||
}
|
||||
|
||||
export enum TakerAssetFillAmountScenario {
|
||||
ExactlyTakerAssetAmount = 'EXACTLY_TAKER_ASSET_AMOUNT',
|
||||
GreaterThanTakerAssetAmount = 'GREATER_THAN_TAKER_ASSET_AMOUNT',
|
||||
LessThanTakerAssetAmount = 'LESS_THAN_TAKER_ASSET_AMOUNT',
|
||||
Zero = 'ZERO',
|
||||
}
|
||||
|
||||
export enum BalanceAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Exact = 'EXACT',
|
||||
TooLow = 'TOO_LOW',
|
||||
Higher = 'HIGHER',
|
||||
}
|
||||
|
||||
export enum AllowanceAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Exact = 'EXACT',
|
||||
TooLow = 'TOO_LOW',
|
||||
Higher = 'HIGHER',
|
||||
Unlimited = 'UNLIMITED',
|
||||
}
|
||||
|
||||
export interface TraderStateScenario {
|
||||
traderAssetBalance: BalanceAmountScenario;
|
||||
traderAssetAllowance: AllowanceAmountScenario;
|
||||
feeBalance: BalanceAmountScenario;
|
||||
feeAllowance: AllowanceAmountScenario;
|
||||
}
|
||||
|
||||
export interface FillScenario {
|
||||
orderScenario: OrderScenario;
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario;
|
||||
makerStateScenario: TraderStateScenario;
|
||||
takerStateScenario: TraderStateScenario;
|
||||
}
|
||||
|
||||
export interface FillResults {
|
||||
makerAssetFilledAmount: BigNumber;
|
||||
takerAssetFilledAmount: BigNumber;
|
||||
makerFeePaid: BigNumber;
|
||||
takerFeePaid: BigNumber;
|
||||
}
|
||||
|
||||
export interface OrderScenario {
|
||||
takerScenario: TakerScenario;
|
||||
feeRecipientScenario: FeeRecipientAddressScenario;
|
||||
makerAssetAmountScenario: OrderAssetAmountScenario;
|
||||
takerAssetAmountScenario: OrderAssetAmountScenario;
|
||||
makerFeeScenario: OrderAssetAmountScenario;
|
||||
takerFeeScenario: OrderAssetAmountScenario;
|
||||
expirationTimeSecondsScenario: ExpirationTimeSecondsScenario;
|
||||
makerAssetDataScenario: AssetDataScenario;
|
||||
takerAssetDataScenario: AssetDataScenario;
|
||||
makerFeeAssetDataScenario: FeeAssetDataScenario;
|
||||
takerFeeAssetDataScenario: FeeAssetDataScenario;
|
||||
}
|
@@ -1,5 +1,4 @@
|
||||
export * from './exchange_wrapper';
|
||||
export * from './fill_order_combinatorial_utils';
|
||||
export * from './match_order_tester';
|
||||
export * from './exchange_data_encoder';
|
||||
export * from './types';
|
||||
|
@@ -1,18 +1,18 @@
|
||||
import { DummyERC721TokenContract } from '@0x/contracts-erc721';
|
||||
import { constants, ERC721TokenIdsByOwner } from '@0x/contracts-test-utils';
|
||||
import { assetDataUtils, generatePseudoRandomSalt } from '@0x/order-utils';
|
||||
import { Order } from '@0x/types';
|
||||
import { BigNumber, errorUtils } from '@0x/utils';
|
||||
|
||||
import {
|
||||
AssetDataScenario,
|
||||
constants,
|
||||
ERC721TokenIdsByOwner,
|
||||
ExpirationTimeSecondsScenario,
|
||||
FeeAssetDataScenario,
|
||||
FeeRecipientAddressScenario,
|
||||
OrderAssetAmountScenario,
|
||||
OrderScenario,
|
||||
TakerScenario,
|
||||
} from '@0x/contracts-test-utils';
|
||||
import { assetDataUtils, generatePseudoRandomSalt } from '@0x/order-utils';
|
||||
import { Order } from '@0x/types';
|
||||
import { BigNumber, errorUtils } from '@0x/utils';
|
||||
} from './fill_order_scenarios';
|
||||
|
||||
const TEN_UNITS_EIGHTEEN_DECIMALS = new BigNumber('10e18');
|
||||
const FIVE_UNITS_EIGHTEEN_DECIMALS = new BigNumber('5e18');
|
||||
|
@@ -29,30 +29,18 @@ export { bytes32Values, testCombinatoriallyWithReferenceFuncAsync, uint256Values
|
||||
export { TransactionFactory } from './transaction_factory';
|
||||
export { testWithReferenceFuncAsync } from './test_with_reference';
|
||||
export {
|
||||
AllowanceAmountScenario,
|
||||
AssetDataScenario,
|
||||
BalanceAmountScenario,
|
||||
ContractName,
|
||||
ERC20BalancesByOwner,
|
||||
ERC1155FungibleHoldingsByOwner,
|
||||
ERC1155HoldingsByOwner,
|
||||
ERC1155NonFungibleHoldingsByOwner,
|
||||
ERC721TokenIdsByOwner,
|
||||
ExpirationTimeSecondsScenario,
|
||||
FeeAssetDataScenario,
|
||||
FeeRecipientAddressScenario,
|
||||
FillResults,
|
||||
FillScenario,
|
||||
MarketBuyOrders,
|
||||
MarketSellOrders,
|
||||
OrderAssetAmountScenario,
|
||||
OrderInfo,
|
||||
OrderScenario,
|
||||
OrderStatus,
|
||||
TakerAssetFillAmountScenario,
|
||||
TakerScenario,
|
||||
Token,
|
||||
TokenBalancesByOwner,
|
||||
TraderStateScenario,
|
||||
TransactionDataParams,
|
||||
} from './types';
|
||||
|
@@ -142,97 +142,6 @@ export interface MatchOrder {
|
||||
rightSignature: string;
|
||||
}
|
||||
|
||||
// Combinatorial testing types
|
||||
|
||||
export enum FeeRecipientAddressScenario {
|
||||
BurnAddress = 'BURN_ADDRESS',
|
||||
EthUserAddress = 'ETH_USER_ADDRESS',
|
||||
}
|
||||
|
||||
export enum OrderAssetAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Large = 'LARGE',
|
||||
Small = 'SMALL',
|
||||
}
|
||||
|
||||
export enum TakerScenario {
|
||||
CorrectlySpecified = 'CORRECTLY_SPECIFIED',
|
||||
IncorrectlySpecified = 'INCORRECTLY_SPECIFIED',
|
||||
Unspecified = 'UNSPECIFIED',
|
||||
}
|
||||
|
||||
export enum ExpirationTimeSecondsScenario {
|
||||
InPast = 'IN_PAST',
|
||||
InFuture = 'IN_FUTURE',
|
||||
}
|
||||
|
||||
export enum AssetDataScenario {
|
||||
ERC20ZeroDecimals = 'ERC20_ZERO_DECIMALS',
|
||||
ERC20FiveDecimals = 'ERC20_FIVE_DECIMALS',
|
||||
ERC20EighteenDecimals = 'ERC20_EIGHTEEN_DECIMALS',
|
||||
ERC721 = 'ERC721',
|
||||
}
|
||||
|
||||
export enum FeeAssetDataScenario {
|
||||
ERC20ZeroDecimals = 'ERC20_ZERO_DECIMALS',
|
||||
ERC20FiveDecimals = 'ERC20_FIVE_DECIMALS',
|
||||
ERC20EighteenDecimals = 'ERC20_EIGHTEEN_DECIMALS',
|
||||
ERC721 = 'ERC721',
|
||||
MakerToken = 'MAKER_TOKEN',
|
||||
TakerToken = 'TAKER_TOKEN',
|
||||
}
|
||||
|
||||
export enum TakerAssetFillAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
GreaterThanRemainingFillableTakerAssetAmount = 'GREATER_THAN_REMAINING_FILLABLE_TAKER_ASSET_AMOUNT',
|
||||
LessThanRemainingFillableTakerAssetAmount = 'LESS_THAN_REMAINING_FILLABLE_TAKER_ASSET_AMOUNT',
|
||||
ExactlyRemainingFillableTakerAssetAmount = 'EXACTLY_REMAINING_FILLABLE_TAKER_ASSET_AMOUNT',
|
||||
ExactlyTakerAssetAmount = 'EXACTLY_TAKER_ASSET_AMOUNT',
|
||||
}
|
||||
|
||||
export interface OrderScenario {
|
||||
takerScenario: TakerScenario;
|
||||
feeRecipientScenario: FeeRecipientAddressScenario;
|
||||
makerAssetAmountScenario: OrderAssetAmountScenario;
|
||||
takerAssetAmountScenario: OrderAssetAmountScenario;
|
||||
makerFeeScenario: OrderAssetAmountScenario;
|
||||
takerFeeScenario: OrderAssetAmountScenario;
|
||||
expirationTimeSecondsScenario: ExpirationTimeSecondsScenario;
|
||||
makerAssetDataScenario: AssetDataScenario;
|
||||
takerAssetDataScenario: AssetDataScenario;
|
||||
makerFeeAssetDataScenario: FeeAssetDataScenario;
|
||||
takerFeeAssetDataScenario: FeeAssetDataScenario;
|
||||
}
|
||||
|
||||
export enum BalanceAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Exact = 'EXACT',
|
||||
TooLow = 'TOO_LOW',
|
||||
Higher = 'HIGHER',
|
||||
}
|
||||
|
||||
export enum AllowanceAmountScenario {
|
||||
Zero = 'ZERO',
|
||||
Exact = 'EXACT',
|
||||
TooLow = 'TOO_LOW',
|
||||
Higher = 'HIGHER',
|
||||
Unlimited = 'UNLIMITED',
|
||||
}
|
||||
|
||||
export interface TraderStateScenario {
|
||||
traderAssetBalance: BalanceAmountScenario;
|
||||
traderAssetAllowance: AllowanceAmountScenario;
|
||||
feeBalance: BalanceAmountScenario;
|
||||
feeAllowance: AllowanceAmountScenario;
|
||||
}
|
||||
|
||||
export interface FillScenario {
|
||||
orderScenario: OrderScenario;
|
||||
takerAssetFillAmountScenario: TakerAssetFillAmountScenario;
|
||||
makerStateScenario: TraderStateScenario;
|
||||
takerStateScenario: TraderStateScenario;
|
||||
}
|
||||
|
||||
export interface FillResults {
|
||||
makerAssetFilledAmount: BigNumber;
|
||||
takerAssetFilledAmount: BigNumber;
|
||||
|
Reference in New Issue
Block a user