File: Extensions\SourceTextContainerExtensionsTests.cs
Web Access
Project: src\src\EditorFeatures\Test\Microsoft.CodeAnalysis.EditorFeatures.UnitTests.csproj (Microsoft.CodeAnalysis.EditorFeatures.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
#nullable disable
 
using System;
using Microsoft.CodeAnalysis.Text;
using Moq;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Extensions;
 
public class SourceTextContainerExtensionsTests
{
    [Fact]
    public void GetBufferTextFromNonTextContainerThrows()
    {
        var containerMock = new Mock<SourceTextContainer>(MockBehavior.Strict);
        Assert.Throws<ArgumentException>(() => Microsoft.CodeAnalysis.Text.Extensions.GetTextBuffer(containerMock.Object));
    }
 
    [Fact]
    public void GetBufferTextFromTextContainerDoesNotThrow()
    {
        var textImageMock = new Mock<VisualStudio.Text.ITextImage>(MockBehavior.Strict);
        var textSnapshotMock = new Mock<VisualStudio.Text.ITextSnapshot2>(MockBehavior.Strict);
        var bufferMock = new Mock<VisualStudio.Text.ITextBuffer>(MockBehavior.Strict);
 
        textSnapshotMock.SetupGet(s => s.TextImage).Returns(textImageMock.Object);
        textSnapshotMock.SetupGet(s => s.TextBuffer).Returns(bufferMock.Object);
        bufferMock.SetupGet(x => x.CurrentSnapshot).Returns(textSnapshotMock.Object);
        bufferMock.SetupGet(x => x.Properties).Returns(new VisualStudio.Utilities.PropertyCollection());
 
        var textContainer = CodeAnalysis.Text.Extensions.TextBufferContainer.From(bufferMock.Object);
 
        CodeAnalysis.Text.Extensions.GetTextBuffer(textContainer);
    }
}