From faaeb6a95c269be2509d9f264fbbc46436d35539 Mon Sep 17 00:00:00 2001 From: mingda Date: Wed, 25 Nov 2020 22:21:43 +0800 Subject: [PATCH] finish dvm test --- test/DVM/AMMLikeCase.test.ts | 121 ++++++++++++++--------------------- test/DVM/funding.test.ts | 22 ++++++- test/DVM/owner.test.ts | 63 ++++++++++++++++++ test/DVM/trader.test.ts | 5 ++ 4 files changed, 137 insertions(+), 74 deletions(-) create mode 100644 test/DVM/owner.test.ts diff --git a/test/DVM/AMMLikeCase.test.ts b/test/DVM/AMMLikeCase.test.ts index 1c6a668..54c8087 100644 --- a/test/DVM/AMMLikeCase.test.ts +++ b/test/DVM/AMMLikeCase.test.ts @@ -7,8 +7,7 @@ // import * as assert from 'assert'; -import { decimalStr, gweiStr } from '../utils/Converter'; -import { logGas } from '../utils/Log'; +import { decimalStr } from '../utils/Converter'; import { DVMContext, getDVMContext } from '../utils/DVMContext'; import { assert } from 'chai'; @@ -59,7 +58,7 @@ describe("AMMLikeCase", () => { console.log(await ctx.DVM.methods.getBase0().call()) }) - it("buy & sell", async () => { + it("buy", async () => { console.log("BASE0 before buy", await ctx.DVM.methods.getBase0().call()) @@ -68,94 +67,70 @@ describe("AMMLikeCase", () => { await ctx.DVM.methods.sellQuote(trader).send(ctx.sendParam(trader)) console.log("BASE0 after buy", await ctx.DVM.methods.getBase0().call()) // trader balances - console.log( + assert.equal( await ctx.BASE.methods.balanceOf(trader).call(), - "11946763594380080787" + "11661666666528194443" ); - console.log( + assert.equal( await ctx.QUOTE.methods.balanceOf(trader).call(), decimalStr("800") ); // vault balances - console.log( + assert.equal( await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), - "8051283784161162863" + "8336666666805277779" ); - console.log( + assert.equal( await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), - decimalStr("200") + decimalStr("1200") ); // maintainer balances - console.log( + assert.equal( await ctx.BASE.methods.balanceOf(ctx.Maintainer).call(), - "1952621458756350" + "1666666666527778" ); - console.log( + assert.equal( await ctx.QUOTE.methods.balanceOf(ctx.Maintainer).call(), decimalStr("0") ); + }); - // // sell - // await logGas(ctx.DVMProxy.methods.sellBaseOnDVM(ctx.DVM.options.address, trader, decimalStr("1"), decimalStr("100")), ctx.sendParam(trader), "sell base token") - // console.log("BASE0 after sell", await ctx.DVM.methods.getBase0().call()) - // // trader balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(trader).call(), - // "10946763594380080787" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(trader).call(), - // "903421810640399874603" - // ); - // // vault balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), - // "9051283784161162863" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), - // "96474456349930717298" - // ); - // // maintainer balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(ctx.Maintainer).call(), - // "1952621458756350" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(ctx.Maintainer).call(), - // "103733009669408099" - // ); + it("sell", async () => { - // // buy when quoet is not 0 - // await logGas(ctx.DVMProxy.methods.sellQuoteOnDVM(ctx.DVM.options.address, trader, decimalStr("200"), decimalStr("1")), ctx.sendParam(trader), "buy base token") - // assert.equal("BASE0 after second buy", await ctx.DVM.methods.getBase0().call()) - // // trader balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(trader).call(), - // "12837528824326616018" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(trader).call(), - // "703421810640399874603" - // ); - // // vault balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), - // "7158622099620899913" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), - // "296474456349930717298" - // ); - // // maintainer balances - // assert.equal( - // await ctx.BASE.methods.balanceOf(ctx.Maintainer).call(), - // "3849076052484069" - // ); - // assert.equal( - // await ctx.QUOTE.methods.balanceOf(ctx.Maintainer).call(), - // "103733009669408099" - // ); + console.log("BASE0 before sell", await ctx.DVM.methods.getBase0().call()) + + // sell + await ctx.transferBaseToDVM(trader, decimalStr("1")) + await ctx.DVM.methods.sellBase(trader).send(ctx.sendParam(trader)) + console.log("BASE0 after sell", await ctx.DVM.methods.getBase0().call()) + + // trader balances + assert.equal( + await ctx.BASE.methods.balanceOf(trader).call(), + decimalStr("9") + ); + assert.equal( + await ctx.QUOTE.methods.balanceOf(trader).call(), + "1090636363645427272727" + ); + // vault balances + assert.equal( + await ctx.BASE.methods.balanceOf(ctx.DVM.options.address).call(), + decimalStr("11") + ); + assert.equal( + await ctx.QUOTE.methods.balanceOf(ctx.DVM.options.address).call(), + "909272727263654545454" + ); + // maintainer balances + assert.equal( + await ctx.BASE.methods.balanceOf(ctx.Maintainer).call(), + "0" + ); + assert.equal( + await ctx.QUOTE.methods.balanceOf(ctx.Maintainer).call(), + "90909090918181819" + ); }); }); }); diff --git a/test/DVM/funding.test.ts b/test/DVM/funding.test.ts index 18feeda..03f3770 100644 --- a/test/DVM/funding.test.ts +++ b/test/DVM/funding.test.ts @@ -143,7 +143,27 @@ describe("Funding", () => { }); describe("sell shares", () => { - it("sell shares", async () => { + 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.transferBaseToDVM(trader, decimalStr("1")) + await ctx.transferQuoteToDVM(trader, decimalStr("10")) + await ctx.DVM.methods.buyShares(trader).send(ctx.sendParam(trader)) + + var vaultShares = new BigNumber(await ctx.DVM.methods.balanceOf(lp).call()) + var bob = ctx.SpareAccounts[5] + await ctx.DVM.methods.sellShares(vaultShares.div(2).toFixed(0), bob, "0x").send(ctx.sendParam(lp)) + assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("5")) + assert.equal(await ctx.QUOTE.methods.balanceOf(bob).call(), decimalStr("50")) + + await ctx.DVM.methods.sellShares(vaultShares.div(2).toFixed(0), bob, "0x").send(ctx.sendParam(lp)) + assert.equal(await ctx.BASE.methods.balanceOf(bob).call(), decimalStr("10")) + 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)) diff --git a/test/DVM/owner.test.ts b/test/DVM/owner.test.ts new file mode 100644 index 0000000..ede739e --- /dev/null +++ b/test/DVM/owner.test.ts @@ -0,0 +1,63 @@ +/* + + Copyright 2020 DODO ZOO. + SPDX-License-Identifier: Apache-2.0 + +*/ + +// import * as assert from 'assert'; + +import { DVMContext, getDVMContext } from '../utils/DVMContext'; +import { assert } from 'chai'; +const truffleAssert = require('truffle-assertions'); + +async function init(ctx: DVMContext): Promise { } + +describe("Admin Set", () => { + let snapshotId: string; + let ctx: DVMContext; + + before(async () => { + ctx = await getDVMContext(); + await init(ctx); + }); + + beforeEach(async () => { + snapshotId = await ctx.EVM.snapshot(); + }); + + afterEach(async () => { + await ctx.EVM.reset(snapshotId); + }); + + describe("setting", () => { + + it("set addresses", async () => { + + var tempAddress = ctx.SpareAccounts[0] + + await ctx.DVM.methods.setLpFeeRateModel(tempAddress).send(ctx.sendParam(ctx.Deployer)) + await ctx.DVM.methods.setMtFeeRateModel(tempAddress).send(ctx.sendParam(ctx.Deployer)) + await ctx.DVM.methods.setTradePermissionManager(tempAddress).send(ctx.sendParam(ctx.Deployer)) + await ctx.DVM.methods.setMaintainer(tempAddress).send(ctx.sendParam(ctx.Deployer)) + await ctx.DVM.methods.setGasPriceSource(tempAddress).send(ctx.sendParam(ctx.Deployer)) + + assert.equal(await ctx.DVM.methods._LP_FEE_RATE_MODEL_().call(), tempAddress) + assert.equal(await ctx.DVM.methods._MT_FEE_RATE_MODEL_().call(), tempAddress) + assert.equal(await ctx.DVM.methods._TRADE_PERMISSION_().call(), tempAddress) + assert.equal(await ctx.DVM.methods._MAINTAINER_().call(), tempAddress) + assert.equal(await ctx.DVM.methods._GAS_PRICE_LIMIT_().call(), tempAddress) + + }); + + it("set buy sell", async () => { + await ctx.DVM.methods.setBuy(false).send(ctx.sendParam(ctx.Deployer)) + await ctx.DVM.methods.setSell(false).send(ctx.sendParam(ctx.Deployer)) + + await truffleAssert.reverts(ctx.DVM.methods.sellQuote(ctx.Deployer).send(ctx.sendParam(ctx.Deployer)), "TRADER_BUY_NOT_ALLOWED") + + await truffleAssert.reverts(ctx.DVM.methods.sellBase(ctx.Deployer).send(ctx.sendParam(ctx.Deployer)), "TRADER_SELL_NOT_ALLOWED") + }) + + }); +}); \ No newline at end of file diff --git a/test/DVM/trader.test.ts b/test/DVM/trader.test.ts index 9b37c88..5381bc1 100644 --- a/test/DVM/trader.test.ts +++ b/test/DVM/trader.test.ts @@ -179,6 +179,11 @@ describe("Trader", () => { await truffleAssert.reverts( ctx.DVM.methods.sellQuote(trader).send({ from: trader, gas: 300000, gasPrice: gweiStr("200") }), "GAS_PRICE_EXCEED" ) + + await ctx.transferBaseToDVM(trader, decimalStr("1")) + await truffleAssert.reverts( + ctx.DVM.methods.sellBase(trader).send(ctx.sendParam(trader)), "TARGET_IS_ZERO" + ) }) }); }); \ No newline at end of file