1
0
mirror of https://github.com/oceanprotocol/ocean.js.git synced 2024-11-26 20:39:05 +01:00
This commit is contained in:
lacoop6tu 2021-11-09 08:28:41 -05:00
parent 475855d899
commit 65ab6c2c23
2 changed files with 80 additions and 60 deletions

View File

@ -759,7 +759,7 @@ export class Pool {
try { try {
decimals = await tokenContract.methods.decimals().call() decimals = await tokenContract.methods.decimals().call()
if (decimals == 0){ if (decimals === 0) {
decimals = 18 decimals = 18
} }
} catch (e) { } catch (e) {
@ -779,7 +779,7 @@ export class Pool {
) )
try { try {
decimals = await tokenContract.methods.decimals().call() decimals = await tokenContract.methods.decimals().call()
if (decimals == 0){ if (decimals === 0) {
decimals = 18 decimals = 18
} }
} catch (e) { } catch (e) {
@ -1522,7 +1522,6 @@ export class Pool {
.call() .call()
amount = await this.unitsToAmount(tokenOut, result) amount = await this.unitsToAmount(tokenOut, result)
} catch (e) { } catch (e) {
this.logger.error('ERROR: Failed to calcOutGivenIn') this.logger.error('ERROR: Failed to calcOutGivenIn')
} }
@ -1538,10 +1537,7 @@ export class Pool {
let amount = null let amount = null
try { try {
const result = await pool.methods const result = await pool.methods
.calcPoolOutSingleIn( .calcPoolOutSingleIn(tokenIn, await this.amountToUnits(tokenIn, tokenAmountIn))
tokenIn,
await this.amountToUnits(tokenIn,tokenAmountIn)
)
.call() .call()
amount = await this.unitsToAmount(poolAddress, result) amount = await this.unitsToAmount(poolAddress, result)
} catch (e) { } catch (e) {
@ -1553,7 +1549,7 @@ export class Pool {
public async calcSingleInGivenPoolOut( public async calcSingleInGivenPoolOut(
poolAddress: string, poolAddress: string,
tokenIn: string, tokenIn: string,
poolAmountOut: string, poolAmountOut: string
): Promise<string> { ): Promise<string> {
const pool = new this.web3.eth.Contract(this.poolABI, poolAddress) const pool = new this.web3.eth.Contract(this.poolABI, poolAddress)
let amount = null let amount = null
@ -1562,15 +1558,11 @@ export class Pool {
try { try {
const result = await pool.methods const result = await pool.methods
.calcSingleInPoolOut( .calcSingleInPoolOut(tokenIn, amountFormatted)
tokenIn,
amountFormatted
)
.call() .call()
amount = await this.unitsToAmount(tokenIn, result) amount = await this.unitsToAmount(tokenIn, result)
} catch (e) { } catch (e) {
this.logger.error(`ERROR: Failed to calculate SingleInGivenPoolOut : ${e.message}`) this.logger.error(`ERROR: Failed to calculate SingleInGivenPoolOut : ${e.message}`)
} }
@ -1607,10 +1599,7 @@ export class Pool {
let amount = null let amount = null
try { try {
const result = await pool.methods const result = await pool.methods
.calcPoolInSingleOut( .calcPoolInSingleOut(tokenOut, await this.amountToUnits(tokenOut, tokenAmountOut))
tokenOut,
await this.amountToUnits(tokenOut,tokenAmountOut)
)
.call() .call()
amount = await this.unitsToAmount(poolAddress, result) amount = await this.unitsToAmount(poolAddress, result)

View File

@ -641,39 +641,70 @@ describe('Pool unit test', () => {
// since rate is 1 and the pool is just created // since rate is 1 and the pool is just created
// amount of pool out received for same amount of different token In is equal // amount of pool out received for same amount of different token In is equal
const tokenInAmount = '10' // 10 USDC or 10 DTs const tokenInAmount = '10' // 10 USDC or 10 DTs
expect(await pool.calcPoolOutGivenSingleIn(poolAddress, erc20Token, tokenInAmount)).to.equal( expect(
await pool.calcPoolOutGivenSingleIn(poolAddress, contracts.usdcAddress, tokenInAmount) await pool.calcPoolOutGivenSingleIn(poolAddress, erc20Token, tokenInAmount)
).to.equal(
await pool.calcPoolOutGivenSingleIn(
poolAddress,
contracts.usdcAddress,
tokenInAmount
)
) )
// console.log(await pool.calcPoolOutGivenSingleIn(poolAddress, erc20Token, tokenInAmount)) // console.log(await pool.calcPoolOutGivenSingleIn(poolAddress, erc20Token, tokenInAmount))
}) })
it('#calcSingleInGivenPoolOut - should get the amount of token IN for exact pool token OUT', async () => { it('#calcSingleInGivenPoolOut - should get the amount of token IN for exact pool token OUT', async () => {
// since rate is 1 and the pool is just created // since rate is 1 and the pool is just created
// amount of different token In for getting same pool amount out is equal // amount of different token In for getting same pool amount out is equal
const poolAmountOut = '1' const poolAmountOut = '1'
expect(parseInt(await pool.calcSingleInGivenPoolOut(poolAddress, erc20Token, poolAmountOut))).to.be.closeTo( expect(
parseInt(await pool.calcSingleInGivenPoolOut(poolAddress, contracts.usdcAddress, poolAmountOut)),1e9 parseInt(
await pool.calcSingleInGivenPoolOut(poolAddress, erc20Token, poolAmountOut)
)
).to.be.closeTo(
parseInt(
await pool.calcSingleInGivenPoolOut(
poolAddress,
contracts.usdcAddress,
poolAmountOut
)
),
1e9
) )
}) })
it('#calcSingleOutGivenPoolIn - should get the amount of token OUT for exact pool token IN', async () => { it('#calcSingleOutGivenPoolIn - should get the amount of token OUT for exact pool token IN', async () => {
// since rate is 1 and the pool is just created // since rate is 1 and the pool is just created
// amount amount of different token Out for rediming the same pool In is equal // amount amount of different token Out for rediming the same pool In is equal
const poolAmountIn = '10' const poolAmountIn = '10'
expect(await pool.calcSingleOutGivenPoolIn(poolAddress, erc20Token, poolAmountIn)).to.equal( expect(
await pool.calcSingleOutGivenPoolIn(poolAddress, contracts.usdcAddress, poolAmountIn) await pool.calcSingleOutGivenPoolIn(poolAddress, erc20Token, poolAmountIn)
).to.equal(
await pool.calcSingleOutGivenPoolIn(
poolAddress,
contracts.usdcAddress,
poolAmountIn
)
) )
}) })
it('#calcPoolInGivenSingleOut - should get the amount of pool IN for exact token OUT', async () => { it('#calcPoolInGivenSingleOut - should get the amount of pool IN for exact token OUT', async () => {
// since rate is 1 and the pool is just created // since rate is 1 and the pool is just created
// amount of pool In for getting the same amount of different token Out is equal // amount of pool In for getting the same amount of different token Out is equal
const tokenAmountOut = '10' const tokenAmountOut = '10'
expect(parseInt(await pool.calcPoolInGivenSingleOut(poolAddress, erc20Token,tokenAmountOut))).to.be.closeTo( expect(
parseInt(await pool.calcPoolInGivenSingleOut(poolAddress, contracts.usdcAddress, tokenAmountOut)),1e9 parseInt(
await pool.calcPoolInGivenSingleOut(poolAddress, erc20Token, tokenAmountOut)
)
).to.be.closeTo(
parseInt(
await pool.calcPoolInGivenSingleOut(
poolAddress,
contracts.usdcAddress,
tokenAmountOut
)
),
1e11
) )
}) })