Ejemplo n.º 1
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);
        }
Ejemplo n.º 2
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.º 3
0
        public async Task TryGetLinePositionSpan_SpanMatchesSourceMapping_ReturnsTrue()
        {
            // Arrange
            var sourceText = SourceText.From(@"
@SomeProperty
");

            var project = new DefaultProjectSnapshot(
                ProjectState.Create(Workspace.Services, HostProject)
                .WithAddedHostDocument(HostDocument, () =>
            {
                return(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";
            var span   = new TextSpan(generated.GeneratedCode.IndexOf(symbol), symbol.Length);

            // Act
            var result = RazorSpanMappingService.TryGetLinePositionSpan(span, await document.GetTextAsync(), generated, out var mapped);

            // Assert
            Assert.True(result);
            Assert.Equal(new LinePositionSpan(new LinePosition(1, 1), new LinePosition(1, 13)), mapped);
        }
        public override object GetMappingService()
        {
            if (_mappingService == null)
            {
                _mappingService = new RazorSpanMappingService(_documentSnapshot);
            }

            return(_mappingService);
        }