Пример #1
0
        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);
        }
Пример #2
0
        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());
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
            }
        }