151 lines
5.3 KiB
C#
151 lines
5.3 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNetCore.Razor.Language
|
|
{
|
|
public class DirectiveDescriptorTest
|
|
{
|
|
[Fact]
|
|
public void CreateDirective_CreatesDirective_WithProvidedKind()
|
|
{
|
|
// Arrange & Act
|
|
var directive = DirectiveDescriptor.CreateDirective("test", DirectiveKind.SingleLine);
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.SingleLine, directive.Kind);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateDirective_WithConfigure_CreatesDirective_WithProvidedKind()
|
|
{
|
|
// Arrange
|
|
var called = false;
|
|
Action<IDirectiveDescriptorBuilder> configure = b => { called = true; };
|
|
|
|
// Act
|
|
var directive = DirectiveDescriptor.CreateDirective("test", DirectiveKind.SingleLine, configure);
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.SingleLine, directive.Kind);
|
|
Assert.True(called);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateSingleLineDirective_CreatesSingleLineDirective()
|
|
{
|
|
// Arrange & Act
|
|
var directive = DirectiveDescriptor.CreateSingleLineDirective("test");
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.SingleLine, directive.Kind);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateSingleLineDirective_WithConfigure_CreatesSingleLineDirective()
|
|
{
|
|
// Arrange
|
|
var called = false;
|
|
Action<IDirectiveDescriptorBuilder> configure = b => { called = true; };
|
|
|
|
// Act
|
|
var directive = DirectiveDescriptor.CreateSingleLineDirective("test", configure);
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.SingleLine, directive.Kind);
|
|
Assert.True(called);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateRazorBlockDirective_CreatesRazorBlockDirective()
|
|
{
|
|
// Arrange & Act
|
|
var directive = DirectiveDescriptor.CreateRazorBlockDirective("test");
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.RazorBlock, directive.Kind);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateRazorBlockDirective_WithConfigure_CreatesRazorBlockDirective()
|
|
{
|
|
// Arrange
|
|
var called = false;
|
|
Action<IDirectiveDescriptorBuilder> configure = b => { called = true; };
|
|
|
|
// Act
|
|
var directive = DirectiveDescriptor.CreateRazorBlockDirective("test", configure);
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.RazorBlock, directive.Kind);
|
|
Assert.True(called);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateCodeBlockDirective_CreatesCodeBlockDirective()
|
|
{
|
|
// Arrange & Act
|
|
var directive = DirectiveDescriptor.CreateCodeBlockDirective("test");
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.CodeBlock, directive.Kind);
|
|
}
|
|
|
|
[Fact]
|
|
public void CreateCodeBlockDirective_WithConfigure_CreatesCodeBlockDirective()
|
|
{
|
|
// Arrange
|
|
var called = false;
|
|
Action<IDirectiveDescriptorBuilder> configure = b => { called = true; };
|
|
|
|
// Act
|
|
var directive = DirectiveDescriptor.CreateCodeBlockDirective("test", configure);
|
|
|
|
// Assert
|
|
Assert.Equal("test", directive.Directive);
|
|
Assert.Equal(DirectiveKind.CodeBlock, directive.Kind);
|
|
Assert.True(called);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ValidatesDirectiveKeyword_EmptyIsInvalid()
|
|
{
|
|
// Arrange & Act
|
|
var ex = Assert.Throws<InvalidOperationException>(() => DirectiveDescriptor.CreateSingleLineDirective(""));
|
|
|
|
// Assert
|
|
Assert.Equal("Invalid directive keyword ''. Directives must have a non-empty keyword that consists only of letters.", ex.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ValidatesDirectiveKeyword_InvalidCharacter()
|
|
{
|
|
// Arrange & Act
|
|
var ex = Assert.Throws<InvalidOperationException>(() => DirectiveDescriptor.CreateSingleLineDirective("test_directive"));
|
|
|
|
// Assert
|
|
Assert.Equal("Invalid directive keyword 'test_directive'. Directives must have a non-empty keyword that consists only of letters.", ex.Message);
|
|
}
|
|
|
|
[Fact]
|
|
public void Build_ValidatesDirectiveName_NonOptionalTokenFollowsOptionalToken()
|
|
{
|
|
// Arrange & Act
|
|
var ex = Assert.Throws<InvalidOperationException>(
|
|
() => DirectiveDescriptor.CreateSingleLineDirective("test", b => { b.AddOptionalMemberToken(); b.AddMemberToken(); }));
|
|
|
|
// Assert
|
|
Assert.Equal("A non-optional directive token cannot follow an optional directive token.", ex.Message);
|
|
}
|
|
}
|
|
}
|