public void AddDirective_CreatesAndAddsToDirectiveFeatureIfItDoesNotExist()
    {
        // Arrange
        var builder           = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
        var expectedDirective = Mock.Of <DirectiveDescriptor>();

        // Act
        builder.AddDirective(expectedDirective);

        // Assert
        var feature          = Assert.Single(builder.Features);
        var directiveFeature = Assert.IsAssignableFrom <IRazorDirectiveFeature>(feature);
        var directive        = Assert.Single(directiveFeature.Directives);

        Assert.Same(expectedDirective, directive);
    }
    public void AddDirective_UsesExistingFeatureIfExistsAndAddsTo()
    {
        // Arrange
        var builder          = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
        var directiveFeature = new DefaultRazorDirectiveFeature();

        builder.Features.Add(directiveFeature);
        var expecteDirective = Mock.Of <DirectiveDescriptor>();

        // Act
        builder.AddDirective(expecteDirective);

        // Assert
        var feature = Assert.Single(builder.Features);

        Assert.Same(directiveFeature, feature);
        var directive = Assert.Single(directiveFeature.Directives);

        Assert.Same(expecteDirective, directive);
    }