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(); }
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()); }
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()); }