diff options
author | Brandon Millman <brandon.millman@gmail.com> | 2018-08-15 04:48:21 +0800 |
---|---|---|
committer | Brandon Millman <brandon.millman@gmail.com> | 2018-08-15 04:48:21 +0800 |
commit | 9c3d10d5be40abe86cb24ec437946707167c19ff (patch) | |
tree | ecdc085c2439090728e8816687357cf489320dd3 /packages/order-utils/test/sorting_utils_test.ts | |
parent | 6a2634d362e50e5a611f388c0785df3209cee308 (diff) | |
parent | 3afe405bbe92f9c549a59f26b9c82654f0e304c4 (diff) | |
download | dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.gz dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.bz2 dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.lz dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.xz dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.tar.zst dexon-sol-tools-9c3d10d5be40abe86cb24ec437946707167c19ff.zip |
Merge branch 'development' into refactor/order-utils/market-utils-api
* development:
feat: Upgrade TypeScript to 3.0.1
Add defaults for networkId and pagination
Update sortingUtils to support Order and SignedOrder
Change rateUtils to use Order
Updated CHANGELOG
Fix lint errors
Update tests for optional feeRate
Make feeRate optional with a default of 0
Add tests for sortingUtils
Implement sorting utils
Add tests for rateUtils
Implement rate utils
Diffstat (limited to 'packages/order-utils/test/sorting_utils_test.ts')
-rw-r--r-- | packages/order-utils/test/sorting_utils_test.ts | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/packages/order-utils/test/sorting_utils_test.ts b/packages/order-utils/test/sorting_utils_test.ts new file mode 100644 index 000000000..016432505 --- /dev/null +++ b/packages/order-utils/test/sorting_utils_test.ts @@ -0,0 +1,67 @@ +import { BigNumber } from '@0xproject/utils'; +import * as chai from 'chai'; +import 'mocha'; + +import { sortingUtils } from '../src'; + +import { chaiSetup } from './utils/chai_setup'; +import { testOrderFactory } from './utils/test_order_factory'; + +chaiSetup.configure(); +const expect = chai.expect; + +describe('sortingUtils', () => { + describe('#sortOrdersByFeeAdjustedRate', () => { + const feeRate = new BigNumber(1); // ZRX costs 1 unit of takerAsset per 1 unit of ZRX + // rate: 2 takerAsset / makerAsset + const testOrder1 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(200), + }); + // rate: 1 takerAsset / makerAsset + const testOrder2 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(100), + }); + // rate: 2.5 takerAsset / makerAsset + const testOrder3 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(200), + takerFee: new BigNumber(50), + }); + it('correctly sorts by fee adjusted rate when feeRate is Provided', async () => { + const orders = [testOrder1, testOrder2, testOrder3]; + const sortedOrders = sortingUtils.sortOrdersByFeeAdjustedRate(orders, feeRate); + expect(sortedOrders).to.deep.equal([testOrder2, testOrder1, testOrder3]); + }); + it('correctly sorts by fee adjusted rate when no feeRate is Provided', async () => { + const orders = [testOrder1, testOrder2, testOrder3]; + const sortedOrders = sortingUtils.sortOrdersByFeeAdjustedRate(orders); + expect(sortedOrders).to.deep.equal([testOrder2, testOrder1, testOrder3]); + }); + }); + describe('#sortFeeOrdersByFeeAdjustedRate', () => { + // rate: 200 takerAsset / makerAsset + const testOrder1 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(200), + takerFee: new BigNumber(99), + }); + // rate: 1 takerAsset / makerAsset + const testOrder2 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(100), + }); + // rate: 4 takerAsset / makerAsset + const testOrder3 = testOrderFactory.generateTestSignedOrder({ + makerAssetAmount: new BigNumber(100), + takerAssetAmount: new BigNumber(200), + takerFee: new BigNumber(50), + }); + it('correctly sorts by fee adjusted rate', async () => { + const orders = [testOrder1, testOrder2, testOrder3]; + const sortedOrders = sortingUtils.sortFeeOrdersByFeeAdjustedRate(orders); + expect(sortedOrders).to.deep.equal([testOrder2, testOrder3, testOrder1]); + }); + }); +}); |