Exemple #1
0
        public async Task InConstructorTest()
        {
            ContractExecutionException exec = null;
            UInt256 testValue = 112233445566778899;

            try
            {
                await VarAnalysisContract.New(testValue, RpcClient);
            }
            catch (ContractExecutionException ex)
            {
                exec = ex;
            }

            // Obtain an execution trace and parse locals from the last point in it (where the exception occurred).
            var executionTrace = await RpcClient.GetExecutionTrace();

            ExecutionTraceAnalysis traceAnalysis = new ExecutionTraceAnalysis(executionTrace);

            // Obtain our local/state variables.
            var localVariables = traceAnalysis.GetLocalVariables();
            var stateVariables = traceAnalysis.GetStateVariables();

            // TODO: Verify variables.
            Assert.Inconclusive();
        }
        public async Task InConstructorTest()
        {
            ContractExecutionException exec = null;
            UInt256 testValue = 112233445566778899;

            try
            {
                await VarAnalysisContract.New(testValue, RpcClient);
            }
            catch (ContractExecutionException ex)
            {
                exec = ex;
            }

            // TODO: Verify variables.
            Assert.Inconclusive();
        }
Exemple #3
0
        public async Task DeploymentException()
        {
            ContractExecutionException exec = null;

            try
            {
                await ExceptionContract.New(_throwOnConstructor : true, RpcClient);
            }
            catch (ContractExecutionException ex)
            {
                exec = ex;
            }

            var expected = @"
INVALID instruction hit!
-> at 'assert(!_throwOnConstructor);' in 'ExceptionContract' constructor in file 'ExceptionContract.sol' : line 8";

            Assert.AreEqual(
                StringUtil.NormalizeNewLines(expected).Trim(),
                StringUtil.NormalizeNewLines(exec.Message).Trim());
        }
Exemple #4
0
        public async Task CallValidateStackTrace()
        {
            ContractExecutionException exec = null;

            try
            {
                await _contract.entryFunction().Call();
            }
            catch (ContractExecutionException ex)
            {
                exec = ex;
            }

            var expected = @"INVALID instruction hit!
-> at 'assert(thingDidWork);' in method 'doAssert' in file 'ExceptionContract.sol' : line 27
-> at 'doAssert();' in method 'lastFunc' in file 'ExceptionContract.sol' : line 47
-> at 'lastFunc();' in method 'anotherFunc' in file 'ExceptionContract.sol' : line 43
-> at 'anotherFunc();' in method 'nextFunction' in file 'ExceptionContract.sol' : line 39
-> at 'nextFunction();' in method 'entryFunction' in file 'ExceptionContract.sol' : line 35";

            Assert.AreEqual(
                StringUtil.NormalizeNewLines(expected).Trim(),
                StringUtil.NormalizeNewLines(exec.Message).Trim());
        }