Update code doc provider to only rely on VSRazorParser.
- Prior to this change the code document provider took in many sub-providers to allow for understanding of the old RazorEditorParser AND VisualStudioRazorParser. Now that RazorEditorParser is gone we can also change the code doc provider.
This commit is contained in:
parent
0a76ad7017
commit
345eb29c62
|
|
@ -14,25 +14,25 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
internal class DefaultCodeDocumentProvider : RazorCodeDocumentProvider
|
||||
{
|
||||
private readonly RazorTextBufferProvider _bufferProvider;
|
||||
private readonly IEnumerable<TextBufferCodeDocumentProvider> _codeDocumentProviders;
|
||||
private readonly TextBufferCodeDocumentProvider _codeDocumentProvider;
|
||||
|
||||
[ImportingConstructor]
|
||||
public DefaultCodeDocumentProvider(
|
||||
RazorTextBufferProvider bufferProvider,
|
||||
[ImportMany] IEnumerable<TextBufferCodeDocumentProvider> codeDocumentProviders)
|
||||
TextBufferCodeDocumentProvider codeDocumentProvider)
|
||||
{
|
||||
if (bufferProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(bufferProvider));
|
||||
}
|
||||
|
||||
if (codeDocumentProviders == null)
|
||||
if (codeDocumentProvider == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(codeDocumentProviders));
|
||||
throw new ArgumentNullException(nameof(codeDocumentProvider));
|
||||
}
|
||||
|
||||
_bufferProvider = bufferProvider;
|
||||
_codeDocumentProviders = codeDocumentProviders;
|
||||
_codeDocumentProvider = codeDocumentProvider;
|
||||
}
|
||||
|
||||
public override bool TryGetFromDocument(TextDocument document, out RazorCodeDocument codeDocument)
|
||||
|
|
@ -49,12 +49,9 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
return false;
|
||||
}
|
||||
|
||||
foreach (var codeDocumentProvider in _codeDocumentProviders)
|
||||
if (_codeDocumentProvider.TryGetFromBuffer(textBuffer, out codeDocument))
|
||||
{
|
||||
if (codeDocumentProvider.TryGetFromBuffer(textBuffer, out codeDocument))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// A Razor code document has not yet been associated with the buffer yet.
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
var vsCodeDocumentProvider = new Mock<TextBufferCodeDocumentProvider>();
|
||||
vsCodeDocumentProvider.Setup(provider => provider.TryGetFromBuffer(It.IsAny<ITextBuffer>(), out codeDocument))
|
||||
.Returns(true);
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, new[] { vsCodeDocumentProvider.Object });
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, vsCodeDocumentProvider.Object);
|
||||
var document = new Mock<TextDocument>();
|
||||
|
||||
// Act
|
||||
|
|
@ -46,7 +46,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
var vsCodeDocumentProvider = new Mock<TextBufferCodeDocumentProvider>();
|
||||
vsCodeDocumentProvider.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out codeDocument))
|
||||
.Returns(false);
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, new[] { vsCodeDocumentProvider.Object });
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, vsCodeDocumentProvider.Object);
|
||||
var document = new Mock<TextDocument>();
|
||||
|
||||
// Act
|
||||
|
|
@ -57,60 +57,6 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
Assert.Null(codeDocument);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TryGetFromDocument_ReturnsTrueIfVSProviderCanGetCodeDocumentFromOneProvider()
|
||||
{
|
||||
// Arrange
|
||||
var textBuffer = new Mock<ITextBuffer>().Object;
|
||||
RazorCodeDocument codeDocument;
|
||||
var expectedCodeDocument = new Mock<RazorCodeDocument>().Object;
|
||||
var bufferProvider = new Mock<RazorTextBufferProvider>();
|
||||
bufferProvider.Setup(provider => provider.TryGetFromDocument(It.IsAny<TextDocument>(), out textBuffer))
|
||||
.Returns(true);
|
||||
var failureVSCodeDocumentProvider = new Mock<TextBufferCodeDocumentProvider>();
|
||||
failureVSCodeDocumentProvider.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out codeDocument))
|
||||
.Returns(false);
|
||||
var successVSCodeDocumentProvider = new Mock<TextBufferCodeDocumentProvider>();
|
||||
successVSCodeDocumentProvider.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out expectedCodeDocument))
|
||||
.Returns(true);
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, new[] { failureVSCodeDocumentProvider.Object, successVSCodeDocumentProvider.Object });
|
||||
var document = new Mock<TextDocument>();
|
||||
|
||||
// Act
|
||||
var result = codeDocumentProvider.TryGetFromDocument(document.Object, out codeDocument);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
Assert.Same(expectedCodeDocument, codeDocument);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TryGetFromDocument_ReturnsFirstProvidersResultThatGetsCodeDocument()
|
||||
{
|
||||
// Arrange
|
||||
var textBuffer = new Mock<ITextBuffer>().Object;
|
||||
var expectedCodeDocument1 = new Mock<RazorCodeDocument>().Object;
|
||||
var expectedCodeDocument2 = new Mock<RazorCodeDocument>().Object;
|
||||
var bufferProvider = new Mock<RazorTextBufferProvider>();
|
||||
bufferProvider.Setup(provider => provider.TryGetFromDocument(It.IsAny<TextDocument>(), out textBuffer))
|
||||
.Returns(true);
|
||||
var vsCodeDocumentProvider1 = new Mock<TextBufferCodeDocumentProvider>();
|
||||
vsCodeDocumentProvider1.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out expectedCodeDocument1))
|
||||
.Returns(true);
|
||||
var vsCodeDocumentProvider2 = new Mock<TextBufferCodeDocumentProvider>();
|
||||
vsCodeDocumentProvider2.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out expectedCodeDocument2))
|
||||
.Returns(true);
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, new[] { vsCodeDocumentProvider1.Object, vsCodeDocumentProvider2.Object });
|
||||
var document = new Mock<TextDocument>();
|
||||
|
||||
// Act
|
||||
var result = codeDocumentProvider.TryGetFromDocument(document.Object, out var codeDocument);
|
||||
|
||||
// Assert
|
||||
Assert.True(result);
|
||||
Assert.Same(expectedCodeDocument1, codeDocument);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TryGetFromDocument_ReturnsTrueIfBothBufferAndVSProviderReturnTrue()
|
||||
{
|
||||
|
|
@ -123,7 +69,7 @@ namespace Microsoft.VisualStudio.Editor.Razor
|
|||
var vsCodeDocumentProvider = new Mock<TextBufferCodeDocumentProvider>();
|
||||
vsCodeDocumentProvider.Setup(provider => provider.TryGetFromBuffer(It.Is<ITextBuffer>(val => val == textBuffer), out expectedCodeDocument))
|
||||
.Returns(true);
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, new[] { vsCodeDocumentProvider.Object });
|
||||
var codeDocumentProvider = new DefaultCodeDocumentProvider(bufferProvider.Object, vsCodeDocumentProvider.Object);
|
||||
var document = new Mock<TextDocument>();
|
||||
|
||||
// Act
|
||||
|
|
|
|||
Loading…
Reference in New Issue