public void TestExplicitScopeAttributesForWinRTMultiFilePolicy() { // Test that custom attributes referring to blocked types don't show up in metadata var sampleMetadataModule = _context.GetModuleForSimpleName("SampleMetadataAssembly"); var sampleWinRTMetadataModule = _context.GetModuleForSimpleName("SampleWinRTMetadataAssembly"); var windowsWinRTMetadataModule = _context.GetModuleForSimpleName("WindowsWinRTMetadataAssembly"); Cts.MetadataType controlType = windowsWinRTMetadataModule.GetType("Windows", "Control"); Cts.MetadataType derivedFromControl = sampleWinRTMetadataModule.GetType("SampleMetadataWinRT", "DerivedFromControl"); Cts.MetadataType derivedFromControlInCustomScope = sampleWinRTMetadataModule.GetType("SampleMetadataWinRT", "DerivedFromControlAndInCustomScope"); var policy = new MultifileMetadataPolicy(sampleMetadataModule, sampleWinRTMetadataModule); var transformResult = MetadataTransform.Run(policy, new[] { _systemModule, sampleMetadataModule, sampleWinRTMetadataModule, windowsWinRTMetadataModule }); var controlTypeMetadata = transformResult.GetTransformedTypeReference(controlType); var derivedFromControlMetadata = transformResult.GetTransformedTypeDefinition(derivedFromControl); var derivedFromControlInCustomScopeMetadata = transformResult.GetTransformedTypeDefinition(derivedFromControlInCustomScope); CheckTypeReferenceForProperWinRTHome(controlTypeMetadata, "Windows"); ScopeDefinition scopeDefOfDerivedFromControlType = GetScopeDefinitionOfType(derivedFromControlMetadata); Assert.Equal("SampleWinRTMetadataAssembly", scopeDefOfDerivedFromControlType.Name.Value); CheckTypeDefinitionForProperWinRTHome(derivedFromControlInCustomScopeMetadata, "SampleMetadataWinRT"); }
public void TestMultifileSanity() { var sampleMetadataModule = _context.GetModuleForSimpleName("SampleMetadataAssembly"); var policy = new MultifileMetadataPolicy(sampleMetadataModule); var transformResult = MetadataTransform.Run(policy, new[] { _systemModule, sampleMetadataModule }); Assert.Equal(1, transformResult.Scopes.Count); var sampleScope = transformResult.Scopes.Single(); Assert.Equal(sampleMetadataModule.GetAllTypes().Count(t => !policy.IsBlocked(t)), sampleScope.GetAllTypes().Count()); var objectType = (Cts.MetadataType)_context.GetWellKnownType(Cts.WellKnownType.Object); var objectRecord = transformResult.GetTransformedTypeReference(objectType); Assert.Equal("Object", objectRecord.TypeName.Value); var stringType = (Cts.MetadataType)_context.GetWellKnownType(Cts.WellKnownType.String); var stringRecord = transformResult.GetTransformedTypeReference(stringType); Assert.Equal("String", stringRecord.TypeName.Value); Assert.Same(objectRecord.ParentNamespaceOrType, stringRecord.ParentNamespaceOrType); Assert.IsType <NamespaceReference>(objectRecord.ParentNamespaceOrType); var parentNamespace = objectRecord.ParentNamespaceOrType as NamespaceReference; Assert.Equal("System", parentNamespace.Name.Value); Assert.Null(transformResult.GetTransformedTypeDefinition(objectType)); Assert.Null(transformResult.GetTransformedTypeDefinition(stringType)); }
public void TestMultifileSanity() { var sampleMetadataModule = _context.GetModuleForSimpleName("SampleMetadataAssembly"); var policy = new MultifileMetadataPolicy(sampleMetadataModule); var transformResult = MetadataTransform.Run(policy, new[] { _systemModule, sampleMetadataModule }); Assert.Equal(1, transformResult.Scopes.Count); var sampleScope = transformResult.Scopes.Single(); Assert.Equal(sampleMetadataModule.GetAllTypes().Count(t => !policy.IsBlocked(t)), sampleScope.GetAllTypes().Count()); var objectType = (Cts.MetadataType)_context.GetWellKnownType(Cts.WellKnownType.Object); var objectRecord = transformResult.GetTransformedTypeReference(objectType); Assert.Equal("Object", objectRecord.TypeName.Value); var stringType = (Cts.MetadataType)_context.GetWellKnownType(Cts.WellKnownType.String); var stringRecord = transformResult.GetTransformedTypeReference(stringType); Assert.Equal("String", stringRecord.TypeName.Value); Assert.Same(objectRecord.ParentNamespaceOrType, stringRecord.ParentNamespaceOrType); Assert.IsType<NamespaceReference>(objectRecord.ParentNamespaceOrType); var parentNamespace = objectRecord.ParentNamespaceOrType as NamespaceReference; Assert.Equal("System", parentNamespace.Name.Value); Assert.Null(transformResult.GetTransformedTypeDefinition(objectType)); Assert.Null(transformResult.GetTransformedTypeDefinition(stringType)); }