/// <summary> /// Assert result /// </summary> /// <param name="engine">Engine</param> /// <param name="result">Result</param> /// <param name="message">Message</param> private void AssertResult(ExecutionEngine engine, VMUTExecutionEngineState result, string message) { AssertAreEqual(engine.State.ToString().ToLowerInvariant(), result.State.ToString().ToLowerInvariant(), message + "State is different"); AssertResult(engine.InvocationStack, result.InvocationStack, message + " [Invocation stack]"); AssertResult(engine.ResultStack, result.ResultStack, message + " [Result stack] "); }
/// <summary> /// Assert result /// </summary> /// <param name="engine">Engine</param> /// <param name="result">Result</param> /// <param name="message">Message</param> private void AssertResult(VMUTExecutionEngineState result, ExecutionEngine engine, string message) { AssertAreEqual(result.State.ToString().ToLowerInvariant(), engine.State.ToString().ToLowerInvariant(), message + "State is different"); if (engine.State == VMState.FAULT) { return; } AssertResult(result.InvocationStack, engine.InvocationStack, message + " [Invocation stack]"); AssertResult(result.ResultStack, engine.ResultStack, message + " [Result stack] "); }
/// <summary> /// Assert result /// </summary> /// <param name="engine">Engine</param> /// <param name="result">Result</param> /// <param name="logBag">Log bag</param> /// <param name="notBag">Not bag</param> /// <param name="message">Message</param> private void AssertResult(ExecutionEngineBase engine, VMUTExecutionEngineState result, List <string> logBag, List <JToken> notBag, string message) { AssertAreEqual(engine.State.ToString(), result.State.ToString(), message + "State is different"); AssertAreEqual(engine.ConsumedGas, result.ConsumedGas, message + "Consumed gas is different"); AssertAreEqual(logBag.ToArray(), result.Logs ?? new string[0], message + "Logs are different"); AssertAreEqual(notBag.ToArray(), result.Notifications == null ? new JToken[0] : result.Notifications.Select(u => PrepareJsonItem(u)).ToArray(), message + "Notifies are different"); AssertResult(engine.InvocationStack, result.InvocationStack, message); AssertResult(engine.ResultStack, result.ResultStack, message); }