@0x:contracts-exchange Refactored internal.ts so that it is more readable

This commit is contained in:
Alex Towle
2019-08-14 10:39:36 -07:00
parent 0134b2874b
commit 6b4e632101

View File

@@ -81,55 +81,22 @@ blockchainTests('Exchange core internal functions', env => {
let makerAddressLeft: string;
let makerAddressRight: string;
function createMatchedFillResultsFromFilled(
leftMakerAssetFilledAmount: BigNumber,
leftTakerAssetFilledAmount: BigNumber,
rightMakerAssetFilledAmount: BigNumber,
rightTakerAssetFilledAmount: BigNumber,
): MatchedFillResults {
return {
...EMPTY_MATCHED_FILL_RESULTS,
left: {
...EMPTY_FILL_RESULTS,
makerAssetFilledAmount: leftMakerAssetFilledAmount,
takerAssetFilledAmount: leftTakerAssetFilledAmount,
},
right: {
...EMPTY_FILL_RESULTS,
makerAssetFilledAmount: rightMakerAssetFilledAmount,
takerAssetFilledAmount: rightTakerAssetFilledAmount,
},
};
interface PartialMatchedFillResults {
left: Partial<FillResults>;
right: Partial<FillResults>;
profitInLeftMakerAsset?: BigNumber;
profitInRightMakerAsset?: BigNumber;
}
function createMatchedFillResults(
leftMakerAssetFilledAmount: BigNumber,
leftTakerAssetFilledAmount: BigNumber,
leftMakerFeePaid: BigNumber,
leftTakerFeePaid: BigNumber,
rightMakerAssetFilledAmount: BigNumber,
rightTakerAssetFilledAmount: BigNumber,
rightMakerFeePaid: BigNumber,
rightTakerFeePaid: BigNumber,
profitInLeftMakerAsset?: BigNumber,
profitInRightMakerAsset?: BigNumber,
): MatchedFillResults {
return {
left: {
makerAssetFilledAmount: leftMakerAssetFilledAmount,
takerAssetFilledAmount: leftTakerAssetFilledAmount,
makerFeePaid: leftMakerFeePaid,
takerFeePaid: leftTakerFeePaid,
},
right: {
makerAssetFilledAmount: rightMakerAssetFilledAmount,
takerAssetFilledAmount: rightTakerAssetFilledAmount,
makerFeePaid: rightMakerFeePaid,
takerFeePaid: rightTakerFeePaid,
},
profitInLeftMakerAsset: profitInLeftMakerAsset || constants.ZERO_AMOUNT,
profitInRightMakerAsset: profitInRightMakerAsset || constants.ZERO_AMOUNT,
};
function createMatchedFillResults(partialMatchedFillResults: PartialMatchedFillResults): MatchedFillResults {
const matchedFillResults = EMPTY_MATCHED_FILL_RESULTS;
matchedFillResults.left = _.assign({}, EMPTY_FILL_RESULTS, partialMatchedFillResults.left);
matchedFillResults.right = _.assign({}, EMPTY_FILL_RESULTS, partialMatchedFillResults.right);
matchedFillResults.profitInLeftMakerAsset =
partialMatchedFillResults.profitInLeftMakerAsset || constants.ZERO_AMOUNT;
matchedFillResults.profitInRightMakerAsset =
partialMatchedFillResults.profitInRightMakerAsset || constants.ZERO_AMOUNT;
return matchedFillResults;
}
before(async () => {
@@ -284,12 +251,16 @@ blockchainTests('Exchange core internal functions', env => {
// Note: This call would never be able to be made through our contracts, since these orders will not actually be
// fully filled. This is just a test case to make sure.
it('should correctly update the fillResults with nonzero input', async () => {
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(17, 0),
Web3Wrapper.toBaseUnitAmount(98, 0),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(17, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(98, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
},
});
await assertCalculateCompleteFillBothAsync(
expectedMatchedFillResults,
new BigNumber(17),
@@ -300,12 +271,16 @@ blockchainTests('Exchange core internal functions', env => {
});
it('should correctly update the fillResults with nonzero input', async () => {
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(5, 0),
Web3Wrapper.toBaseUnitAmount(10, 0),
Web3Wrapper.toBaseUnitAmount(10, 0),
Web3Wrapper.toBaseUnitAmount(5, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 0),
},
});
await assertCalculateCompleteFillBothAsync(
expectedMatchedFillResults,
new BigNumber(5),
@@ -316,12 +291,16 @@ blockchainTests('Exchange core internal functions', env => {
});
it('should correctly update the fillResults with nonzero input', async () => {
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(5, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
},
});
await assertCalculateCompleteFillBothAsync(
expectedMatchedFillResults,
Web3Wrapper.toBaseUnitAmount(5, 18),
@@ -332,12 +311,16 @@ blockchainTests('Exchange core internal functions', env => {
});
it('should correctly update the fillResults with nonzero input', async () => {
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
},
});
await assertCalculateCompleteFillBothAsync(
expectedMatchedFillResults,
Web3Wrapper.toBaseUnitAmount(5, 18),
@@ -400,12 +383,16 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(17, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(98, 0),
});
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
},
});
await assertCalculateCompleteRightFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -419,12 +406,16 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(12, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(97, 0),
});
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(11, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(1, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(11, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
},
});
await assertCalculateCompleteRightFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -438,12 +429,16 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(50, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(100, 18),
});
const expectedMatchedFillResults = createMatchedFillResultsFromFilled(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
},
});
await assertCalculateCompleteRightFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -725,16 +720,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16),
Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -753,17 +752,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(97, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(14, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(15, 0),
Web3Wrapper.toBaseUnitAmount(90, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(90, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('92.7835051546391752'), 16), // 92.85%
Web3Wrapper.toBaseUnitAmount(new BigNumber('92.8571428571428571'), 16), // 92.85%
Web3Wrapper.toBaseUnitAmount(2, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(15, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.7835051546391752'), 16), // 92.85%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('92.8571428571428571'), 16), // 92.85%
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(2, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -784,17 +787,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(83, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(49, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5060240963855421'), 16), // 26.506%
Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5306122448979591'), 16), // 26.531%
Web3Wrapper.toBaseUnitAmount(3, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5060240963855421'), 16), // 26.506%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('26.5306122448979591'), 16), // 26.531%
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -815,17 +822,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(11, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(1, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(11, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(10, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -848,17 +859,21 @@ blockchainTests('Exchange core internal functions', env => {
makerFee: Web3Wrapper.toBaseUnitAmount(10000, 0),
takerFee: Web3Wrapper.toBaseUnitAmount(10000, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(2650, 0),
Web3Wrapper.toBaseUnitAmount(2653, 0),
Web3Wrapper.toBaseUnitAmount(3, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(2650, 0),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(2653, 0),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -882,17 +897,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(11, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(9166, 0),
Web3Wrapper.toBaseUnitAmount(9175, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(1, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(11, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(9166, 0),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(9175, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(10, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -913,17 +932,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(2126, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1063, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(1000, 0),
Web3Wrapper.toBaseUnitAmount(1005, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(1005, 0),
Web3Wrapper.toBaseUnitAmount(503, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('47.2718720602069614'), 16), // 47.27%
Web3Wrapper.toBaseUnitAmount(new BigNumber('47.3189087488240827'), 16), // 47.31%
Web3Wrapper.toBaseUnitAmount(497, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1000, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1005, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1005, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(503, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.2718720602069614'), 16), // 47.27%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('47.3189087488240827'), 16), // 47.31%
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(497, 0),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -942,17 +965,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(3, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 18),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -971,16 +998,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -999,17 +1030,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(20, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(4, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
Web3Wrapper.toBaseUnitAmount(50, 16),
Web3Wrapper.toBaseUnitAmount(50, 16),
Web3Wrapper.toBaseUnitAmount(3, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(50, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(50, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 18),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1028,17 +1063,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(10, 16),
Web3Wrapper.toBaseUnitAmount(10, 16),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(3, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(10, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(10, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 18),
});
await assertCalculateMatchedFillResultsAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1290,16 +1329,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16), // 76.47%
Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16), // 76.53%
Web3Wrapper.toBaseUnitAmount(75, 0),
Web3Wrapper.toBaseUnitAmount(13, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.4705882352941176'), 16), // 76.47%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('76.5306122448979591'), 16), // 76.53%
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(75, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(13, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1320,18 +1363,22 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(196, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(28, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(15, 0),
Web3Wrapper.toBaseUnitAmount(90, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(105, 0),
Web3Wrapper.toBaseUnitAmount(15, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('53.5714285714285714'), 16), // 53.57%
Web3Wrapper.toBaseUnitAmount(new BigNumber('53.5714285714285714'), 16), // 53.57%
constants.ZERO_AMOUNT,
Web3Wrapper.toBaseUnitAmount(15, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(15, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(105, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(15, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('53.5714285714285714'), 16), // 53.57%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('53.5714285714285714'), 16), // 53.57%
},
profitInLeftMakerAsset: constants.ZERO_AMOUNT,
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(15, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1352,18 +1399,22 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(87, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(48, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(29, 0),
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('33.3333333333333333'), 16), // 33.33%
Web3Wrapper.toBaseUnitAmount(new BigNumber('33.3333333333333333'), 16), // 33.33%
constants.ZERO_AMOUNT,
Web3Wrapper.toBaseUnitAmount(7, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(29, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('33.3333333333333333'), 16), // 33.33%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('33.3333333333333333'), 16), // 33.33%
},
profitInLeftMakerAsset: constants.ZERO_AMOUNT,
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(7, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1384,18 +1435,22 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(8, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(6, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(7, 0),
Web3Wrapper.toBaseUnitAmount(4, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(8, 0),
Web3Wrapper.toBaseUnitAmount(6, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(1, 0),
Web3Wrapper.toBaseUnitAmount(4, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(7, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(4, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(8, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(6, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(1, 0),
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(4, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1416,17 +1471,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(11, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(1, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(11, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.6666666666666666'), 16), // 91.6%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('91.7525773195876288'), 16), // 91.75%
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(10, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1449,18 +1508,21 @@ blockchainTests('Exchange core internal functions', env => {
makerFee: Web3Wrapper.toBaseUnitAmount(10000, 0),
takerFee: Web3Wrapper.toBaseUnitAmount(10000, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(22, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(29, 0),
Web3Wrapper.toBaseUnitAmount(16, 0),
Web3Wrapper.toBaseUnitAmount(3333, 0),
Web3Wrapper.toBaseUnitAmount(3333, 0),
constants.ZERO_AMOUNT,
Web3Wrapper.toBaseUnitAmount(7, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(22, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(29, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(16, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(3333, 0),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(3333, 0),
},
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(7, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1483,17 +1545,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(11, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(9166, 0),
Web3Wrapper.toBaseUnitAmount(9175, 0),
Web3Wrapper.toBaseUnitAmount(89, 0),
Web3Wrapper.toBaseUnitAmount(1, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(11, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(9166, 0),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(9175, 0),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(89, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
profitInLeftMakerAsset: Web3Wrapper.toBaseUnitAmount(10, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1531,16 +1597,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(100, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(50, 18),
});
const expectedMatchedFillResults2 = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(45, 18),
Web3Wrapper.toBaseUnitAmount(90, 18),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(90, 18),
Web3Wrapper.toBaseUnitAmount(45, 18),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(90, 16),
);
const expectedMatchedFillResults2 = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(45, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(45, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
},
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults2,
leftOrder,
@@ -1561,18 +1631,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(2126, 0),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(1063, 0),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(1000, 0),
Web3Wrapper.toBaseUnitAmount(1005, 0),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(2000, 0),
Web3Wrapper.toBaseUnitAmount(1000, 0),
Web3Wrapper.toBaseUnitAmount(new BigNumber('94.0733772342427093'), 16), // 94.07%
Web3Wrapper.toBaseUnitAmount(new BigNumber('94.0733772342427093'), 16), // 94.07%
constants.ZERO_AMOUNT,
Web3Wrapper.toBaseUnitAmount(995, 0),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1000, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1005, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2000, 0),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(1000, 0),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('94.0733772342427093'), 16), // 94.07%
takerFeePaid: Web3Wrapper.toBaseUnitAmount(new BigNumber('94.0733772342427093'), 16), // 94.07%
},
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(995, 0),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1591,16 +1664,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1620,18 +1697,21 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(50, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(100, 18),
});
const expectedMatchedFillResults = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(2, 18),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(100, 16),
Web3Wrapper.toBaseUnitAmount(5, 18),
Web3Wrapper.toBaseUnitAmount(10, 18),
Web3Wrapper.toBaseUnitAmount(10, 16),
Web3Wrapper.toBaseUnitAmount(10, 16),
constants.ZERO_AMOUNT,
Web3Wrapper.toBaseUnitAmount(3, 18),
);
const expectedMatchedFillResults = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(2, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(100, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(5, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(10, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(10, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(10, 16),
},
profitInRightMakerAsset: Web3Wrapper.toBaseUnitAmount(3, 18),
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults,
leftOrder,
@@ -1647,16 +1727,20 @@ blockchainTests('Exchange core internal functions', env => {
makerAssetAmount: Web3Wrapper.toBaseUnitAmount(100, 18),
takerAssetAmount: Web3Wrapper.toBaseUnitAmount(50, 18),
});
const expectedMatchedFillResults2 = createMatchedFillResults(
Web3Wrapper.toBaseUnitAmount(90, 18),
Web3Wrapper.toBaseUnitAmount(45, 18),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(45, 18),
Web3Wrapper.toBaseUnitAmount(90, 18),
Web3Wrapper.toBaseUnitAmount(90, 16),
Web3Wrapper.toBaseUnitAmount(90, 16),
);
const expectedMatchedFillResults2 = createMatchedFillResults({
left: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(45, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
},
right: {
makerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(45, 18),
takerAssetFilledAmount: Web3Wrapper.toBaseUnitAmount(90, 18),
makerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
takerFeePaid: Web3Wrapper.toBaseUnitAmount(90, 16),
},
});
await assertCalculateMatchedFillResultsWithMaximalFillAsync(
expectedMatchedFillResults2,
leftOrder2,