Add ability to specify takerAssetFillAmount and taker scenarios as part of a FillScenario

This commit is contained in:
Fabio Berger
2018-06-14 10:40:17 +02:00
parent 6239686afa
commit 98405a39db
4 changed files with 153 additions and 35 deletions

View File

@@ -5,7 +5,7 @@ import { chaiSetup } from '../../src/utils/chai_setup';
import { CoreCombinatorialUtils, coreCombinatorialUtilsFactoryAsync } from '../../src/utils/core_combinatorial_utils';
import { provider, txDefaults, web3Wrapper } from '../../src/utils/web3_wrapper';
import { OrderScenario } from '../../src/utils/types';
import { FillScenario, OrderScenario, TakerAssetFillAmountScenario } from '../../src/utils/types';
chaiSetup.configure();
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
@@ -26,8 +26,9 @@ describe('Combinatorial tests', () => {
afterEach(async () => {
await blockchainLifecycle.revertAsync();
});
const test = (orderScenarios: OrderScenario[]) => {
_.forEach(orderScenarios, orderScenario => {
const test = (fillScenarios: FillScenario[]) => {
_.forEach(fillScenarios, fillScenario => {
const orderScenario = fillScenario.orderScenario;
const description = `Combinatorial OrderFill: ${orderScenario.feeRecipientScenario} ${
orderScenario.makerAssetAmountScenario
} ${orderScenario.takerAssetAmountScenario} ${orderScenario.makerFeeScenario} ${
@@ -36,13 +37,18 @@ describe('Combinatorial tests', () => {
orderScenario.takerAssetDataScenario
}`;
it(description, async () => {
const order = coreCombinatorialUtils.orderFactory.generateOrder(orderScenario);
await coreCombinatorialUtils.testFillOrderScenarioAsync(order, provider);
await coreCombinatorialUtils.testFillOrderScenarioAsync(provider, fillScenario);
});
});
};
const allOrderScenarios = CoreCombinatorialUtils.generateOrderCombinations();
const allFillScenarios = _.map(allOrderScenarios, orderScenario => {
return {
orderScenario,
takerAssetFillAmountScenario: TakerAssetFillAmountScenario.LessThanRemainingFillableTakerAssetAmount,
};
});
describe.only('Fills orders', () => test(allOrderScenarios));
describe('Fills orders', () => test(allFillScenarios));
});