Skip to content

Commit

Permalink
fixed test fees
Browse files Browse the repository at this point in the history
  • Loading branch information
Robsonsjre committed Apr 29, 2021
1 parent 8050ebc commit 9d868cc
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 5 deletions.
4 changes: 2 additions & 2 deletions contracts/amm/OptionAMMFactory.sol
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ contract OptionAMMFactory is IOptionAMMFactory {
) external override returns (address) {
require(address(_pools[_optionAddress]) == address(0), "OptionAMMFactory: Pool already exists");

FeePool feePoolTokenA = new FeePool(_stableAsset, 35, 6);
FeePool feePoolTokenB = new FeePool(_stableAsset, 15, 6);
FeePool feePoolTokenA = new FeePool(_stableAsset, 35, 4);
FeePool feePoolTokenB = new FeePool(_stableAsset, 15, 4);

OptionAMMPool pool = new OptionAMMPool(
_optionAddress,
Expand Down
18 changes: 15 additions & 3 deletions test/amm/OptionAMMPool.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -645,6 +645,10 @@ scenarios.forEach(scenario => {

const buyerStrikeAmountBeforeTrade = await mockStrikeAsset.balanceOf(buyerAddress)
const tradeDetails = await optionAMMPool.getOptionTradeDetailsExactAOutput(numberOfOptionsToBuy)
console.log('tradeDetails')
console.log(tradeDetails.amountBIn.toString())
console.log(tradeDetails.feesTokenA.toString())
console.log(tradeDetails.feesTokenB.toString())

await expect(optionAMMPool.connect(buyer).tradeExactAOutput(numberOfOptionsToBuy, 1, buyerAddress, scenario.initialSigma)).to.be.revertedWith('AMM: slippage not acceptable')

Expand All @@ -653,17 +657,25 @@ scenarios.forEach(scenario => {
const buyerStrikeAmountAfterTrade = await mockStrikeAsset.balanceOf(buyerAddress)
const tokensSpent = buyerStrikeAmountBeforeTrade.sub(buyerStrikeAmountAfterTrade)
expect(tradeDetails.amountBIn).to.be.equal(tokensSpent)
console.log('tokensSpent', tokensSpent.toString())

const feesBN = (new BigNumber(tokensSpent.toString()).multipliedBy(new BigNumber(0.00003))).toFixed(0, 2)
const feesBN = (new BigNumber(tokensSpent.toString()).multipliedBy(new BigNumber(0.005))).toFixed(0, 2)
const fees = toBigNumber(feesBN.toString())
const feeContractA = await ethers.getContractAt('FeePool', feeAddressA)
const feeContractB = await ethers.getContractAt('FeePool', feeAddressB)

const feesAPortion = await feeContractA.feeValue()
const feesBPortion = await feeContractB.feeValue()

const balanceAfterOptionBuyer = await option.balanceOf(buyerAddress)

const balanceAfterStrikeFeePoolA = await mockStrikeAsset.balanceOf(feeAddressA)
const balanceAfterStrikeFeePoolB = await mockStrikeAsset.balanceOf(feeAddressB)
console.log('balanceAfterStrikeFeePoolA', balanceAfterStrikeFeePoolA.toString())
console.log('balanceAfterStrikeFeePoolB', balanceAfterStrikeFeePoolB.toString())

expect(balanceAfterOptionBuyer).to.eq(numberOfOptionsToBuy)
expect(balanceAfterStrikeFeePoolA).to.eq(balanceAfterStrikeFeePoolB)
expect(balanceAfterStrikeFeePoolB).to.eq(balanceAfterStrikeFeePoolA.mul(feesBPortion).div(feesAPortion))
expect(approximately(fees, balanceAfterStrikeFeePoolA.add(balanceAfterStrikeFeePoolB), 8)).to.be.true
})

Expand Down Expand Up @@ -815,7 +827,7 @@ scenarios.forEach(scenario => {

const [poolOptionAmountAfterTrade, poolStrikeAmountAfterTrade] = await optionAMMPool.getPoolBalances()

const feesBN = (new BigNumber(numberOfTokensToReceive.toString()).multipliedBy(new BigNumber(0.00003))).toFixed(0, 2)
const feesBN = (new BigNumber(numberOfTokensToReceive.toString()).multipliedBy(new BigNumber(0.005))).toFixed(0, 2)
const fees = toBigNumber(feesBN.toString())

expect(poolStrikeAmountBeforeTrade).to.eq(poolStrikeAmountAfterTrade.add(numberOfTokensToReceive).add(fees))
Expand Down

0 comments on commit 9d868cc

Please sign in to comment.