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>())); }
public static ITypeMetadata GetMetadata(this Type t, ITypeBasedTypeHandleSerializer serializer, ITypeMetadataResolver resolver) { return(t.GenerateTypeHandle(serializer).GetMetadata(resolver)); }
public static ITypeMetadata GetMetadata(this TypeHandle th, ITypeMetadataResolver resolver) { return(resolver.Resolve(th)); }
public GraphContext() { CSharpTypeSerializer = new CSharpTypeSerializer(); TypeMetadataResolver = CreateMetadataResolver(); }