49 lines
2.0 KiB
TypeScript
49 lines
2.0 KiB
TypeScript
import { BlockchainLifecycle } from '@0xproject/dev-utils';
|
|
import * as _ from 'lodash';
|
|
|
|
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';
|
|
|
|
chaiSetup.configure();
|
|
const blockchainLifecycle = new BlockchainLifecycle(web3Wrapper);
|
|
|
|
describe('Combinatorial tests', () => {
|
|
let coreCombinatorialUtils: CoreCombinatorialUtils;
|
|
|
|
before(async () => {
|
|
await blockchainLifecycle.startAsync();
|
|
coreCombinatorialUtils = await coreCombinatorialUtilsFactoryAsync(web3Wrapper, txDefaults);
|
|
});
|
|
after(async () => {
|
|
await blockchainLifecycle.revertAsync();
|
|
});
|
|
beforeEach(async () => {
|
|
await blockchainLifecycle.startAsync();
|
|
});
|
|
afterEach(async () => {
|
|
await blockchainLifecycle.revertAsync();
|
|
});
|
|
const test = (orderScenarios: OrderScenario[]) => {
|
|
_.forEach(orderScenarios, orderScenario => {
|
|
const description = `Combinatorial OrderFill: ${orderScenario.feeRecipientScenario} ${
|
|
orderScenario.makerAssetAmountScenario
|
|
} ${orderScenario.takerAssetAmountScenario} ${orderScenario.makerFeeScenario} ${
|
|
orderScenario.takerFeeScenario
|
|
} ${orderScenario.expirationTimeSecondsScenario} ${orderScenario.makerAssetDataScenario} ${
|
|
orderScenario.takerAssetDataScenario
|
|
}`;
|
|
it(description, async () => {
|
|
const order = coreCombinatorialUtils.orderFactory.generateOrder(orderScenario);
|
|
await coreCombinatorialUtils.testFillOrderScenarioAsync(order, provider);
|
|
});
|
|
});
|
|
};
|
|
|
|
const allOrderScenarios = CoreCombinatorialUtils.generateOrderCombinations();
|
|
|
|
describe.only('Fills orders', () => test(allOrderScenarios));
|
|
});
|