Added unit test for calculator
This commit is contained in:
		
							
								
								
									
										89
									
								
								packages/0x.js/test/remaining_fillable_calculator_test.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								packages/0x.js/test/remaining_fillable_calculator_test.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | ||||
| import 'mocha'; | ||||
| import * as chai from 'chai'; | ||||
| import BigNumber from 'bignumber.js'; | ||||
| import { chaiSetup } from './utils/chai_setup'; | ||||
| import { RemainingFillableCalculator } from '../src/order_watcher/remaining_fillable_calculator'; | ||||
| import { SignedOrder, ECSignature } from '../src/types'; | ||||
| import { TokenUtils } from './utils/token_utils'; | ||||
|  | ||||
| chaiSetup.configure(); | ||||
| const expect = chai.expect; | ||||
|  | ||||
| describe.only('RemainingFillableCalculator', () => { | ||||
|     let calculator: RemainingFillableCalculator; | ||||
|     let signedOrder: SignedOrder; | ||||
|     let makerToken: string; | ||||
|     let takerToken: string; | ||||
|     let zrxToken: string; | ||||
|     let transferrableMakerTokenAmount: BigNumber; | ||||
|     let transferrableMakerFeeTokenAmount: BigNumber; | ||||
|     let remainingMakerTokenAmount: BigNumber; | ||||
|     let makerAmount: BigNumber; | ||||
|     let takerAmount: BigNumber; | ||||
|     let makerFee: BigNumber; | ||||
|     const zero: BigNumber = new BigNumber(0); | ||||
|     const zeroAddress = '0x0'; | ||||
|     const signature: ECSignature = { v: 27, r: '', s: ''}; | ||||
|     before(async () => { | ||||
|         [makerToken, takerToken, zrxToken] = ['0x1', '0x2', '0x3']; | ||||
|         [makerAmount, takerAmount, makerFee] = [new BigNumber(50), new BigNumber(5), new BigNumber(1)]; | ||||
|     }); | ||||
|     function buildSignedOrder(): SignedOrder { | ||||
|         return { ecSignature: signature, | ||||
|                  exchangeContractAddress: zeroAddress, | ||||
|                  feeRecipient: zeroAddress, | ||||
|                  maker: zeroAddress, | ||||
|                  taker: zeroAddress, | ||||
|                  makerFee: (makerFee || zero), | ||||
|                  takerFee: zero, | ||||
|                  makerTokenAmount: makerAmount, | ||||
|                  takerTokenAmount: takerAmount, | ||||
|                  makerTokenAddress: makerToken, | ||||
|                  takerTokenAddress: takerToken, | ||||
|                  salt: zero, | ||||
|                  expirationUnixTimestampSec: zero }; | ||||
|     } | ||||
|     it('calculates the correct amount when partially filled and funds available', () => { | ||||
|         signedOrder = buildSignedOrder(); | ||||
|         remainingMakerTokenAmount = new BigNumber(1); | ||||
|         transferrableMakerTokenAmount = new BigNumber(100); | ||||
|         transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount; | ||||
|         calculator = new RemainingFillableCalculator(signedOrder, zrxToken, | ||||
|                        transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerTokenAmount); | ||||
|         expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); | ||||
|     }); | ||||
|     describe('Maker token is NOT ZRX', () => { | ||||
|         it('calculates the amount to be 0 when all fee funds move', () => { | ||||
|             signedOrder = buildSignedOrder(); | ||||
|             transferrableMakerTokenAmount = new BigNumber(100); | ||||
|             transferrableMakerFeeTokenAmount = zero; | ||||
|             remainingMakerTokenAmount = signedOrder.makerTokenAmount; | ||||
|             calculator = new RemainingFillableCalculator(signedOrder, zrxToken, | ||||
|                            transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerTokenAmount); | ||||
|             expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero); | ||||
|         }); | ||||
|     }); | ||||
|     describe('Maker Token is ZRX', () => { | ||||
|         before(async () => { | ||||
|             makerToken = zrxToken; | ||||
|         }); | ||||
|         it('calculates the correct amount when partially filled and funds available', () => { | ||||
|             signedOrder = buildSignedOrder(); | ||||
|             transferrableMakerTokenAmount = new BigNumber(100); | ||||
|             transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount; | ||||
|             remainingMakerTokenAmount = new BigNumber(1); | ||||
|             calculator = new RemainingFillableCalculator(signedOrder, zrxToken, | ||||
|                            transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerTokenAmount); | ||||
|             expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(remainingMakerTokenAmount); | ||||
|         }); | ||||
|         it('calculates the amount to be 0 when all fee funds move', () => { | ||||
|             signedOrder = buildSignedOrder(); | ||||
|             transferrableMakerTokenAmount = zero; | ||||
|             transferrableMakerFeeTokenAmount = transferrableMakerTokenAmount; | ||||
|             remainingMakerTokenAmount = signedOrder.makerTokenAmount; | ||||
|             calculator = new RemainingFillableCalculator(signedOrder, zrxToken, | ||||
|                            transferrableMakerTokenAmount, transferrableMakerFeeTokenAmount, remainingMakerTokenAmount); | ||||
|             expect(calculator.computeRemainingMakerFillable()).to.be.bignumber.equal(zero); | ||||
|         }); | ||||
|     }); | ||||
| }); | ||||
		Reference in New Issue
	
	Block a user