public void OnDocumentStructureChanged_IgnoresEditsThatAreOld() { // Arrange using (var parser = new DefaultVisualStudioRazorParser( Dispatcher, CreateDocumentTracker(), Mock.Of <RazorTemplateEngineFactoryService>(), new DefaultErrorReporter(), Mock.Of <ICompletionBroker>())) { var called = false; parser.DocumentStructureChanged += (sender, e) => called = true; parser._latestChangeReference = new DefaultVisualStudioRazorParser.ChangeReference(null, new StringTextSnapshot(string.Empty)); var args = new DocumentStructureChangedEventArgs( new SourceChange(0, 0, string.Empty), new StringTextSnapshot(string.Empty), TestRazorCodeDocument.CreateEmpty()); // Act parser.OnDocumentStructureChanged(args); // Assert Assert.False(called); } }
public void OnDocumentStructureChanged_FiresForLatestTextBufferEdit() { // Arrange var documentTracker = CreateDocumentTracker(); using (var parser = new DefaultVisualStudioRazorParser( Dispatcher, documentTracker, Mock.Of <RazorTemplateEngineFactoryService>(), new DefaultErrorReporter(), Mock.Of <ICompletionBroker>())) { var called = false; parser.DocumentStructureChanged += (sender, e) => called = true; var latestChange = new SourceChange(0, 0, string.Empty); var latestSnapshot = documentTracker.TextBuffer.CurrentSnapshot; parser._latestChangeReference = new DefaultVisualStudioRazorParser.ChangeReference(latestChange, latestSnapshot); var args = new DocumentStructureChangedEventArgs( latestChange, latestSnapshot, TestRazorCodeDocument.CreateEmpty()); // Act parser.OnDocumentStructureChanged(args); // Assert Assert.True(called); } }
public void OnDocumentStructureChanged_FiresForLatestTextBufferEdit() { // Arrange var documentTracker = CreateDocumentTracker(); using (var parser = new DefaultVisualStudioRazorParser( Dispatcher, documentTracker, ProjectEngineFactory, new DefaultErrorReporter(), Mock.Of <VisualStudioCompletionBroker>())) { var called = false; parser.DocumentStructureChanged += (sender, e) => called = true; var latestChange = new SourceChange(0, 0, string.Empty); var latestSnapshot = documentTracker.TextBuffer.CurrentSnapshot; parser._latestChangeReference = new BackgroundParser.ChangeReference(latestChange, latestSnapshot); var codeDocument = TestRazorCodeDocument.CreateEmpty(); codeDocument.SetSyntaxTree(RazorSyntaxTree.Parse(TestRazorSourceDocument.Create())); var args = new BackgroundParserResultsReadyEventArgs( parser._latestChangeReference, codeDocument); // Act parser.OnDocumentStructureChanged(args); // Assert Assert.True(called); } }
public async Task GetLatestCodeDocumentAsync_NoPendingChangesReturnsImmediately() { // Arrange var documentTracker = CreateDocumentTracker(); using (var parser = new DefaultVisualStudioRazorParser( Dispatcher, documentTracker, ProjectEngineFactory, new DefaultErrorReporter(), Mock.Of <VisualStudioCompletionBroker>())) { var latestChange = new SourceChange(0, 0, string.Empty); var latestSnapshot = documentTracker.TextBuffer.CurrentSnapshot; parser._latestChangeReference = new BackgroundParser.ChangeReference(latestChange, latestSnapshot); var codeDocument = TestRazorCodeDocument.CreateEmpty(); codeDocument.SetSyntaxTree(RazorSyntaxTree.Parse(TestRazorSourceDocument.Create())); var args = new BackgroundParserResultsReadyEventArgs( parser._latestChangeReference, codeDocument); parser.OnDocumentStructureChanged(args); // Act - 1 var getLatestCodeDocumentTask = parser.GetLatestCodeDocumentAsync(); // Assert - 1 Assert.True(getLatestCodeDocumentTask.IsCompleted); // Act - 2 var latestCodeDocument = await getLatestCodeDocumentTask; // Assert - 2 Assert.Same(latestCodeDocument, codeDocument); } }
public void OnDocumentStructureChanged_FiresForOnlyLatestTextBufferReparseEdit() { // Arrange var documentTracker = CreateDocumentTracker(); using (var parser = new DefaultVisualStudioRazorParser( Dispatcher, documentTracker, ProjectEngineFactory, new DefaultErrorReporter(), Mock.Of <VisualStudioCompletionBroker>())) { var called = false; parser.DocumentStructureChanged += (sender, e) => called = true; var latestSnapshot = documentTracker.TextBuffer.CurrentSnapshot; parser._latestChangeReference = new BackgroundParser.ChangeReference(null, latestSnapshot); var codeDocument = TestRazorCodeDocument.CreateEmpty(); codeDocument.SetSyntaxTree(RazorSyntaxTree.Parse(TestRazorSourceDocument.Create())); var badArgs = new BackgroundParserResultsReadyEventArgs( // This is a different reparse edit, shouldn't be fired for this call new BackgroundParser.ChangeReference(null, latestSnapshot), codeDocument); var goodArgs = new BackgroundParserResultsReadyEventArgs( parser._latestChangeReference, codeDocument); // Act - 1 parser.OnDocumentStructureChanged(badArgs); // Assert - 1 Assert.False(called); // Act - 2 parser.OnDocumentStructureChanged(goodArgs); // Assert - 2 Assert.True(called); } }
public void OnDocumentStructureChanged_NoopsIfDisposed() { // Arrange var parser = new DefaultVisualStudioRazorParser( Dispatcher, CreateDocumentTracker(), Mock.Of <RazorTemplateEngineFactoryService>(), new DefaultErrorReporter(), Mock.Of <ICompletionBroker>()); parser.Dispose(); // Act & Assert parser.OnDocumentStructureChanged(new object()); }
public void OnDocumentStructureChanged_NoopsIfDisposed() { // Arrange var parser = new DefaultVisualStudioRazorParser( Dispatcher, CreateDocumentTracker(), ProjectEngineFactory, new DefaultErrorReporter(), Mock.Of <VisualStudioCompletionBroker>(MockBehavior.Strict)); parser.Dispose(); // Act & Assert parser.OnDocumentStructureChanged(new object()); }
public void OnDocumentStructureChanged_IgnoresEditsThatAreOld() { // Arrange using (var parser = new DefaultVisualStudioRazorParser( JoinableTaskContext, CreateDocumentTracker(), ProjectEngineFactory, new DefaultErrorReporter(), Mock.Of <VisualStudioCompletionBroker>(MockBehavior.Strict))) { var called = false; parser.DocumentStructureChanged += (sender, e) => called = true; parser._latestChangeReference = new BackgroundParser.ChangeReference(null, new StringTextSnapshot(string.Empty)); var args = new BackgroundParserResultsReadyEventArgs( new BackgroundParser.ChangeReference(new SourceChange(0, 0, string.Empty), new StringTextSnapshot(string.Empty)), TestRazorCodeDocument.CreateEmpty()); // Act parser.OnDocumentStructureChanged(args); // Assert Assert.False(called); } }