Base.t.sol
1 pragma solidity >=0.6.0; 2 3 import "truffle/Assert.sol"; 4 //import "truffle/DeployedAddresses.sol"; 5 import "../../../contracts/deployment/Deployer.sol"; 6 import "../../../contracts/finance/credit/CreditProvider.sol"; 7 import "../../../contracts/finance/OptionsExchange.sol"; 8 import "../../../contracts/finance/collateral/CollateralManager.sol"; 9 import "../../../contracts/finance/credit/CreditToken.sol"; 10 import "../../../contracts/finance/UnderlyingVault.sol"; 11 import "../../../contracts/finance/Incentivized.sol"; 12 import "../../../contracts/finance/OptionTokenFactory.sol"; 13 import "../../../contracts/finance/PendingExposureRouter.sol"; 14 15 import "../../../contracts/feeds/DEXFeedFactory.sol"; 16 import "../../../contracts/pools/LinearLiquidityPoolFactory.sol"; 17 import "../../../contracts/pools/LinearAnySlopeInterpolator.sol"; 18 19 import "../../../contracts/finance/credit/UnderlyingCreditProviderFactory.sol"; 20 import "../../../contracts/finance/credit/UnderlyingCreditTokenFactory.sol"; 21 import "../../../contracts/governance/ProtocolSettings.sol"; 22 import "../../../contracts/governance/ProposalsManager.sol"; 23 import "../../../contracts/governance/GovToken.sol"; 24 import "../../common/actors/CreditHolder.t.sol"; 25 import "../../common/mock/ERC20Mock.t.sol"; 26 import "../../common/mock/EthFeedMock.t.sol"; 27 import "../../common/mock/TimeProviderMock.t.sol"; 28 import "../../common/mock/UniswapV2RouterMock.t.sol"; 29 30 contract Base { 31 32 TimeProviderMock time; 33 ProtocolSettings settings; 34 CreditProvider creditProvider; 35 CreditToken creditToken; 36 ERC20Mock erc20; 37 38 CreditHolder issuer; 39 CreditHolder alpha; 40 CreditHolder beta; 41 42 uint cBase = 1e8; // comparison base 43 uint timeBase = 1 hours; 44 45 46 /* 47 48 await d.setContractAddress("ProtocolSettings", settings.address); 49 await d.setContractAddress("TimeProvider", timeProvider.address); 50 await d.setContractAddress("CreditProvider", creditProvider.address); 51 await d.addAlias("CreditIssuer", "CreditProvider"); 52 await d.setContractAddress("CreditToken", ct.address); 53 54 await d.setContractAddress("YieldTracker", yt.address); 55 await d.setContractAddress("MetavaultHedgingManagerFactory", mvHedgingManagerFactory.address); 56 await d.setContractAddress("D8xHedgingManagerFactory", d8xHedgingManagerFactory.address); 57 await d.setContractAddress("ProtocolReader", pr.address); 58 await d.setContractAddress("PendingExposureRouter", per.address); 59 60 */ 61 62 function setUp() public { 63 //function beforeEachDeploy() public { 64 Deployer deployer = new Deployer(address(this)); 65 66 //deployer.reset(); 67 //if (!deployer.hasKey("CreditIssuer")) { 68 deployer.setContractAddress("CreditIssuer", address(new CreditHolder())); 69 //} 70 71 deployer.setContractAddress("ProtocolSettings", address(new ProtocolSettings(true))); 72 deployer.setContractAddress("TimeProvider", address(new TimeProviderMock())); 73 deployer.setContractAddress("CreditProvider", address(new CreditProvider())); 74 deployer.setContractAddress("CreditToken", address(new CreditToken())); 75 76 deployer.setContractAddress("ProposalsManager", address(new ProposalsManager())); 77 deployer.setContractAddress("GovToken", address(new GovToken(address(0)))); 78 deployer.setContractAddress("CollateralManager", address(new CollateralManager())); 79 deployer.setContractAddress("OptionsExchange", address(new OptionsExchange())); 80 deployer.setContractAddress("OptionTokenFactory", address(new OptionTokenFactory())); 81 deployer.setContractAddress("UnderlyingVault", address(new UnderlyingVault())); 82 deployer.setContractAddress("Incentivized", address(new Incentivized())); 83 deployer.setContractAddress("UnderlyingCreditProviderFactory", address(new UnderlyingCreditProviderFactory())); 84 deployer.setContractAddress("UnderlyingCreditTokenFactory", address(new UnderlyingCreditTokenFactory())); 85 deployer.setContractAddress("LinearLiquidityPoolFactory", address(new LinearLiquidityPoolFactory())); 86 deployer.setContractAddress("DEXFeedFactory", address(new DEXFeedFactory())); 87 deployer.setContractAddress("Interpolator", address(new LinearAnySlopeInterpolator())); 88 deployer.setContractAddress("PendingExposureRouter", address(new PendingExposureRouter())); 89 90 91 92 deployer.setContractAddress("StablecoinA", address(new ERC20Mock(18)), false); 93 94 95 deployer.deploy(address(this)); 96 97 time = TimeProviderMock(deployer.getContractAddress("TimeProvider")); 98 settings = ProtocolSettings(deployer.getContractAddress("ProtocolSettings")); 99 creditProvider = CreditProvider(deployer.getContractAddress("CreditProvider")); 100 creditToken = CreditToken(deployer.getContractAddress("CreditToken")); 101 erc20 = ERC20Mock(deployer.getContractAddress("StablecoinA")); 102 103 erc20.reset(); 104 105 settings.setAllowedToken(address(erc20), 1, 1); 106 107 issuer = CreditHolder(deployer.getContractAddress("CreditIssuer")); 108 alpha = new CreditHolder(); 109 beta = new CreditHolder(); 110 111 issuer.setCreditToken(address(creditToken)); 112 alpha.setCreditToken(address(creditToken)); 113 beta.setCreditToken(address(creditToken)); 114 115 time.setTimeOffset(0); 116 } 117 118 function addErc20Stock(uint value) internal { 119 120 erc20.issue(address(this), value); 121 erc20.approve(address(creditProvider), value); 122 creditProvider.depositTokens(address(this), address(erc20), value); 123 } 124 }