public void Execute_WithTargetAssembly_Works()
    {
        // Arrange
        var testTagHelper      = "TestAssembly.TestTagHelper";
        var enumTagHelper      = "Microsoft.CodeAnalysis.Razor.Workspaces.Test.EnumTagHelper";
        var csharp             = @"
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace TestAssembly
{
    public class TestTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output) {}
    }
}";
        var compilation        = TestCompilation.Create(_assembly, CSharpSyntaxTree.ParseText(csharp));
        var descriptorProvider = new DefaultTagHelperDescriptorProvider();

        var context = TagHelperDescriptorProviderContext.Create();

        context.SetCompilation(compilation);
        context.Items.SetTargetAssembly((IAssemblySymbol)compilation.GetAssemblyOrModuleSymbol(compilation.References.First(r => r.Display.Contains("Microsoft.CodeAnalysis.Razor.Test.dll"))));

        // Act
        descriptorProvider.Execute(context);

        // Assert
        Assert.NotNull(compilation.GetTypeByMetadataName(testTagHelper));
        Assert.NotEmpty(context.Results);
        Assert.Empty(context.Results.Where(f => f.GetTypeName() == testTagHelper));
        Assert.NotEmpty(context.Results.Where(f => f.GetTypeName() == enumTagHelper));
    }
    public void Execute_NoOpsIfCompilationIsNotSet()
    {
        // Arrange
        var descriptorProvider = new DefaultTagHelperDescriptorProvider();

        var context = TagHelperDescriptorProviderContext.Create();

        // Act
        descriptorProvider.Execute(context);

        // Assert
        Assert.Empty(context.Results);
    }
    public void Execute_DoesNotAddEditorBrowsableNeverDescriptorsAtDesignTime()
    {
        // Arrange
        var editorBrowsableTypeName = "Microsoft.CodeAnalysis.Razor.Workspaces.Test.EditorBrowsableTagHelper";
        var compilation             = TestCompilation.Create(_assembly);
        var descriptorProvider      = new DefaultTagHelperDescriptorProvider();

        var context = TagHelperDescriptorProviderContext.Create();

        context.SetCompilation(compilation);
        context.ExcludeHidden = true;

        // Act
        descriptorProvider.Execute(context);

        // Assert
        Assert.NotNull(compilation.GetTypeByMetadataName(editorBrowsableTypeName));
        var nullDescriptors = context.Results.Where(descriptor => descriptor == null);

        Assert.Empty(nullDescriptors);
        var editorBrowsableDescriptor = context.Results.Where(descriptor => descriptor.GetTypeName() == editorBrowsableTypeName);

        Assert.Empty(editorBrowsableDescriptor);
    }