public DispatcherTestBase(MockModuleFixture moduleFixture) { ModuleFixture = moduleFixture; const bool is32Bit = false; var dummyModule = moduleFixture.GetModule(); var dummyMethod = new MethodDefinition( "MockMethod", MethodAttributes.Static, MethodSignature.CreateStatic(dummyModule.CorLibTypeFactory.Void)); dummyMethod.CilMethodBody = new CilMethodBody(dummyMethod); var environment = new MockCilRuntimeEnvironment(dummyModule, is32Bit) { Architecture = new CilArchitecture(dummyMethod.CilMethodBody), }; var methodInvoker = new ReturnUnknownMethodInvoker(environment.ValueFactory); environment.MethodInvoker = new HookedMethodInvoker(methodInvoker); var container = new ServiceContainer(); container.AddService(typeof(ICilRuntimeEnvironment), environment); Dispatcher = new CilDispatcher(); ExecutionContext = new CilExecutionContext( container, new CilProgramState(environment.ValueFactory), default); }
public void GetValueOfStaticObjectFieldOnFreshEnvironmentShouldContainIntegerValue() { var field = (FieldDefinition)_moduleFixture.MockModule.LookupMember(typeof(SimpleClass) .GetField(nameof(SimpleClass.StaticObjectField)) .MetadataToken); var environment = new MockCilRuntimeEnvironment(_moduleFixture.MockModule, false); var staticField = environment.StaticFieldFactory.Get(field); Assert.IsAssignableFrom <ObjectReference>(staticField.Value); }