using XFESystem.Console; namespace XFESystem.Console.Tests; public sealed class TerminalColorTests { [Theory] [InlineData(ConsoleColor.Black, 0)] [InlineData(ConsoleColor.DarkRed, 1)] [InlineData(ConsoleColor.DarkGreen, 2)] [InlineData(ConsoleColor.DarkYellow, 3)] [InlineData(ConsoleColor.DarkBlue, 4)] [InlineData(ConsoleColor.DarkMagenta, 5)] [InlineData(ConsoleColor.DarkCyan, 6)] [InlineData(ConsoleColor.Gray, 7)] [InlineData(ConsoleColor.DarkGray, 8)] [InlineData(ConsoleColor.Red, 9)] [InlineData(ConsoleColor.Green, 10)] [InlineData(ConsoleColor.Yellow, 11)] [InlineData(ConsoleColor.Blue, 12)] [InlineData(ConsoleColor.Magenta, 13)] [InlineData(ConsoleColor.Cyan, 14)] [InlineData(ConsoleColor.White, 15)] public void ConsoleColorsAreNotMistakenForAnsiPaletteIndices(ConsoleColor color, byte index) { Assert.Equal(TerminalColor.FromIndexed(index), TerminalColor.FromConsoleColor(color)); } [Theory] [InlineData(16, "#000000")] [InlineData(21, "#0000FF")] [InlineData(46, "#00FF00")] [InlineData(196, "#FF0000")] [InlineData(202, "#FF5F00")] [InlineData(231, "#FFFFFF")] [InlineData(232, "#080808")] [InlineData(236, "#303030")] [InlineData(255, "#EEEEEE")] public void IndexedColorCubeAndGrayscaleMatchXterm(byte index, string hex) { Assert.Equal(hex, TerminalColor.FromIndexed(index).Hex); } [Fact] public void InvalidConsoleColorIsRejected() { Assert.Throws(() => TerminalColor.FromConsoleColor((ConsoleColor)16)); } }