diff options
| author | Fabio Berger <me@fabioberger.com> | 2018-06-08 03:13:30 +0800 | 
|---|---|---|
| committer | Fabio Berger <me@fabioberger.com> | 2018-06-08 03:13:30 +0800 | 
| commit | 5aaf87d61260ec4723e7eb0a887629b057454957 (patch) | |
| tree | 0637dfabfec4e71f5cc7d3b2f46712572bb58ce0 /packages/order-watcher | |
| parent | 10478a6b2fd1f2a01597a88afde9cf582640a849 (diff) | |
| parent | 96b31f39749fb32bd89978245c79aa637791336c (diff) | |
| download | dexon-sol-tools-5aaf87d61260ec4723e7eb0a887629b057454957.tar.gz dexon-sol-tools-5aaf87d61260ec4723e7eb0a887629b057454957.tar.zst dexon-sol-tools-5aaf87d61260ec4723e7eb0a887629b057454957.zip | |
Merge branch 'v2-prototype' into refactor/move-spawn-switch-to-utils
* v2-prototype:
  Fix tslint issues
  Fix tslint failure
  Pass in fee and assetAmount rather then the whole signedOrder
  Fix missing paths
  Revert to returning orderState on invalid order
  - Refactor remainingFillableCalculator so it can be used for the maker and taker side - Moved the tests over from order-watcher - Did some token -> asset renaming
  Update naming in orderStateUtils to use asset over token, also removed cancelledAmount since in V2 it's binary.
  Fixed path
  Use source-map-support package to include correct line numbers in mocha
  move generated contract wrappers from `contract_wrappers/generated/` to `generated_contract_wrappers` in package with no non-generated contract wrappers
Diffstat (limited to 'packages/order-watcher')
| -rw-r--r-- | packages/order-watcher/package.json | 2 | ||||
| -rw-r--r-- | packages/order-watcher/test/remaining_fillable_calculator_test.ts | 235 | 
2 files changed, 1 insertions, 236 deletions
| diff --git a/packages/order-watcher/package.json b/packages/order-watcher/package.json index b67df2e4c..2e5dfb094 100644 --- a/packages/order-watcher/package.json +++ b/packages/order-watcher/package.json @@ -25,7 +25,7 @@          "update_compact_artifacts": "copyfiles -u 2 './src/compact_artifacts/**/*.json' ./lib/src/compact_artifacts",          "update_test_artifacts": "for i in ${npm_package_config_contracts}; do copyfiles -u 4 ../migrations/artifacts/1.0.0/$i.json test/artifacts; done;",          "clean": "shx rm -rf _bundles lib test_temp scripts test/artifacts src/generated_contract_wrappers", -        "run_mocha": "mocha lib/test/**/*_test.js lib/test/global_hooks.js --timeout 10000 --bail --exit", +        "run_mocha": "mocha --require source-map-support/register lib/test/**/*_test.js lib/test/global_hooks.js --timeout 10000 --bail --exit",          "manual:postpublish": "yarn build; node ./scripts/postpublish.js"      },      "config": { diff --git a/packages/order-watcher/test/remaining_fillable_calculator_test.ts b/packages/order-watcher/test/remaining_fillable_calculator_test.ts deleted file mode 100644 index ea116175b..000000000 --- a/packages/order-watcher/test/remaining_fillable_calculator_test.ts +++ /dev/null @@ -1,235 +0,0 @@ -import { ECSignature, SignedOrder } from '@0xproject/types'; -import { BigNumber } from '@0xproject/utils'; -import { Web3Wrapper } from '@0xproject/web3-wrapper'; -import * as chai from 'chai'; -import 'make-promises-safe'; -import 'mocha'; - -import { RemainingFillableCalculator } from '@0xproject/order-utils'; - -import { chaiSetup } from './utils/chai_setup'; - -chaiSetup.configure(); -const expect = chai.expect; - -describe('RemainingFillableCalculator', () => { -    let calculator: RemainingFillableCalculator; -    let signedOrder: SignedOrder; -    let transferrableMakerTokenAmount: BigNumber; -    let transferrableMakerFeeTokenAmount: BigNumber; -    let remainingMakerTokenAmount: BigNumber; -    let makerAmount: BigNumber; -    let takerAmount: BigNumber; -    let makerFeeAmount: BigNumber; -    let isMakerTokenZRX: boolean; -    const makerToken: string = '0x1'; -    const takerToken: string = '0x2'; -    const decimals: number = 4; -    const zero: BigNumber = new BigNumber(0); -    const zeroAddress = '0x0'; -    const signature: ECSignature = { v: 27, r: '', s: '' }; -    beforeEach(async () => { -        [makerAmount, takerAmount, makerFeeAmount] = [ -            Web3Wrapper.toBaseUnitAmount(new BigNumber(50), decimals), -            Web3Wrapper.toBaseUnitAmount(new BigNumber(5), decimals), -            Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals), -        ]; -        [transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount] = [ -            Web3Wrapper.toBaseUnitAmount(new BigNumber(50), decimals), -            Web3Wrapper.toBaseUnitAmount(new BigNumber(5), decimals), -        ]; -    }); -    function buildSignedOrder(): SignedOrder { -        return { -            ecSignature: signature, -            exchangeContractAddress: zeroAddress, -            feeRecipient: zeroAddress, -            maker: zeroAddress, -            taker: zeroAddress, -            makerFee: makerFeeAmount, -            takerFee: zero, -            makerTokenAmount: makerAmount, -            takerTokenAmount: takerAmount, -            makerTokenAddress: makerToken, -            takerTokenAddress: takerToken, -            salt: zero, -            expirationUnixTimestampSec: zero, -        }; -    } -    describe('Maker token is NOT ZRX', () => { -        before(async () => { -            isMakerTokenZRX = false; -        }); -        it('calculates the correct amount when unfilled and funds available', () => { -            signedOrder = buildSignedOrder(); -            remainingMakerTokenAmount = signedOrder.makerTokenAmount; -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); -        }); -        it('calculates the correct amount when partially filled and funds available', () => { -            signedOrder = buildSignedOrder(); -            remainingMakerTokenAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals); -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); -        }); -        it('calculates the amount to be 0 when all fee funds are transferred', () => { -            signedOrder = buildSignedOrder(); -            transferrableMakerFeeTokenAmount = zero; -            remainingMakerTokenAmount = signedOrder.makerTokenAmount; -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero); -        }); -        it('calculates the correct amount when balance is less than remaining fillable', () => { -            signedOrder = buildSignedOrder(); -            const partiallyFilledAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); -            remainingMakerTokenAmount = signedOrder.makerTokenAmount.minus(partiallyFilledAmount); -            transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(partiallyFilledAmount); -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(transferrableMakerTokenAmount); -        }); -        describe('Order to Fee Ratio is < 1', () => { -            beforeEach(async () => { -                [makerAmount, takerAmount, makerFeeAmount] = [ -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(3), decimals), -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(6), decimals), -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(6), decimals), -                ]; -            }); -            it('calculates the correct amount when funds unavailable', () => { -                signedOrder = buildSignedOrder(); -                remainingMakerTokenAmount = signedOrder.makerTokenAmount; -                const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); -                transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(transferredAmount); -                calculator = new RemainingFillableCalculator( -                    signedOrder, -                    isMakerTokenZRX, -                    transferrableMakerTokenAmount, -                    transferrableMakerFeeTokenAmount, -                    remainingMakerTokenAmount, -                ); -                expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(transferrableMakerTokenAmount); -            }); -        }); -        describe('Ratio is not evenly divisble', () => { -            beforeEach(async () => { -                [makerAmount, takerAmount, makerFeeAmount] = [ -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(3), decimals), -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(7), decimals), -                    Web3Wrapper.toBaseUnitAmount(new BigNumber(7), decimals), -                ]; -            }); -            it('calculates the correct amount when funds unavailable', () => { -                signedOrder = buildSignedOrder(); -                remainingMakerTokenAmount = signedOrder.makerTokenAmount; -                const transferredAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); -                transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(transferredAmount); -                calculator = new RemainingFillableCalculator( -                    signedOrder, -                    isMakerTokenZRX, -                    transferrableMakerTokenAmount, -                    transferrableMakerFeeTokenAmount, -                    remainingMakerTokenAmount, -                ); -                const calculatedFillableAmount = calculator.computeRemainingMakerFillable(); -                expect(calculatedFillableAmount.lessThanOrEqualTo(transferrableMakerTokenAmount)).to.be.true(); -                expect(calculatedFillableAmount).to.be.bignumber.greaterThan(new BigNumber(0)); -                const orderToFeeRatio = signedOrder.makerTokenAmount.dividedBy(signedOrder.makerFee); -                const calculatedFeeAmount = calculatedFillableAmount.dividedBy(orderToFeeRatio); -                expect(calculatedFeeAmount).to.be.bignumber.lessThan(transferrableMakerFeeTokenAmount); -            }); -        }); -    }); -    describe('Maker Token is ZRX', () => { -        before(async () => { -            isMakerTokenZRX = true; -        }); -        it('calculates the correct amount when unfilled and funds available', () => { -            signedOrder = buildSignedOrder(); -            transferrableMakerTokenAmount = makerAmount.plus(makerFeeAmount); -            transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount; -            remainingMakerTokenAmount = signedOrder.makerTokenAmount; -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); -        }); -        it('calculates the correct amount when partially filled and funds available', () => { -            signedOrder = buildSignedOrder(); -            remainingMakerTokenAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(1), decimals); -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); -        }); -        it('calculates the amount to be 0 when all fee funds are transferred', () => { -            signedOrder = buildSignedOrder(); -            transferrableMakerTokenAmount = zero; -            transferrableMakerFeeTokenAmount = zero; -            remainingMakerTokenAmount = signedOrder.makerTokenAmount; -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero); -        }); -        it('calculates the correct amount when balance is less than remaining fillable', () => { -            signedOrder = buildSignedOrder(); -            const partiallyFilledAmount = Web3Wrapper.toBaseUnitAmount(new BigNumber(2), decimals); -            remainingMakerTokenAmount = signedOrder.makerTokenAmount.minus(partiallyFilledAmount); -            transferrableMakerTokenAmount = remainingMakerTokenAmount.minus(partiallyFilledAmount); -            transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount; - -            const orderToFeeRatio = signedOrder.makerTokenAmount.dividedToIntegerBy(signedOrder.makerFee); -            const expectedFillableAmount = new BigNumber(450980); -            calculator = new RemainingFillableCalculator( -                signedOrder, -                isMakerTokenZRX, -                transferrableMakerTokenAmount, -                transferrableMakerFeeTokenAmount, -                remainingMakerTokenAmount, -            ); -            const calculatedFillableAmount = calculator.computeRemainingMakerFillable(); -            const numberOfFillsInRatio = calculatedFillableAmount.dividedToIntegerBy(orderToFeeRatio); -            const calculatedFillableAmountPlusFees = calculatedFillableAmount.plus(numberOfFillsInRatio); -            expect(calculatedFillableAmountPlusFees).to.be.bignumber.lessThan(transferrableMakerTokenAmount); -            expect(calculatedFillableAmountPlusFees).to.be.bignumber.lessThan(remainingMakerTokenAmount); -            expect(calculatedFillableAmount).to.be.bignumber.equal(expectedFillableAmount); -            expect(numberOfFillsInRatio.decimalPlaces()).to.be.equal(0); -        }); -    }); -}); | 
