Ejemplo n.º 1
0
        public async Task TryGetMappedSpans_SpanMatchesSourceMappingAndPosition_ReturnsTrue()
        {
            // Arrange
            var sourceText = SourceText.From(@"
@SomeProperty
@SomeProperty
@SomeProperty
");

            var project = new DefaultProjectSnapshot(
                ProjectState.Create(Workspace.Services, HostProject)
                .WithAddedHostDocument(HostDocument, () => Task.FromResult(TextAndVersion.Create(sourceText, VersionStamp.Create()))));

            var document = project.GetDocument(HostDocument.FilePath);
            var service  = new RazorSpanMappingService(document);

            var output = await document.GetGeneratedOutputAsync();

            var generated = output.GetCSharpDocument();

            var symbol = "SomeProperty";
            // Second occurrence
            var span = new TextSpan(generated.GeneratedCode.IndexOf(symbol, generated.GeneratedCode.IndexOf(symbol, StringComparison.Ordinal) + symbol.Length, StringComparison.Ordinal), symbol.Length);

            // Act
            var result = RazorSpanMappingService.TryGetMappedSpans(span, await document.GetTextAsync(), generated, out var mappedLinePositionSpan, out var mappedSpan);

            // Assert
            Assert.True(result);
            Assert.Equal(new LinePositionSpan(new LinePosition(2, 1), new LinePosition(2, 13)), mappedLinePositionSpan);
            Assert.Equal(new TextSpan(Environment.NewLine.Length + 1 + symbol.Length + Environment.NewLine.Length + 1, symbol.Length), mappedSpan);
        }
Ejemplo n.º 2
0
        public async Task TryGetMappedSpans_SpanOutsideSourceMapping_ReturnsFalse()
        {
            // Arrange
            var sourceText = SourceText.From(@"
@{
    var x = SomeClass.SomeProperty;
}
");

            var project = new DefaultProjectSnapshot(
                ProjectState.Create(Workspace.Services, HostProject)
                .WithAddedHostDocument(HostDocument, () => Task.FromResult(TextAndVersion.Create(sourceText, VersionStamp.Create()))));

            var document = project.GetDocument(HostDocument.FilePath);
            var service  = new RazorSpanMappingService(document);

            var output = await document.GetGeneratedOutputAsync();

            var generated = output.GetCSharpDocument();

            var symbol = "ExecuteAsync";
            var span   = new TextSpan(generated.GeneratedCode.IndexOf(symbol, StringComparison.Ordinal), symbol.Length);

            // Act
            var result = RazorSpanMappingService.TryGetMappedSpans(span, await document.GetTextAsync(), generated, out var mappedLinePositionSpan, out var mappedSpan);

            // Assert
            Assert.False(result);
        }