@0x:contracts-exchange
Refactored internal.ts so that it is more readable
This commit is contained in:
@@ -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,
|
||||
|
Reference in New Issue
Block a user