File: Extensions\ITextExtensionsTests.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 Microsoft.CodeAnalysis.Shared.Extensions;
using Microsoft.CodeAnalysis.Text;
using Xunit;
 
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Extensions;
 
public class ITextExtensionsTests
{
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_EmptyLineReturnsEmptyString()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition(string.Empty, 0);
        Assert.Equal(string.Empty, leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceLineReturnsWhitespace1()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("    ", 0);
        Assert.Equal("    ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceLineReturnsWhitespace2()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("\t\t", 0);
        Assert.Equal("\t\t", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceLineReturnsWhitespace3()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition(" \t ", 0);
        Assert.Equal(" \t ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextLine()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo", 0);
        Assert.Equal(string.Empty, leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextLineStartingWithWhitespace1()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("    Goo", 0);
        Assert.Equal("    ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextLineStartingWithWhitespace2()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("\t\tGoo", 0);
        Assert.Equal("\t\t", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextLineStartingWithWhitespace3()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition(" \t Goo", 0);
        Assert.Equal(" \t ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_EmptySecondLineReturnsEmptyString()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n", 5);
        Assert.Equal(string.Empty, leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceSecondLineReturnsWhitespace1()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n    ", 5);
        Assert.Equal("    ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceSecondLineReturnsWhitespace2()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n\t\t", 5);
        Assert.Equal("\t\t", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_WhitespaceSecondLineReturnsWhitespace3()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n \t ", 5);
        Assert.Equal(" \t ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextSecondLine()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\nGoo", 5);
        Assert.Equal(string.Empty, leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextSecondLineStartingWithWhitespace1()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n    Goo", 5);
        Assert.Equal("    ", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextSecondLineStartingWithWhitespace2()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n\t\tGoo", 5);
        Assert.Equal("\t\t", leadingWhitespace);
    }
 
    [Fact]
    public void GetLeadingWhitespaceOfLineAtPosition_TextSecondLineStartingWithWhitespace3()
    {
        var leadingWhitespace = GetLeadingWhitespaceOfLineAtPosition("Goo\r\n \t Goo", 5);
        Assert.Equal(" \t ", leadingWhitespace);
    }
 
    private static string GetLeadingWhitespaceOfLineAtPosition(string code, int position)
    {
        var text = SourceText.From(code);
        return text.GetLeadingWhitespaceOfLineAtPosition(position);
    }
}