Example #1
0
        ITypeMetadataResolver CreateMetadataResolver()
        {
            m_CSharpMetadataFactoryMethod = (th, t) => new CSharpTypeBasedMetadata(TypeHandleSerializer, MemberConstrainer, th, t);
            var typeBasedMetadataFactory       = new CSharpTypeBasedMetadataFactory(TypeHandleSerializer, m_CSharpMetadataFactoryMethod);
            var cachedTypeBasedMetadataFactory = new CachedTypeMetadataFactory(typeBasedMetadataFactory);

            m_GraphMetadataFactoryMethod = (th, t) => new GraphBasedMetadata(TypeHandleSerializer, th, t);
            var graphBasedMetadataFactory = new GraphBasedMetadataFactory(m_GraphMetadataFactoryMethod);

            var typeMetadataFactory = new TypeHandleMetadataFactory(cachedTypeBasedMetadataFactory, graphBasedMetadataFactory);

            return(new TypeMetadataResolver(typeMetadataFactory));
        }
        public void Should_CreateGraphMetadata_WhenGraphBasedTypeHandle()
        {
            //Arrange
            var typeMetadataFactoryMock  = GetMockedTypeMetadataFactory();
            var graphMetadataFactoryMock = GetMockedGraphMetadataFactory();
            var factory = new TypeHandleMetadataFactory(typeMetadataFactoryMock.Object, graphMetadataFactoryMock.Object);

            //Act
            var graphBasedMetadata = factory.Create(s_GraphBasedHandle);

            //Assert
            Assert.That(graphBasedMetadata, Is.SameAs(k_GraphBasedMetadata));
            graphMetadataFactoryMock.Verify(f => f.Create(It.IsAny <TypeHandle>()), Times.Exactly(1));
        }
        public void Should_CreateEmptyMetadata_WhenEmptyTypeHandle()
        {
            //Arrange
            var typeMetadataFactoryMock  = GetMockedTypeMetadataFactory();
            var graphMetadataFactoryMock = GetMockedGraphMetadataFactory();
            var factory = new TypeHandleMetadataFactory(typeMetadataFactoryMock.Object, graphMetadataFactoryMock.Object);

            //Act
            var emptyMetadata = factory.Create(default(TypeHandle));

            //Assert
            graphMetadataFactoryMock.Verify(f => f.Create(It.IsAny <TypeHandle>()), Times.Exactly(0));
            typeMetadataFactoryMock.Verify(f => f.Create(It.IsAny <TypeHandle>()), Times.Exactly(0));
            Assert.That(emptyMetadata, Is.SameAs(EmptyTypeMetadata.Instance));
        }