示例#1
0
        public void XtermColorIndex()
        {
            var surface = new RenderTest();
            var buffer  = new ConsoleBuffer.Buffer(DefaultColumns, DefaultRows);

            for (var i = 0; i < 256; ++i)
            {
                buffer.AppendString($"\x1b[2J\x1b[H\x1b[38;5;{i}mc");
                surface.OnChar = (c, x, y) =>
                {
                    if (c.Glyph != 'c')
                    {
                        return;
                    }
                    Assert.IsTrue(c.ForegroundXterm256);
                    Assert.AreEqual(i, c.ForegroundXterm256Index);
                };
                buffer.Render(surface);

                buffer.AppendString($"\x1b[2J\x1b[H\x1b[48;5;{i}mc");
                surface.OnChar = (c, x, y) =>
                {
                    if (c.Glyph != 'c')
                    {
                        return;
                    }
                    Assert.IsTrue(c.BackgroundXterm256);
                    Assert.AreEqual(i, c.BackgroundXterm256Index);
                };
                buffer.Render(surface);
            }
        }
示例#2
0
        public void DefaultColors()
        {
            var buffer = new ConsoleBuffer.Buffer(DefaultColumns, DefaultRows);

            buffer.AppendString("!");
            var surface = new RenderTest();

            surface.OnChar = (c, x, y) =>
            {
                if (x == 0 && y == 0)
                {
                    Assert.AreEqual(ConsoleBuffer.Commands.SetGraphicsRendition.Colors.White, c.BasicForegroundColor);
                    Assert.AreEqual(ConsoleBuffer.Commands.SetGraphicsRendition.Colors.Black, c.BasicBackgroundColor);
                }
            };
            buffer.Render(surface);
        }
示例#3
0
        public void BasicColor()
        {
            var surface = new RenderTest();
            var buffer  = new ConsoleBuffer.Buffer(DefaultColumns, DefaultRows);

            for (var fg = 0; fg < 16; ++fg)
            {
                for (var bg = 0; bg < 16; ++bg)
                {
                    buffer.AppendString("\x1b[2J\x1b[m");
                    buffer.AppendString("\x1b[");
                    if (fg < 8)
                    {
                        buffer.AppendString($"3{fg}");
                    }
                    else
                    {
                        buffer.AppendString($"9{fg - 8}");
                    }
                    if (bg < 8)
                    {
                        buffer.AppendString($";4{bg}m");
                    }
                    else
                    {
                        buffer.AppendString($";10{bg - 8}m");
                    }
                    buffer.AppendString("c\r\n");

                    surface.OnChar = (c, x, y) =>
                    {
                        if (c.Glyph != 'c')
                        {
                            return;
                        }
                        Assert.AreEqual(fg > 7, c.ForegroundBright);
                        Assert.AreEqual(bg > 7, c.BackgroundBright);
                        Assert.AreEqual((ConsoleBuffer.Commands.SetGraphicsRendition.Colors)(fg > 7 ? fg - 8 : fg), c.BasicForegroundColor);
                        Assert.AreEqual((ConsoleBuffer.Commands.SetGraphicsRendition.Colors)(bg > 7 ? bg - 8 : bg), c.BasicBackgroundColor);
                    };

                    buffer.Render(surface);
                }
            }
        }
示例#4
0
        public void BrightForegroundText()
        {
            var buffer = new ConsoleBuffer.Buffer(DefaultColumns, DefaultRows);

            buffer.AppendString("\x1b[1mbb\x1b[22mn\x1b[1mb\x1b[22mnnnn\n");
            var surface = new RenderTest();

            surface.OnChar = (c, x, y) =>
            {
                if (c.Glyph == 'b')
                {
                    Assert.IsTrue(c.ForegroundBright);
                }
                if (c.Glyph == 'n')
                {
                    Assert.IsFalse(c.ForegroundBright);
                }
            };
            buffer.Render(surface);
        }