public void OptimizerRuns(Legacy.SolcVersion solcVersion) { var libPath = Legacy.LibPath.GetLibPath(solcVersion); var libProvider = new SolcLibDefaultProvider(libPath); var solcLib = new SolcLib(libProvider); OutputDescription CompileWithRuns(Optimizer optimizer) { var exampleContract = "TestContracts/ExampleContract.sol"; var sourceContent = new Dictionary <string, string>(); var output = solcLib.Compile(exampleContract, OutputType.EvmBytecodeObject, optimizer: optimizer, soliditySourceFileContent: sourceContent); return(output); } var runs1 = CompileWithRuns(new Optimizer { Enabled = true, Runs = 1 }); var sizeRuns1 = runs1.ContractsFlattened[0].Contract.Evm.Bytecode.Object.Length; var runs200 = CompileWithRuns(new Optimizer { Enabled = true, Runs = 200 }); var sizeRuns200 = runs200.ContractsFlattened[0].Contract.Evm.Bytecode.Object.Length; var runsDisabled = CompileWithRuns(new Optimizer { Enabled = false }); var sizeRunsDisabled = runsDisabled.ContractsFlattened[0].Contract.Evm.Bytecode.Object.Length; Assert.IsTrue(sizeRunsDisabled > sizeRuns200); Assert.IsTrue(sizeRuns1 < sizeRuns200); }
public void ReportedVersion(Legacy.SolcVersion solcVersion) { var libPath = Legacy.LibPath.GetLibPath(solcVersion); var libProvider = new SolcLibDefaultProvider(libPath); var solc = new SolcLib(libProvider); var ver = solc.Version; var verString = solcVersion.ToString().Replace('_', '.').TrimStart('v'); Assert.AreEqual(verString, ver.ToString()); }
public void Compile(Legacy.SolcVersion solcVersion) { const string CONTRACT_SRC_DIR = "LegacyContracts"; var libPath = Legacy.LibPath.GetLibPath(solcVersion); var libProvider = new SolcLibDefaultProvider(libPath); var solcLib = new SolcLib(libProvider, CONTRACT_SRC_DIR); var srcs = new[] { "token/ERC20/StandardToken.sol" }; solcLib.Compile(srcs); }
public void IsReleaseVersion(Legacy.SolcVersion solcVersion) { var libPath = Legacy.LibPath.GetLibPath(solcVersion); var libProvider = new SolcLibDefaultProvider(libPath); var solcLib = new SolcLib(libProvider); var version = solcLib.VersionDescription; // Prerelease/develop compiled libs have a version that looks like: 0.4.24-develop.2018.7.5+commit.346b21c8 // Release compiled libs have a version that looks like: 0.4.24+commit.8025b766 if (version.Contains("develop") || version.Contains("night")) { Assert.Fail("Lib version is not develop / nightly: " + version); } }