From 763a3ee24e9d52439171a8dbc1e79bbd9829c12a Mon Sep 17 00:00:00 2001 From: owen05 Date: Mon, 29 Mar 2021 00:50:28 +0800 Subject: [PATCH] add DSP test --- test/DSP/funding.test.ts | 178 ++++++++++++++++++--------------------- test/DSP/trader.test.ts | 130 +++++++++++++--------------- test/utils/DSPContext.ts | 10 +-- 3 files changed, 146 insertions(+), 172 deletions(-) diff --git a/test/DSP/funding.test.ts b/test/DSP/funding.test.ts index acfdb1a..7017ec7 100644 --- a/test/DSP/funding.test.ts +++ b/test/DSP/funding.test.ts @@ -9,7 +9,7 @@ import { decimalStr, MAX_UINT256 } from '../utils/Converter'; import { logGas } from '../utils/Log'; -import { DVMContext, getDVMContext } from '../utils/DVMContext'; +import { DSPContext, getDSPContext } from '../utils/DSPContext'; import { assert } from 'chai'; import BigNumber from 'bignumber.js'; const truffleAssert = require('truffle-assertions'); @@ -17,20 +17,20 @@ const truffleAssert = require('truffle-assertions'); let lp: string; let trader: string; -async function init(ctx: DVMContext): Promise { +async function init(ctx: DSPContext): Promise { lp = ctx.SpareAccounts[0]; trader = ctx.SpareAccounts[1]; - await ctx.mintTestToken(lp, decimalStr("10"), decimalStr("1000")); - await ctx.mintTestToken(trader, decimalStr("10"), decimalStr("1000")); + await ctx.mintTestToken(lp, decimalStr("1000"), decimalStr("1000")); + await ctx.mintTestToken(trader, decimalStr("1000"), decimalStr("1000")); } describe("Funding", () => { let snapshotId: string; - let ctx: DVMContext; + let ctx: DSPContext; before(async () => { - ctx = await getDVMContext(); + ctx = await getDSPContext(); await init(ctx); }); @@ -44,159 +44,143 @@ describe("Funding", () => { describe("buy shares", () => { + it("revert cases", async () => { + await ctx.transferBaseToDSP(lp, decimalStr("10")) + await truffleAssert.reverts( + ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)), + "MINT_AMOUNT_NOT_ENOUGH" + ) + }) + it("buy shares from init states", async () => { - - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await logGas(ctx.DVM.methods.buyShares(lp), ctx.sendParam(lp), "buy shares"); - - // vault balances - assert.equal( - await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), - decimalStr("10") - ); - assert.equal( - await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), - decimalStr("0") - ); - assert.equal( - await ctx.DVM.methods._BASE_RESERVE_().call(), - decimalStr("10") - ) - assert.equal( - await ctx.DVM.methods._QUOTE_RESERVE_().call(), - decimalStr("0") - ) - - // shares number - assert.equal(await ctx.DVM.methods.balanceOf(lp).call(), decimalStr("10")) - }); - - it("buy shares from init states with quote != 0", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.transferQuoteToDVM(lp, decimalStr("100")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)); - assert.equal(await ctx.DVM.methods.balanceOf(lp).call(), decimalStr("10")) - assert.equal(await ctx.DVM.methods.getMidPrice().call(), "102078438912577213500") + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)); + assert.equal(await ctx.DSP.methods.balanceOf(lp).call(), decimalStr("100")) + assert.equal(await ctx.DSP.methods.getMidPrice().call(), decimalStr("1")) }) it("buy shares with balanced input", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - await ctx.transferQuoteToDVM(trader, decimalStr("200")) - await ctx.DVM.methods.sellQuote(trader).send(ctx.sendParam(trader)) + await ctx.transferQuoteToDSP(trader, decimalStr("20")) + await ctx.DSP.methods.sellQuote(trader).send(ctx.sendParam(trader)) - var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call()) - var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call()) + var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DSP.options.address).call()) + var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DSP.options.address).call()) var increaseRatio = new BigNumber("0.1") - await ctx.transferBaseToDVM(trader, vaultBaseBalance.multipliedBy(increaseRatio).toFixed(0)) - await ctx.transferQuoteToDVM(trader, vaultQuoteBalance.multipliedBy(increaseRatio).toFixed(0)) - await ctx.DVM.methods.buyShares(trader).send(ctx.sendParam(trader)) + await ctx.transferBaseToDSP(trader, vaultBaseBalance.multipliedBy(increaseRatio).toFixed(0)) + await ctx.transferQuoteToDSP(trader, vaultQuoteBalance.multipliedBy(increaseRatio).toFixed(0)) + await ctx.DSP.methods.buyShares(trader).send(ctx.sendParam(trader)) assert.equal( - await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), - "8852116395368015179" + await ctx.BASE.methods.balanceOf(ctx.DSP.options.address).call(), + "88521163953680151790" ); assert.equal( - await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), - "220000000000000000000" + await ctx.QUOTE.methods.balanceOf(ctx.DSP.options.address).call(), + "132000000000000000000" ); - assert.equal(await ctx.DVM.methods.balanceOf(trader).call(), "999999999999999990") + assert.equal(await ctx.DSP.methods.balanceOf(trader).call(), decimalStr("10")) }) it("buy shares with unbalanced input (less quote)", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - await ctx.transferQuoteToDVM(trader, decimalStr("200")) - await ctx.DVM.methods.sellQuote(trader).send(ctx.sendParam(trader)) + await ctx.transferQuoteToDSP(trader, decimalStr("20")) + await ctx.DSP.methods.sellQuote(trader).send(ctx.sendParam(trader)) - var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call()) - var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call()) + var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DSP.options.address).call()) + var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DSP.options.address).call()) var increaseRatio = new BigNumber("0.1") - await ctx.transferBaseToDVM(trader, vaultBaseBalance.multipliedBy(increaseRatio).toFixed(0)) - await ctx.transferQuoteToDVM(trader, vaultQuoteBalance.multipliedBy(increaseRatio).div(2).toFixed(0)) - await ctx.DVM.methods.buyShares(trader).send(ctx.sendParam(trader)) + await ctx.transferBaseToDSP(trader, vaultBaseBalance.multipliedBy(increaseRatio).toFixed(0)) + await ctx.transferQuoteToDSP(trader, vaultQuoteBalance.multipliedBy(increaseRatio).div(2).toFixed(0)) + await ctx.DSP.methods.buyShares(trader).send(ctx.sendParam(trader)) - assert.equal(await ctx.DVM.methods.balanceOf(trader).call(), "500000000000000000") + assert.equal(await ctx.DSP.methods.balanceOf(trader).call(), decimalStr("5")) }) it("buy shares with unbalanced input (less base)", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - await ctx.transferQuoteToDVM(trader, decimalStr("200")) - await ctx.DVM.methods.sellQuote(trader).send(ctx.sendParam(trader)) + await ctx.transferQuoteToDSP(trader, decimalStr("20")) + await ctx.DSP.methods.sellQuote(trader).send(ctx.sendParam(trader)) - var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call()) - var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call()) + var vaultBaseBalance = new BigNumber(await ctx.BASE.methods.balanceOf(ctx.DSP.options.address).call()) + var vaultQuoteBalance = new BigNumber(await ctx.QUOTE.methods.balanceOf(ctx.DSP.options.address).call()) var increaseRatio = new BigNumber("0.1") - await ctx.transferBaseToDVM(trader, vaultBaseBalance.multipliedBy(increaseRatio).div(2).toFixed(0)) - await ctx.transferQuoteToDVM(trader, vaultQuoteBalance.multipliedBy(increaseRatio).toFixed(0)) - await ctx.DVM.methods.buyShares(trader).send(ctx.sendParam(trader)) + await ctx.transferBaseToDSP(trader, vaultBaseBalance.multipliedBy(increaseRatio).div(2).toFixed(0)) + await ctx.transferQuoteToDSP(trader, vaultQuoteBalance.multipliedBy(increaseRatio).toFixed(0)) + await ctx.DSP.methods.buyShares(trader).send(ctx.sendParam(trader)) - assert.equal(await ctx.DVM.methods.balanceOf(trader).call(), "499999999999999990") + assert.equal(await ctx.DSP.methods.balanceOf(trader).call(), "4999999999999999900") }) }); describe("sell shares", () => { it("not the last one sell shares", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.transferQuoteToDVM(lp, decimalStr("100")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - await ctx.transferBaseToDVM(trader, decimalStr("1")) - await ctx.transferQuoteToDVM(trader, decimalStr("10")) - await ctx.DVM.methods.buyShares(trader).send(ctx.sendParam(trader)) + await ctx.transferBaseToDSP(trader, decimalStr("10")) + await ctx.transferQuoteToDSP(trader, decimalStr("10")) + await ctx.DSP.methods.buyShares(trader).send(ctx.sendParam(trader)) - var vaultShares = new BigNumber(await ctx.DVM.methods.balanceOf(lp).call()) + var vaultShares = new BigNumber(await ctx.DSP.methods.balanceOf(lp).call()) var bob = ctx.SpareAccounts[5] - await ctx.DVM.methods.sellShares(vaultShares.div(2).toFixed(0), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) - assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("5")) + await ctx.DSP.methods.sellShares(vaultShares.div(2).toFixed(0), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) + assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("50")) assert.equal(await ctx.QUOTE.methods.balanceOf(bob).call(), decimalStr("50")) - await ctx.DVM.methods.sellShares(vaultShares.div(2).toFixed(0), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) - assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("10")) + await ctx.DSP.methods.sellShares(vaultShares.div(2).toFixed(0), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) + assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("100")) assert.equal(await ctx.QUOTE.methods.balanceOf(bob).call(), decimalStr("100")) }) it("the last one sell shares", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.transferQuoteToDVM(lp, decimalStr("100")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - var vaultShares = await ctx.DVM.methods.balanceOf(lp).call() + var vaultShares = await ctx.DSP.methods.balanceOf(lp).call() var bob = ctx.SpareAccounts[5] - await ctx.DVM.methods.sellShares(vaultShares, bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) - assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("10")) + await ctx.DSP.methods.sellShares(vaultShares, bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)) + assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("100")) assert.equal(await ctx.QUOTE.methods.balanceOf(bob).call(), decimalStr("100")) }) it("revert cases", async () => { - await ctx.transferBaseToDVM(lp, decimalStr("10")) - await ctx.transferQuoteToDVM(lp, decimalStr("100")) - await ctx.DVM.methods.buyShares(lp).send(ctx.sendParam(lp)) + await ctx.transferBaseToDSP(lp, decimalStr("100")) + await ctx.transferQuoteToDSP(lp, decimalStr("100")) + await ctx.DSP.methods.buyShares(lp).send(ctx.sendParam(lp)) - var vaultShares = await ctx.DVM.methods.balanceOf(lp).call() + var vaultShares = await ctx.DSP.methods.balanceOf(lp).call() var bob = ctx.SpareAccounts[5] await truffleAssert.reverts( - ctx.DVM.methods.sellShares(new BigNumber(vaultShares).multipliedBy(2), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)), + ctx.DSP.methods.sellShares(new BigNumber(vaultShares).multipliedBy(2), bob, 0, 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)), "DLP_NOT_ENOUGH" ) await truffleAssert.reverts( - ctx.DVM.methods.sellShares(vaultShares, bob, decimalStr("100"), 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)), + ctx.DSP.methods.sellShares(vaultShares, bob, decimalStr("1000"), 0, "0x", MAX_UINT256).send(ctx.sendParam(lp)), "WITHDRAW_NOT_ENOUGH" ) await truffleAssert.reverts( - ctx.DVM.methods.sellShares(vaultShares, bob, 0, decimalStr("10000"), "0x", MAX_UINT256).send(ctx.sendParam(lp)), + ctx.DSP.methods.sellShares(vaultShares, bob, 0, decimalStr("1000"), "0x", MAX_UINT256).send(ctx.sendParam(lp)), "WITHDRAW_NOT_ENOUGH" ) await truffleAssert.reverts( - ctx.DVM.methods.sellShares(vaultShares, bob, 0, decimalStr("10000"), "0x", "0").send(ctx.sendParam(lp)), + ctx.DSP.methods.sellShares(vaultShares, bob, 0, decimalStr("10000"), "0x", "0").send(ctx.sendParam(lp)), "TIME_EXPIRED" ) }) diff --git a/test/DSP/trader.test.ts b/test/DSP/trader.test.ts index 7fa5d4d..1c0ec17 100644 --- a/test/DSP/trader.test.ts +++ b/test/DSP/trader.test.ts @@ -53,38 +53,36 @@ describe("DSP Trader", () => { await logGas(ctx.DSP.methods.sellQuote(trader), ctx.sendParam(trader), "sellQuote - buy at R=1") var balances = await ctx.getBalances(trader) - console.log("Balance:", balances); - // assert.equal(balances.traderBase, "10986174542266106307") - // assert.equal(balances.traderQuote, decimalStr("900")) - // assert.equal(balances.DPPBase, "9012836315765723075") - // assert.equal(balances.DPPQuote, decimalStr("1100")) - // assert.equal(balances.maintainerBase, "989141968170618") - // assert.equal(balances.maintainerQuote, "0") + assert.equal(balances.traderBase, "1098914196817061816111") + assert.equal(balances.traderQuote, decimalStr("900")) + assert.equal(balances.DSPBase, "901085803182938183889") + assert.equal(balances.DSPQuote, decimalStr("1100")) + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // buy at R>1 await ctx.transferQuoteToDSP(trader, decimalStr("100")) await logGas(ctx.DSP.methods.sellQuote(trader), ctx.sendParam(trader), "sellQuote - buy at R>1") balances = await ctx.getBalances(trader) - console.log("Balance:", balances); - // assert.equal(balances.traderBase, "11946772292527553373") - // assert.equal(balances.traderQuote, decimalStr("800")) - // assert.equal(balances.DPPBase, "8051275077289369844") - // assert.equal(balances.DPPQuote, decimalStr("1200")) - // assert.equal(balances.maintainerBase, "1952630183076783") - // assert.equal(balances.maintainerQuote, "0") + assert.equal(balances.traderBase, "1195262145875634983260") + assert.equal(balances.traderQuote, decimalStr("800")) + assert.equal(balances.DSPBase, "804737854124365016740") + assert.equal(balances.DSPQuote, decimalStr("1200")) + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // sell at R>1 and R not change state await ctx.transferBaseToDSP(trader, decimalStr("100")) await logGas(ctx.DSP.methods.sellBase(trader), ctx.sendParam(trader), "sellBase - sell at R>1 and R not change state") balances = await ctx.getBalances(trader) - console.log("Balance:", balances); - // assert.equal(balances.traderBase, "10946772292527553373") - // assert.equal(balances.traderQuote, "903421814651005338950") - // assert.equal(balances.DPPBase, "9051275077289369844") - // assert.equal(balances.DPPQuote, "1096474452335302579467") - // assert.equal(balances.maintainerBase, "1952630183076783") - // assert.equal(balances.maintainerQuote, "103733013692081583") + + assert.equal(balances.traderBase, "1095262145875634983260") + assert.equal(balances.traderQuote, "903734814802481693100") + assert.equal(balances.DSPBase, "904737854124365016740") + assert.equal(balances.DSPQuote, "1096265185197518306900") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // sell at R>1 and R change state @@ -92,19 +90,17 @@ describe("DSP Trader", () => { await logGas(ctx.DSP.methods.sellBase(trader), ctx.sendParam(trader), "sellBase - sell at R>1 and R change state") balances = await ctx.getBalances(trader) - console.log("Balance:", balances); - // assert.equal(balances.traderBase, "8946772292527553373") - // assert.equal(balances.traderQuote, "1102638273848343281094") - // assert.equal(balances.DPPBase, "11051275077289369844") - // assert.equal(balances.DPPQuote, "897058177231046545105") - // assert.equal(balances.maintainerBase, "1952630183076783") - // assert.equal(balances.maintainerQuote, "303548920610173801") + assert.equal(balances.traderBase, "895262145875634983260") + assert.equal(balances.traderQuote, "1103541932946094354686") + assert.equal(balances.DSPBase, "1104737854124365016740") + assert.equal(balances.DSPQuote, "896458067053905645314") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") var PMMStat = await ctx.DSP.methods.getPMMState().call() - console.log("PMMStat:", PMMStat) - // assert.equal(PMMStat.R, "2") - // assert.equal(PMMStat.B0, "10005950249348099200") + assert.equal(PMMStat.R, "2") + assert.equal(PMMStat.B0, "999999999999999996713") }); it("first sell and then buy", async () => { @@ -112,90 +108,84 @@ describe("DSP Trader", () => { await ctx.transferBaseToDSP(trader, decimalStr("1")) await logGas(ctx.DSP.methods.sellBase(trader), ctx.sendParam(trader), "sellBase - sell at R=1") var balances = await ctx.getBalances(trader) - console.log("balances:",balances) - // assert.equal(balances.traderBase, decimalStr("9")) - // assert.equal(balances.traderQuote, "1098617454226610630663") - // assert.equal(balances.DPPBase, decimalStr("11")) - // assert.equal(balances.DPPQuote, "901283631576572307521") - // assert.equal(balances.maintainerBase, "0") - // assert.equal(balances.maintainerQuote, "98914196817061816") + assert.equal(balances.traderBase, decimalStr("999")) + assert.equal(balances.traderQuote, "1000999899919944970392") + assert.equal(balances.DSPBase, decimalStr("1001")) + assert.equal(balances.DSPQuote, "999000100080055029608") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // buy at R>1 await ctx.transferBaseToDSP(trader, decimalStr("1")) await logGas(ctx.DSP.methods.sellBase(trader), ctx.sendParam(trader), "sellBase - buy at R>1") balances = await ctx.getBalances(trader) - console.log("balances:", balances) - // assert.equal(balances.traderBase, decimalStr("8")) - // assert.equal(balances.traderQuote, "1194677229252755337109") - // assert.equal(balances.DPPBase, decimalStr("12")) - // assert.equal(balances.DPPQuote, "805127507728936984519") - // assert.equal(balances.maintainerBase, "0") - // assert.equal(balances.maintainerQuote, "195263018307678372") + assert.equal(balances.traderBase, decimalStr("998")) + assert.equal(balances.traderQuote, "1001999599359119051790") + assert.equal(balances.DSPBase, decimalStr("1002")) + assert.equal(balances.DSPQuote, "998000400640880948210") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // sell at R>1 and R not change state await ctx.transferQuoteToDSP(trader, decimalStr("1")) await logGas(ctx.DSP.methods.sellQuote(trader), ctx.sendParam(trader), "sell at R>1 and R not change state") balances = await ctx.getBalances(trader) - console.log("balances:", balances) - // assert.equal(balances.traderBase, "9034218146510053391") - // assert.equal(balances.traderQuote, "1094677229252755337109") - // assert.equal(balances.DPPBase, "10964744523353025794") - // assert.equal(balances.DPPQuote, "905127507728936984519") - // assert.equal(balances.maintainerBase, "1037330136920815") - // assert.equal(balances.maintainerQuote, "195263018307678372") + assert.equal(balances.traderBase, "999000300621013276966") + assert.equal(balances.traderQuote, "1000999599359119051790") + assert.equal(balances.DSPBase, "1000999699378986723034") + assert.equal(balances.DSPQuote, "999000400640880948210") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") // sell at R>1 and R change state await ctx.transferQuoteToDSP(trader, decimalStr("2")) await logGas(ctx.DSP.methods.sellQuote(trader), ctx.sendParam(trader), "sell at R>1 and R change state") balances = await ctx.getBalances(trader) - console.log("balances:", balances) - // assert.equal(balances.traderBase, "11026382738483432812") - // assert.equal(balances.traderQuote, "894677229252755337109") - // assert.equal(balances.DPPBase, "8970581772310465451") - // assert.equal(balances.DPPQuote, "1105127507728936984519") - // assert.equal(balances.maintainerBase, "3035489206101737") - // assert.equal(balances.maintainerQuote, "195263018307678372") + assert.equal(balances.traderBase, "1001000300480585414741") + assert.equal(balances.traderQuote, "998999599359119051790") + assert.equal(balances.DSPBase, "998999699519414585259") + assert.equal(balances.DSPQuote, "1001000400640880948210") + assert.equal(balances.maintainerBase, "0") + assert.equal(balances.maintainerQuote, "0") var PMMStat = await ctx.DSP.methods.getPMMState().call() - console.log("PMMStat:", PMMStat) - - // assert.equal(PMMStat.R, "1") - // assert.equal(PMMStat.Q0, "1000595024934809920179") + assert.equal(PMMStat.R, "1") + assert.equal(PMMStat.Q0, "999999999999999995766") }); it("flash loan", async () => { // buy - await ctx.transferQuoteToDSP(trader, decimalStr("200")) + await ctx.transferQuoteToDSP(trader, decimalStr("100")) // buy failed - await truffleAssert.reverts(ctx.DSP.methods.flashLoan("1946763594380080790", "0", trader, "0x").send(ctx.sendParam(trader)), "FLASH_LOAN_FAILED") + await truffleAssert.reverts(ctx.DSP.methods.flashLoan("901085803182938100000", decimalStr("101"), trader, "0x").send(ctx.sendParam(trader)), "FLASH_LOAN_FAILED") // buy succeed - await ctx.DSP.methods.flashLoan("1946763594380080789", "0", trader, "0x").send(ctx.sendParam(trader)) + await ctx.DSP.methods.flashLoan("98914196817061816111", "0", trader, "0x").send(ctx.sendParam(trader)) // trader balances assert.equal( await ctx.BASE.methods.balanceOf(trader).call(), - "11946763594380080789" + "1098914196817061816111" ); // sell await ctx.transferBaseToDSP(trader, decimalStr("1")) // sell failed - await truffleAssert.reverts(ctx.DSP.methods.flashLoan("0", "103421810640399874606", trader, "0x").send(ctx.sendParam(trader)), "FLASH_LOAN_FAILED") + await truffleAssert.reverts(ctx.DSP.methods.flashLoan(decimalStr("2"), "1", trader, "0x").send(ctx.sendParam(trader)), "FLASH_LOAN_FAILED") // sell succeed - await ctx.DSP.methods.flashLoan("0", "103421810640399874605", trader, "0x").send(ctx.sendParam(trader)) + await ctx.DSP.methods.flashLoan("0", "999899919944970392", trader, "0x").send(ctx.sendParam(trader)) // trader balances assert.equal( await ctx.QUOTE.methods.balanceOf(trader).call(), - "903421810640399874605" + "900999899919944970392" ); }) }); diff --git a/test/utils/DSPContext.ts b/test/utils/DSPContext.ts index 4c9457c..25bda2e 100644 --- a/test/utils/DSPContext.ts +++ b/test/utils/DSPContext.ts @@ -22,8 +22,8 @@ BigNumber.config({ export interface DSPContextBalances { traderBase: string, traderQuote: string, - DPPBase: string, - DPPQuote: string, + DSPBase: string, + DSPQuote: string, maintainerBase: string, maintainerQuote: string } @@ -71,7 +71,7 @@ export class DSPContext { constructor() { } - async init(config: DVMContextInitConfig) { + async init(config: DSPContextInitConfig) { this.EVM = new EVM(); this.Web3 = getDefaultWeb3(); @@ -136,8 +136,8 @@ export class DSPContext { var balances: DSPContextBalances = { traderBase: await this.BASE.methods.balanceOf(trader).call(), traderQuote: await this.QUOTE.methods.balanceOf(trader).call(), - DPPBase: await this.BASE.methods.balanceOf(this.DSP.options.address).call(), - DPPQuote: await this.QUOTE.methods.balanceOf(this.DSP.options.address).call(), + DSPBase: await this.BASE.methods.balanceOf(this.DSP.options.address).call(), + DSPQuote: await this.QUOTE.methods.balanceOf(this.DSP.options.address).call(), maintainerBase: await this.BASE.methods.balanceOf(this.Maintainer).call(), maintainerQuote: await this.QUOTE.methods.balanceOf(this.Maintainer).call() };