File: RazorDiagnosticTest.cs
Web Access
Project: src\src\Razor\src\Compiler\test\Microsoft.NET.Sdk.Razor.SourceGenerators.UnitTests\Microsoft.NET.Sdk.Razor.SourceGenerators.UnitTests.csproj (Microsoft.NET.Sdk.Razor.SourceGenerators.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.Razor.Language;
using Microsoft.CodeAnalysis;
using Xunit;
 
namespace Microsoft.NET.Sdk.Razor.SourceGenerators
{
    public class RazorDiagnosticTest
    {
        [Fact]
        public void AsDiagnostic_WithUndefinedSpanWorks()
        {
            // Arrange
            var diagnostics = RazorDiagnostic.Create(new RazorDiagnosticDescriptor("RZC1001", "Some message", RazorDiagnosticSeverity.Error));
 
            // Act
            var csharpDiagnostic = diagnostics.AsDiagnostic();
 
            // Assert
            Assert.Equal("Some message", csharpDiagnostic.GetMessage());
            Assert.Equal("RZC1001", csharpDiagnostic.Descriptor.Id);
            Assert.Equal(DiagnosticSeverity.Error, csharpDiagnostic.Severity);
            Assert.Equal(Location.None, csharpDiagnostic.Location);
        }
 
        [Fact]
        public void AsDiagnostic_WithSpanWorks()
        {
            // Arrange
            var span = new SourceSpan("some-file", 100, 1, 5, 10);
            var diagnostics = RazorDiagnostic.Create(new RazorDiagnosticDescriptor("RZC1001", "Some message", RazorDiagnosticSeverity.Error), span);
 
            // Act
            var csharpDiagnostic = diagnostics.AsDiagnostic();
 
            // Assert
            Assert.Equal("Some message", csharpDiagnostic.GetMessage());
            Assert.Equal("RZC1001", csharpDiagnostic.Descriptor.Id);
            Assert.Equal(DiagnosticSeverity.Error, csharpDiagnostic.Severity);
            Assert.Equal(100, csharpDiagnostic.Location.SourceSpan.Start);
 
            var lineSpan = csharpDiagnostic.Location.GetLineSpan();
            Assert.Equal("some-file", lineSpan.Path);
            Assert.Equal(1, lineSpan.StartLinePosition.Line);
            Assert.Equal(5, lineSpan.StartLinePosition.Character);
            Assert.Equal(1, lineSpan.EndLinePosition.Line);
            Assert.Equal(15, lineSpan.EndLinePosition.Character);
        }
    }
}