File: SymbolsTests\Metadata\PE\TypeAccessibility.vb
Web Access
Project: src\src\Compilers\VisualBasic\Test\Symbol\Microsoft.CodeAnalysis.VisualBasic.Symbol.UnitTests.vbproj (Microsoft.CodeAnalysis.VisualBasic.Symbol.UnitTests)
' Licensed to the .NET Foundation under one or more agreements.
' The .NET Foundation licenses this file to you under the MIT license.
' See the LICENSE file in the project root for more information.
 
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Basic.Reference.Assemblies
 
Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Symbols.Metadata.PE
 
    Public Class TypeAccessibility : Inherits BasicTestBase
 
        <Fact>
        Public Sub Test1()
            Dim assembly = MetadataTestHelpers.LoadFromBytes(Net40.Resources.mscorlib)
 
            TestTypeAccessibilityHelper(assembly.Modules(0))
        End Sub
 
        Private Sub TestTypeAccessibilityHelper(module0 As ModuleSymbol)
 
            Dim system = (From n In module0.GlobalNamespace.GetMembers()
                          Where n.Kind = SymbolKind.Namespace AndAlso n.Name.Equals("System")).
                        Cast(Of NamespaceSymbol).Single()
 
            Dim obj = (From t In system.GetTypeMembers()
                       Where t.Name.Equals("Object")).Single()
 
            Assert.Equal(Accessibility.Public, obj.DeclaredAccessibility)
 
            Dim fxAssembly = (From t In module0.GlobalNamespace.GetTypeMembers()
                              Where t.Name.Equals("FXAssembly")).Single()
 
            Assert.Equal(Accessibility.Friend, fxAssembly.DeclaredAccessibility)
 
            Dim [enum] = (From t In system.GetTypeMembers()
                          Where t.Name.Equals("Enum")).Single()
 
            Dim console = (From t In system.GetTypeMembers()
                           Where t.Name.Equals("Console")).Single()
 
            Dim ControlKeyState = (From t In console.GetTypeMembers()
                                   Where t.Name.Equals("ControlKeyState")).Single()
 
            Assert.Equal(Accessibility.Friend, ControlKeyState.DeclaredAccessibility)
 
            Dim ActivationContext = (From t In system.GetTypeMembers()
                                     Where t.Name.Equals("ActivationContext")).Single()
 
            Dim ContextForm = (From t In ActivationContext.GetTypeMembers()
                               Where t.Name.Equals("ContextForm")).Single()
 
            Assert.Equal(Accessibility.Public, ContextForm.DeclaredAccessibility)
 
            Dim Runtime = (From t In system.GetMembers()
                           Where t.Kind = SymbolKind.Namespace AndAlso t.Name.Equals("Runtime")).
                          Cast(Of NamespaceSymbol)().Single()
 
            Dim Remoting = (From t In Runtime.GetMembers()
                            Where t.Kind = SymbolKind.Namespace AndAlso t.Name.Equals("Remoting")).
                          Cast(Of NamespaceSymbol)().Single()
 
            Dim Messaging = (From t In Remoting.GetMembers()
                             Where t.Kind = SymbolKind.Namespace AndAlso t.Name.Equals("Messaging")).
                          Cast(Of NamespaceSymbol)().Single()
 
            Dim MessageSmuggler = (From t In Messaging.GetTypeMembers()
                                   Where t.Name.Equals("MessageSmuggler")).Single()
 
            Dim SerializedArg = (From t In MessageSmuggler.GetTypeMembers()
                                 Where t.Name.Equals("SerializedArg")).Single()
 
            Assert.Equal(Accessibility.Protected, SerializedArg.DeclaredAccessibility)
 
            Dim Security = (From t In system.GetMembers()
                            Where t.Kind = SymbolKind.Namespace AndAlso t.Name.Equals("Security")).
                        Cast(Of NamespaceSymbol)().Single()
 
            Dim AccessControl = (From t In Security.GetMembers()
                                 Where t.Kind = SymbolKind.Namespace AndAlso t.Name.Equals("AccessControl")).
                          Cast(Of NamespaceSymbol)().Single()
 
            Dim NativeObjectSecurity = (From t In AccessControl.GetTypeMembers()
                                        Where t.Name.Equals("NativeObjectSecurity")).Single()
 
            Dim ExceptionFromErrorCode = (From t In NativeObjectSecurity.GetTypeMembers()
                                          Where t.Name.Equals("ExceptionFromErrorCode")).Single()
 
            Assert.Equal(Accessibility.ProtectedOrFriend, ExceptionFromErrorCode.DeclaredAccessibility)
 
            Assert.Same(module0, module0.GlobalNamespace.Locations.Single().MetadataModule)
            Assert.Same(module0, system.Locations.Single().MetadataModule)
            Assert.Same(module0, Runtime.Locations.Single().MetadataModule)
            Assert.Same(module0, obj.Locations.Single().MetadataModule)
 
        End Sub
 
    End Class
 
End Namespace