public PropertySearcherItemsBuilder(int maxRecursiveDepth, TypeHandle rootTypeHandle,
                                     ITypeMetadataResolver resolver, HashSet <int> existingMembers)
 {
     m_MaxRecursiveDepth = maxRecursiveDepth;
     m_RootTypeHandle    = rootTypeHandle;
     m_Resolver          = resolver;
     m_RecursiveFlags    = BindingFlags.Public | BindingFlags.Instance;
     m_RootFlags         = BindingFlags.NonPublic | m_RecursiveFlags;
     m_ExistingMembers   = existingMembers;
 }
        public void Test_Recursivity_CreateSearcherItemsWithProperParent()
        {
            //Arrange
            string rootPublicName = nameof(RootClass.publicMember);
            ITypeMetadataResolver resolver = GetMockedTypeMetadataResolver();
            var builder = CreateSearcherItem(1, k_RootHandle, resolver);

            //Act
            List<SearcherItem> searcherItems = builder.Build();

            //Assert
            var rootPublicMemberSearcherItem = searcherItems.First(item => item.Name == rootPublicName);
            var childSearcherItem = rootPublicMemberSearcherItem.Children[0];
            Assert.That(childSearcherItem.Parent, Is.EqualTo(rootPublicMemberSearcherItem));
        }
        public void ShouldNot_ReturnNonPublicMembers_When_BuildingChildTypeMembers()
        {
            //Arrange
            ITypeMetadataResolver resolver = GetMockedTypeMetadataResolver();
            var builder = CreateSearcherItem(1, k_RootHandle, resolver);

            //Act
            List <SearcherItem> searcherItems = builder.Build();

            //Assert
            //That no child public members are returned
            foreach (var member in m_ChildMetadata.NonPublicMembers)
            {
                Assert.That(searcherItems[0].Children.Select(i => i.Name), Has.No.Member(member.Name));
            }
        }
        public void Should_ReturnPublicMembers_When_BuildingRootTypeMembers()
        {
            //Arrange
            ITypeMetadataResolver resolver = GetMockedTypeMetadataResolver();
            var builder = CreateSearcherItem(0, k_RootHandle, resolver);

            //Act
            List <SearcherItem> searcherItems = builder.Build();

            //Assert
            //That all public members are returned
            foreach (var member in m_RootMetadata.PublicMembers)
            {
                Assert.That(searcherItems.Select(i => i.Name), Has.Member(member.Name));
            }
        }
        public void Test_Recursivity_ReturnsProperAmount()
        {
            //Arrange
            int recursiveDepth = 7;
            ITypeMetadataResolver resolver = GetMockedTypeMetadataResolver();
            var builder = CreateSearcherItem(recursiveDepth, k_RecursiveHandle, resolver);

            //Act
            List<SearcherItem> searcherItems = builder.Build();
            List<SearcherItem> childrenItems = searcherItems[0].Children;
            int depthCount = 0;
            while (childrenItems.Count > 0)
            {
                depthCount++;
                childrenItems = childrenItems[0].Children;
            }

            //Assert
            Assert.That(depthCount, Is.EqualTo(recursiveDepth));
        }
 static PropertySearcherItemsBuilder CreateSearcherItem(int recursion, TypeHandle type, ITypeMetadataResolver resolver)
 {
     return(new PropertySearcherItemsBuilder(recursion, type, resolver, new HashSet <int>()));
 }
Exemplo n.º 7
0
 public static ITypeMetadata GetMetadata(this Type t, ITypeBasedTypeHandleSerializer serializer,
                                         ITypeMetadataResolver resolver)
 {
     return(t.GenerateTypeHandle(serializer).GetMetadata(resolver));
 }
Exemplo n.º 8
0
 public static ITypeMetadata GetMetadata(this TypeHandle th, ITypeMetadataResolver resolver)
 {
     return(resolver.Resolve(th));
 }
 public GraphContext()
 {
     CSharpTypeSerializer = new CSharpTypeSerializer();
     TypeMetadataResolver = CreateMetadataResolver();
 }