aboutsummaryrefslogtreecommitdiffstats
path: root/packages/order-utils/test/sorting_utils_test.ts
diff options
context:
space:
mode:
authorBrandon Millman <brandon.millman@gmail.com>2018-08-15 04:48:21 +0800
committerBrandon Millman <brandon.millman@gmail.com>2018-08-15 04:48:21 +0800
commit9c3d10d5be40abe86cb24ec437946707167c19ff (patch)
treeecdc085c2439090728e8816687357cf489320dd3 /packages/order-utils/test/sorting_utils_test.ts
parent6a2634d362e50e5a611f388c0785df3209cee308 (diff)
parent3afe405bbe92f9c549a59f26b9c82654f0e304c4 (diff)
downloaddexon-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.ts67
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]);
+ });
+ });
+});