XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFESystem

【Rust】XFE系统,基于Rust和汇编

公开
关注 0 Fork 0 Star 0
UTF-8
using XFESystem.Console;
using Xunit;

namespace XFESystem.Console.Tests;

public sealed class TerminalTextWriterTests
{
    [Theory]
    [InlineData("\n")]
    [InlineData("\r\n")]
    public void ParameterlessWriterLinesAlwaysReturnToColumnZero(string hostNewline)
    {
        var buffer = new TerminalBuffer(80, 10);
        using TextWriter writer = new TerminalTextWriter(buffer) { NewLine = hostNewline };
        writer.Write("partial"); writer.WriteLine(); writer.WriteLine("next");
        Assert.Equal("partial", buffer.GetLine(0)); Assert.Equal("next", buffer.GetLine(1));
        Assert.Equal(2, buffer.CursorRow); Assert.Equal(0, buffer.CursorColumn);
    }

    [Fact]
    public void SpanAndInheritedWriterLineOverloadsUseTheSameCrLfOnAnLfHost()
    {
        var buffer = new TerminalBuffer(80, 20);
        using TextWriter writer = new TerminalTextWriter(buffer) { NewLine = "\n" };
        writer.WriteLine("string"); writer.WriteLine("span".AsSpan()); writer.WriteLine(42); writer.WriteLine(true);
        writer.WriteLine('Z'); writer.WriteLine(new[] { 'A', 'B' }); writer.WriteLine(new[] { 'x', 'y', 'z' }, 1, 2);
        writer.WriteLine("format {0}", 7);
        var expected = new[] { "string", "span", "42", "True", "Z", "AB", "yz", "format 7" };
        for (int row = 0; row < expected.Length; row++) Assert.Equal(expected[row], buffer.GetLine(row));
        Assert.Equal(expected.Length, buffer.CursorRow); Assert.Equal(0, buffer.CursorColumn);
    }

    [Fact]
    public void RawApplicationVtLineFeedStillPreservesItsColumn()
    {
        var buffer = new TerminalBuffer(80, 10);
        using var writer = new TerminalTextWriter(buffer) { NewLine = "\n" };
        writer.Write("ab\nc");
        Assert.Equal("ab", buffer.GetLine(0)); Assert.Equal("  c", buffer.GetLine(1));
        Assert.Equal(3, buffer.CursorColumn); writer.WriteLine();
        Assert.Equal(2, buffer.CursorRow); Assert.Equal(0, buffer.CursorColumn);
    }
}