public void ProcessDirectives_CanReturnEmptyDescriptorsBasedOnDirectiveDescriptors(
            string source,
            object tagHelpers)
        {
            // Arrange
            var sourceDocument = TestRazorSourceDocument.Create(source, filePath: "TestFile");
            var parser         = new RazorParser();
            var syntaxTree     = parser.Parse(sourceDocument);
            var visitor        = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor((TagHelperDescriptor[])tagHelpers);

            // Act
            visitor.VisitBlock(syntaxTree.Root);

            // Assert
            Assert.Empty(visitor.Matches);
        }
        public void DirectiveVisitor_ExtractsPrefixFromSyntaxTree(
            string source,
            string expectedPrefix)
        {
            // Arrange
            var sourceDocument = TestRazorSourceDocument.Create(source, filePath: "TestFile");
            var parser         = new RazorParser();
            var syntaxTree     = parser.Parse(sourceDocument);
            var visitor        = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor(tagHelpers: new List <TagHelperDescriptor>());

            // Act
            visitor.VisitBlock(syntaxTree.Root);

            // Assert
            Assert.Equal(expectedPrefix, visitor.TagHelperPrefix);
        }
        public void DirectiveVisitor_FiltersTagHelpersByDirectives(
            string source,
            object tagHelpers,
            object expectedDescriptors)
        {
            // Arrange
            var expected       = (TagHelperDescriptor[])expectedDescriptors;
            var sourceDocument = TestRazorSourceDocument.Create(source, filePath: "TestFile");
            var parser         = new RazorParser();
            var syntaxTree     = parser.Parse(sourceDocument);
            var visitor        = new DefaultRazorTagHelperBinderPhase.DirectiveVisitor((TagHelperDescriptor[])tagHelpers);

            // Act
            visitor.VisitBlock(syntaxTree.Root);

            // Assert
            Assert.Equal(expected.Count(), visitor.Matches.Count());

            foreach (var expectedDescriptor in expected)
            {
                Assert.Contains(expectedDescriptor, visitor.Matches, TagHelperDescriptorComparer.Default);
            }
        }