Ejemplo n.º 1
0
        public void DefineType()
        {
            var name              = "DomainType";
            var attributes        = (TypeAttributes)7;
            var forceStrongNaming = BooleanObjectMother.GetRandomBoolean();
            var keyFilePath       = "key file path";

            _flusher.SetAssemblyNamePattern("custom assembly name pattern");

            _configurationProviderMock.Expect(mock => mock.ForceStrongNaming).Return(forceStrongNaming);
            _configurationProviderMock.Expect(mock => mock.KeyFilePath).Return(keyFilePath);
            _moduleBuilderFactoryMock
            .Expect(mock => mock.CreateModuleBuilder("custom assembly name pattern", null, forceStrongNaming, keyFilePath))
            .Return(_moduleBuilderMock);

            var fakeTypeBuilder1 = MockRepository.GenerateStub <ITypeBuilder>();
            var fakeTypeBuilder2 = MockRepository.GenerateStub <ITypeBuilder>();

            _moduleBuilderMock.Expect(mock => mock.DefineType(name, attributes)).Return(fakeTypeBuilder1);
            _moduleBuilderMock.Expect(mock => mock.DefineType("OtherType", 0)).Return(fakeTypeBuilder2);

            var result1 = _flusher.DefineType(name, attributes, _emittableOperandProviderMock);
            var result2 = _flusher.DefineType("OtherType", 0, _emittableOperandProviderMock);

            _moduleBuilderFactoryMock.VerifyAllExpectations();
            _moduleBuilderMock.VerifyAllExpectations();
            _configurationProviderMock.VerifyAllExpectations();

            Assert.That(result1.As <TypeBuilderDecorator>().DecoratedTypeBuilder, Is.SameAs(fakeTypeBuilder1));
            Assert.That(result2.As <TypeBuilderDecorator>().DecoratedTypeBuilder, Is.SameAs(fakeTypeBuilder2));
            Assert.That(PrivateInvoke.GetNonPublicField(result1, "EmittableOperandProvider"), Is.SameAs(_emittableOperandProviderMock));
            Assert.That(PrivateInvoke.GetNonPublicField(result2, "EmittableOperandProvider"), Is.SameAs(_emittableOperandProviderMock));
        }
Ejemplo n.º 2
0
 ITypeBuilder IReflectionEmitCodeGenerator.DefineType(string name, TypeAttributes attributes, IEmittableOperandProvider emittableOperandProvider)
 {
     return(_reflectionEmitCodeGenerator.DefineType(name, attributes, emittableOperandProvider));
 }