public void ExecutionObserverInjectorPatchTest2()
        {
            var module = GetContractModule(typeof(BadContract));

            var executionObserverInjector = new ExecutionObserverInjector();

            executionObserverInjector.Patch(module);
        }
        public void ExecutionObserverInjectorPatchTest()
        {
            var module = GetContractModule(typeof(TestContract));

            var typeDefinition = ExecutionObserverInjector.ConstructCounterProxy(module, "AElf.Test");

            var executionObserverInjector = new ExecutionObserverInjector();

            executionObserverInjector.Patch(module);
            var typePatched = module.Types.Single(t => t.Name == nameof(ExecutionObserverProxy));

            typePatched.HasSameFields(typeDefinition).ShouldBeTrue();

            foreach (var method in typePatched.Methods)
            {
                method.HasSameBody(typeDefinition.Methods.Single(m => m.Name == method.Name)).ShouldBeTrue();
            }
        }