public void InertTextBuffer_DoesNotCreateSnapshot()
        {
            // Arrange
            var textBuffer = new TestTextBuffer(new StringTextSnapshot(string.Empty));

            textBuffer.ChangeContentType(NotInertContentType, editTag: null);
            using var document = new DefaultLSPDocument(Uri, textBuffer, virtualDocuments: Array.Empty <VirtualDocument>());
            var originalSnapshot = document.CurrentSnapshot;

            textBuffer.ChangeContentType(TestInertContentType.Instance, editTag: null);

            // Act
            var edit = textBuffer.CreateEdit();

            edit.Insert(0, "New!");
            edit.Apply();

            // Assert
            var newSnapshot = document.CurrentSnapshot;

            Assert.Same(originalSnapshot, newSnapshot);
        }
        public void CurrentSnapshot_ChangesWhenTextBufferChanges()
        {
            // Arrange
            var textBuffer = new TestTextBuffer(new StringTextSnapshot(string.Empty));

            textBuffer.ChangeContentType(NotInertContentType, editTag: null);
            using var document = new DefaultLSPDocument(Uri, textBuffer, virtualDocuments: Array.Empty <VirtualDocument>());
            var originalSnapshot = document.CurrentSnapshot;

            // Act
            var edit = textBuffer.CreateEdit();

            edit.Insert(0, "New!");
            edit.Apply();

            // Assert
            var newSnapshot = document.CurrentSnapshot;

            Assert.NotSame(originalSnapshot, newSnapshot);
            Assert.Equal(1, originalSnapshot.Version);
            Assert.Equal(2, newSnapshot.Version);
        }
        public DefaultLSPDocumentManagerTest()
        {
            var contentType = Mock.Of <IContentType>(contentType =>
                                                     contentType.IsOfType("inert") == false &&
                                                     contentType.IsOfType("test") == true &&
                                                     contentType.TypeName == "test",
                                                     MockBehavior.Strict);

            ChangeListeners     = Enumerable.Empty <Lazy <LSPDocumentChangeListener, IContentTypeMetadata> >();
            JoinableTaskContext = new JoinableTaskContext();
            TextBuffer          = new TestTextBuffer(new StringTextSnapshot(string.Empty));
            TextBuffer.ChangeContentType(contentType, editTag: null);
            var snapshot = TextBuffer.CurrentSnapshot;

            Uri         = new Uri("C:/path/to/file.razor");
            UriProvider = Mock.Of <FileUriProvider>(provider => provider.GetOrCreate(TextBuffer) == Uri, MockBehavior.Strict);
            Mock.Get(UriProvider).Setup(p => p.Remove(It.IsAny <ITextBuffer>())).Verifiable();
            var testVirtualDocument = new TestVirtualDocument();
            var lspDocument         = new DefaultLSPDocument(Uri, TextBuffer, new[] { testVirtualDocument });

            LSPDocumentSnapshot = lspDocument.CurrentSnapshot;
            LSPDocument         = lspDocument;
            LSPDocumentFactory  = Mock.Of <LSPDocumentFactory>(factory => factory.Create(TextBuffer) == LSPDocument, MockBehavior.Strict);
        }