Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions contracts/proxy4tests/DoubleCurveToken.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import "../DoubleCurveToken.sol";

contract ProxyDoubleCurveToken is DoubleCurveToken {

function testsolveForY(uint256 _x) public view returns (uint256 ){
return solveForY(_x);
}

function testcurveIntegral(uint256 _toX) public view returns (uint256 ){
return curveIntegral(_toX);
}


}
52 changes: 22 additions & 30 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

72 changes: 72 additions & 0 deletions test/ConvergentBetaTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
const truffleAssert = require('truffle-assertions');
const Account = artifacts.require('Account');
const ConvergentBeta = artifacts.require('ConvergentBeta');
const DoubleCurveToken = artifacts.require('DoubleCurveToken');
const GasPriceOracle = artifacts.require('GasPriceOracle');
const MockERC20 = artifacts.require('MockERC20');
const SafeMath = artifacts.require(
'openzeppelin-eth/contracts/math/SafeMath.sol',
);
const Ownable = artifacts.require(
'openzeppelin-eth/contracts/ownership/Ownable.sol',
);
const ERC20 = artifacts.require(
'openzeppelin-eth/contracts/token/ERC20/ERC20.sol',
);
const ERC20Detailed = artifacts.require(
'openzeppelin-eth/contracts/token/ERC20/ERC20Detailed.sol',
);
const AddressUtils = artifacts.require(
'openzeppelin-solidity/contracts/AddressUtils.sol',
);
const Initializable = artifacts.require('zos-lib/contracts/Initializable.sol');
const AdminUpgradeabilityProxy = artifacts.require(
'zos-lib/contracts/upgradeability/AdminUpgradeabilityProxy.sol',
);
const UpgradeabilityProxy = artifacts.require(
'zos-lib/contracts/upgradeability/UpgradeabilityProxy.sol',
);

contract('ConvergentBeta', (accounts) => {
let trace = false;
let contractAddressUtils = null;
let contractSafeMath = null;
let contractOwnable = null;
let contractInitializable = null;
let contractERC20Detailed = null;
let contractERC20 = null;
let contractAdminUpgradeabilityProxy = null;
let contractUpgradeabilityProxy = null;
let contractConvergentBeta = null;
let contractGasPriceOracle = null;
let contractDoubleCurveToken = null;
let contractAccount = null;
let contractMockERC20 = null;
beforeEach(async () => {
contractAddressUtils = await AddressUtils.new({from: accounts[0]});
contractSafeMath = await SafeMath.new({from: accounts[0]});
contractOwnable = await Ownable.new({from: accounts[0]});
contractInitializable = await Initializable.new({from: accounts[0]});
ERC20.link('SafeMath', contractSafeMath.address);
contractERC20 = await ERC20.new({from: accounts[0]});
contractConvergentBeta = await ConvergentBeta.new({from: accounts[0]});
contractGasPriceOracle = await GasPriceOracle.new({from: accounts[0]});
DoubleCurveToken.link('SafeMath', contractSafeMath.address);
contractDoubleCurveToken = await DoubleCurveToken.new({from: accounts[0]});
contractAccount = await Account.new({from: accounts[0]});
contractMockERC20 = await MockERC20.new(96, {from: accounts[7]});
});

it('Should fail setBaseAccount(address) when NOT comply with: _newBaseAccount != 0x0000000000000000000000000000000000000000', async () => {
await contractConvergentBeta.methods[
'initialize(address,address)'
](accounts[8], accounts[0], {from: accounts[0]});
let result = await truffleAssert.fails(
contractConvergentBeta.setBaseAccount(
'0x0000000000000000000000000000000000000000',
{from: accounts[0]},
),
'revert',
);
});
});
88 changes: 88 additions & 0 deletions test/DoubleCurveTokenProxyTest.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
const truffleAssert = require('truffle-assertions');
const Account = artifacts.require('Account');
const ConvergentBeta = artifacts.require('ConvergentBeta');
const DoubleCurveToken = artifacts.require('DoubleCurveToken');
const GasPriceOracle = artifacts.require('GasPriceOracle');
const MockERC20 = artifacts.require('MockERC20');
const SafeMath = artifacts.require(
'openzeppelin-eth/contracts/math/SafeMath.sol',
);
const Ownable = artifacts.require(
'openzeppelin-eth/contracts/ownership/Ownable.sol',
);
const ERC20 = artifacts.require(
'openzeppelin-eth/contracts/token/ERC20/ERC20.sol',
);
const ERC20Detailed = artifacts.require(
'openzeppelin-eth/contracts/token/ERC20/ERC20Detailed.sol',
);
const AddressUtils = artifacts.require(
'openzeppelin-solidity/contracts/AddressUtils.sol',
);
const Initializable = artifacts.require('zos-lib/contracts/Initializable.sol');
const AdminUpgradeabilityProxy = artifacts.require(
'zos-lib/contracts/upgradeability/AdminUpgradeabilityProxy.sol',
);
const UpgradeabilityProxy = artifacts.require(
'zos-lib/contracts/upgradeability/UpgradeabilityProxy.sol',
);
const ProxyDoubleCurveToken = artifacts.require('ProxyDoubleCurveToken');

contract('contractProxyDoubleCurveToken', (accounts) => {
let contractProxyDoubleCurveToken = null;
let trace = false;
let contractAddressUtils = null;
let contractSafeMath = null;
let contractOwnable = null;
let contractInitializable = null;
let contractERC20Detailed = null;
let contractERC20 = null;
let contractAdminUpgradeabilityProxy = null;
let contractUpgradeabilityProxy = null;
let contractConvergentBeta = null;
let contractGasPriceOracle = null;
let contractDoubleCurveToken = null;
let contractAccount = null;
let contractMockERC20 = null;
beforeEach(async () => {
contractAddressUtils = await AddressUtils.new({from: accounts[0]});
contractSafeMath = await SafeMath.new({from: accounts[0]});
contractOwnable = await Ownable.new({from: accounts[0]});
contractInitializable = await Initializable.new({from: accounts[0]});
ERC20.link('SafeMath', contractSafeMath.address);
contractERC20 = await ERC20.new({from: accounts[0]});
contractConvergentBeta = await ConvergentBeta.new({from: accounts[0]});
contractGasPriceOracle = await GasPriceOracle.new({from: accounts[0]});
DoubleCurveToken.link('SafeMath', contractSafeMath.address);
contractDoubleCurveToken = await DoubleCurveToken.new({from: accounts[0]});
contractAccount = await Account.new({from: accounts[0]});
contractMockERC20 = await MockERC20.new(96, {from: accounts[7]});
ProxyDoubleCurveToken.link('SafeMath', contractSafeMath.address);
contractProxyDoubleCurveToken = await ProxyDoubleCurveToken.new({
from: accounts[0],
});
});

it('Should fail testsolveForY(uint256) when NOT comply with: slopeD > 0', async () => {
await contractProxyDoubleCurveToken.methods[
'initialize(address,address,uint256,uint256,uint256,uint256,uint256,uint256,string,string,address)'
](
contractDoubleCurveToken.address,
accounts[0],
18,
0,
11,
3,
10001,
17,
'RevertWithReason',
'bouncer',
contractGasPriceOracle.address,
{from: accounts[0]},
);
let result = await truffleAssert.fails(
contractProxyDoubleCurveToken.testsolveForY(1337, {from: accounts[0]}),
'revert',
);
});
});
Loading