using System.Linq; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using UnitTestSharp; namespace Vellum.Generator.UnitTests { public class SymbolSearchTests : TestFixture { public static readonly CSharpCompilation Types = VellumRun.Compile(("Types.cs", @" namespace Outer { public class Shown { public class Nested { } private class Hidden { public class Inside { } } } internal class Internal { } }")); public class IsPublicTests : TestFixture { public static bool IsPublic(string metadataName) { return SymbolSearch.IsPublic(Types.GetTypeByMetadataName(metadataName)); } public void PublicTypeInPublicTypes_Is() { CheckTrue(IsPublic("Outer.Shown")); CheckTrue(IsPublic("Outer.Shown+Nested")); } public void NonPublicType_IsNot() { CheckFalse(IsPublic("Outer.Internal")); } public void PublicTypeInANonPublicType_IsNot() { CheckFalse(IsPublic("Outer.Shown+Hidden+Inside")); } } } }