public virtual void SetUp() { _mockRepository = new MockRepository(); _mutableType = MutableTypeObjectMother.Create(); _nestedTypeCodeGeneratorFactoryMock = _mockRepository.StrictMock <IMutableNestedTypeCodeGeneratorFactory>(); _codeGeneratorMock = _mockRepository.StrictMock <IReflectionEmitCodeGenerator>(); _emittableOperandProviderMock = _mockRepository.StrictMock <IEmittableOperandProvider> (); _memberEmitterMock = _mockRepository.StrictMock <IMemberEmitter>(); _initializationBuilderMock = _mockRepository.StrictMock <IInitializationBuilder>(); _proxySerializationEnablerMock = _mockRepository.StrictMock <IProxySerializationEnabler>(); _generator = new MutableTypeCodeGenerator( _mutableType, _nestedTypeCodeGeneratorFactoryMock, _codeGeneratorMock, _emittableOperandProviderMock, _memberEmitterMock, _initializationBuilderMock, _proxySerializationEnablerMock); _typeBuilderMock = _mockRepository.StrictMock <ITypeBuilder>(); _debugInfoGeneratorMock = _mockRepository.StrictMock <DebugInfoGenerator>(); _fakeInitializationField = ReflectionObjectMother.GetSomeField(); _fakeInitializationMethod = ReflectionObjectMother.GetSomeMethod(); _fakeInitializationMembers = Tuple.Create(_fakeInitializationField, _fakeInitializationMethod); }
public void DefineTypeFacet_NoParent_NoNestedTypes_NoTypeInitializer_NoInitializations() { var mutableType = MutableTypeObjectMother.CreateInterface(); Assert.That(mutableType.BaseType, Is.Null); Assert.That(mutableType.MutableTypeInitializer, Is.Null); Assert.That(mutableType.Initialization.Expressions, Is.Empty); var generator = new MutableTypeCodeGenerator( mutableType, _nestedTypeCodeGeneratorFactoryMock, _codeGeneratorMock, _emittableOperandProviderMock, _memberEmitterMock, _initializationBuilderMock, _proxySerializationEnablerMock); PopulateContext(generator, 2); // No call to SetParent because of null BaseType. // No call to AddConstructor because of null TypeInitializer. _initializationBuilderMock.Expect(mock => mock.CreateInitializationMembers(mutableType)).Return(null); _proxySerializationEnablerMock.Expect(mock => mock.MakeSerializable(mutableType, null)); _mockRepository.ReplayAll(); generator.DefineTypeFacets(); _mockRepository.VerifyAll(); }
private CodeGenerationContext PopulateContext(MutableTypeCodeGenerator generator, int currentState) { var context = new CodeGenerationContext(_mutableType, _typeBuilderMock, _debugInfoGeneratorMock, _emittableOperandProviderMock); PrivateInvoke.SetNonPublicField(generator, "_context", context); PrivateInvoke.SetNonPublicField(generator, "_state", currentState); return(context); }
public void ThrowsForInvalidOperation() { var codeGeneratorStub = new Mock <IReflectionEmitCodeGenerator>(); var emittableOperandProviderStub = new Mock <IEmittableOperandProvider>(); var memberEmitterStub = new Mock <IMemberEmitter>(); var initializationBuilderStub = new Mock <IInitializationBuilder>(); var proxySerializationEnablerStub = new Mock <IProxySerializationEnabler>(); _typeBuilderMock.Setup(stub => stub.RegisterWith(emittableOperandProviderStub.Object, _mutableType)); _typeBuilderMock.Setup(stub => stub.SetParent(_mutableType.BaseType)); _typeBuilderMock.Setup(stub => stub.CreateType()).Returns((Type)null); codeGeneratorStub .Setup(stub => stub.DefineType(It.IsAny <string>(), It.IsAny <TypeAttributes>(), It.IsAny <IEmittableOperandProvider>())) .Returns(_typeBuilderMock.Object); codeGeneratorStub.SetupGet(stub => stub.DebugInfoGenerator).Returns(_debugInfoGeneratorMock.Object); var generator = new MutableTypeCodeGenerator( _mutableType, _nestedTypeCodeGeneratorFactoryMock.Object, codeGeneratorStub.Object, emittableOperandProviderStub.Object, memberEmitterStub.Object, initializationBuilderStub.Object, proxySerializationEnablerStub.Object); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.DeclareType(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.CreateNestedTypeGenerators().ForceEnumeration(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.DefineTypeFacets(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); Assert.That(() => generator.CreateType(), Throws.Nothing); }
public void ThrowsForInvalidOperation() { var codeGeneratorStub = MockRepository.GenerateStub <IReflectionEmitCodeGenerator>(); var emittableOperandProviderStub = MockRepository.GenerateStub <IEmittableOperandProvider>(); var memberEmitterStub = MockRepository.GenerateStub <IMemberEmitter>(); var initializationBuilderStub = MockRepository.GenerateStub <IInitializationBuilder>(); var proxySerializationEnablerStub = MockRepository.GenerateStub <IProxySerializationEnabler>(); codeGeneratorStub.Stub(stub => stub.DefineType(null, 0, null)).IgnoreArguments().Return(_typeBuilderMock); codeGeneratorStub.Stub(stub => stub.DebugInfoGenerator).Return(_debugInfoGeneratorMock); var generator = new MutableTypeCodeGenerator( _mutableType, _nestedTypeCodeGeneratorFactoryMock, codeGeneratorStub, emittableOperandProviderStub, memberEmitterStub, initializationBuilderStub, proxySerializationEnablerStub); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.DeclareType(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.CreateNestedTypeGenerators().ForceEnumeration(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(() => generator.CreateType()); Assert.That(() => generator.DefineTypeFacets(), Throws.Nothing); CheckThrowsForInvalidOperation(generator.DeclareType); CheckThrowsForInvalidOperation(() => generator.CreateNestedTypeGenerators().ForceEnumeration()); CheckThrowsForInvalidOperation(generator.DefineTypeFacets); Assert.That(() => generator.CreateType(), Throws.Nothing); }