118 lines
3.8 KiB
C#
118 lines
3.8 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 Microsoft.AspNetCore.Razor.Language.Legacy;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
|
|
{
|
|
public class BasicIntegrationTest : IntegrationTestBase
|
|
{
|
|
[Fact]
|
|
public void Empty()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine();
|
|
var projectItem = CreateProjectItem();
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.Process(projectItem);
|
|
|
|
// Assert
|
|
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
|
|
}
|
|
|
|
[Fact]
|
|
public void HelloWorld()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine();
|
|
var projectItem = CreateProjectItem();
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.Process(projectItem);
|
|
|
|
// Assert
|
|
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
|
|
}
|
|
|
|
[Fact]
|
|
public void CustomDirective()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine(b =>
|
|
{
|
|
b.AddDirective(DirectiveDescriptor.CreateDirective("test", DirectiveKind.SingleLine));
|
|
});
|
|
|
|
var projectItem = CreateProjectItem();
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.Process(projectItem);
|
|
|
|
// Assert
|
|
AssertDocumentNodeMatchesBaseline(codeDocument.GetDocumentIntermediateNode());
|
|
}
|
|
|
|
[Fact]
|
|
public void BuildEngine_CallProcess()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine();
|
|
var projectItem = new TestRazorProjectItem("Index.cshtml");
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.Process(projectItem);
|
|
|
|
// Assert
|
|
Assert.NotNull(codeDocument.GetSyntaxTree());
|
|
Assert.NotNull(codeDocument.GetDocumentIntermediateNode());
|
|
}
|
|
|
|
[Fact]
|
|
public void CSharpDocument_Runtime_PreservesParserErrors()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine();
|
|
var projectItem = new TestRazorProjectItem("test.cshtml")
|
|
{
|
|
Content = "@!!!"
|
|
};
|
|
|
|
var expected = RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
|
|
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1),
|
|
"!");
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.Process(projectItem);
|
|
|
|
// Assert
|
|
var csharpDocument = codeDocument.GetCSharpDocument();
|
|
var error = Assert.Single(csharpDocument.Diagnostics);
|
|
Assert.Equal(expected, error);
|
|
}
|
|
|
|
[Fact]
|
|
public void CSharpDocument_DesignTime_PreservesParserErrors()
|
|
{
|
|
// Arrange
|
|
var projectEngine = CreateProjectEngine();
|
|
var projectItem = new TestRazorProjectItem("test.cshtml")
|
|
{
|
|
Content = "@{"
|
|
};
|
|
|
|
var expected = RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
|
|
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1), Resources.BlockName_Code, "}", "{");
|
|
|
|
// Act
|
|
var codeDocument = projectEngine.ProcessDesignTime(projectItem);
|
|
|
|
// Assert
|
|
var csharpDocument = codeDocument.GetCSharpDocument();
|
|
var error = Assert.Single(csharpDocument.Diagnostics);
|
|
Assert.Equal(expected, error);
|
|
}
|
|
}
|
|
}
|