File: SymbolsTests\Metadata\PE\TypeKindTests.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 Basic.Reference.Assemblies
Imports Microsoft.CodeAnalysis.VisualBasic.Symbols
Imports Roslyn.Test.Utilities
 
Namespace Microsoft.CodeAnalysis.VisualBasic.UnitTests.Symbols.Metadata.PE
 
    Public Class TypeKindTests : Inherits BasicTestBase
 
        <Fact>
        Public Sub Test1()
            Dim assembly = MetadataTestHelpers.LoadFromBytes(Net40.Resources.mscorlib)
 
            TestTypeKindHelper(assembly)
        End Sub
 
        Private Sub TestTypeKindHelper(assembly As AssemblySymbol)
 
            Dim module0 = assembly.Modules(0)
 
            Dim system = (From n In module0.GlobalNamespace.GetMembers()
                          Where n.Name.Equals("System")).Cast(Of NamespaceSymbol)().Single()
 
            Dim obj = (From t In system.GetTypeMembers()
                       Where t.Name.Equals("Object")).Single()
 
            Assert.Equal(TypeKind.Class, obj.TypeKind)
 
            Dim [enum] = (From t In system.GetTypeMembers()
                          Where t.Name.Equals("Enum")).Single()
 
            Assert.Equal(TypeKind.Class, [enum].TypeKind)
 
            Dim int32 = (From t In system.GetTypeMembers()
                         Where t.Name.Equals("Int32")).Single()
 
            Assert.Equal(TypeKind.Structure, int32.TypeKind)
 
            Dim func = (From t In system.GetTypeMembers()
                        Where t.Name.Equals("Func") AndAlso t.Arity = 1).Single()
 
            Assert.Equal(TypeKind.Delegate, func.TypeKind)
 
            Dim collections = (From n In system.GetMembers()
                               Where n.Name.Equals("Collections")).Cast(Of NamespaceSymbol)().Single()
 
            Dim ienumerable = (From t In collections.GetTypeMembers()
                               Where t.Name.Equals("IEnumerable")).Single()
 
            Assert.Equal(TypeKind.Interface, ienumerable.TypeKind)
            Assert.Null(ienumerable.BaseType)
 
            Dim typeCode = (From t In system.GetTypeMembers()
                            Where t.Name.Equals("TypeCode")).Single()
 
            Assert.Equal(TypeKind.Enum, typeCode.TypeKind)
 
            Assert.False(obj.IsMustInherit)
            Assert.False(obj.IsNotInheritable)
            Assert.False(obj.IsShared)
 
            Assert.True([enum].IsMustInherit)
            Assert.False([enum].IsNotInheritable)
            Assert.False([enum].IsShared)
 
            Assert.False(func.IsMustInherit)
            Assert.True(func.IsNotInheritable)
            Assert.False(func.IsShared)
 
            Dim console = system.GetTypeMembers("Console").Single()
 
            Assert.False(console.IsMustInherit)
            Assert.True(console.IsNotInheritable)
            Assert.False(console.IsShared)
        End Sub
 
        <Fact>
        <WorkItem(546314, "http://vstfdevdiv:8080/DevDiv2/DevDiv/_workitems/edit/546314")>
        Public Sub Bug15562()
            Dim assembly = MetadataTestHelpers.LoadFromBytes(Net40.Resources.mscorlib)
            Dim module0 = assembly.Modules(0)
            Dim system = (From n In module0.GlobalNamespace.GetMembers()
                          Where n.Name.Equals("System")).Cast(Of NamespaceSymbol)().Single()
            Dim multicastDelegate = system.GetTypeMembers("MulticastDelegate").Single()
            Assert.Equal(TypeKind.Class, multicastDelegate.TypeKind)
        End Sub
    End Class
End Namespace