123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- using System.Text;
- using System.Text.Json;
- namespace Terminal.Gui.ConfigurationTests;
- public class ColorJsonConverterTests
- {
- [Theory]
- [InlineData ("\"#000000\"", 0, 0, 0)]
- public void DeserializesFromHexCode (string hexCode, int r, int g, int b)
- {
- // Arrange
- var expected = new Color (r, g, b);
- // Act
- var actual = JsonSerializer.Deserialize<Color> (
- hexCode,
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- //Assert
- Assert.Equal (expected, actual);
- }
- [Theory]
- [InlineData ("\"rgb(0,0,0)\"", 0, 0, 0)]
- public void DeserializesFromRgb (string rgb, int r, int g, int b)
- {
- // Arrange
- var expected = new Color (r, g, b);
- // Act
- var actual = JsonSerializer.Deserialize<Color> (
- rgb,
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- //Assert
- Assert.Equal (expected, actual);
- }
- [Theory]
- [InlineData (ColorName16.Black, "Black")]
- [InlineData (ColorName16.Blue, "Blue")]
- [InlineData (ColorName16.Green, "Green")]
- [InlineData (ColorName16.Cyan, "Cyan")]
- [InlineData (ColorName16.Gray, "Gray")]
- [InlineData (ColorName16.Red, "Red")]
- [InlineData (ColorName16.Magenta, "Magenta")]
- [InlineData (ColorName16.Yellow, "Yellow")]
- [InlineData (ColorName16.DarkGray, "DarkGray")]
- [InlineData (ColorName16.BrightBlue, "BrightBlue")]
- [InlineData (ColorName16.BrightGreen, "BrightGreen")]
- [InlineData (ColorName16.BrightCyan, "BrightCyan")]
- [InlineData (ColorName16.BrightRed, "BrightRed")]
- [InlineData (ColorName16.BrightMagenta, "BrightMagenta")]
- [InlineData (ColorName16.BrightYellow, "BrightYellow")]
- [InlineData (ColorName16.White, "White")]
- public void SerializesColorName16ValuesAsStrings (ColorName16 colorName, string expectedJson)
- {
- var converter = new ColorJsonConverter ();
- var options = new JsonSerializerOptions { Converters = { converter } };
- string serialized = JsonSerializer.Serialize (new Color (colorName), options);
- Assert.Equal ($"\"{expectedJson}\"", serialized);
- }
- [Theory]
- [InlineData (1, 0, 0, "\"#010000\"")]
- [InlineData (0, 0, 1, "\"#000001\"")]
- public void SerializesToHexCode (int r, int g, int b, string expected)
- {
- // Arrange
- // Act
- string actual = JsonSerializer.Serialize (
- new Color (r, g, b),
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- //Assert
- Assert.Equal (expected, actual);
- }
- [Theory]
- [InlineData ("Black", Color.Black)]
- [InlineData ("Blue", Color.Blue)]
- [InlineData ("BrightBlue", Color.BrightBlue)]
- [InlineData ("BrightCyan", Color.BrightCyan)]
- [InlineData ("BrightGreen", Color.BrightGreen)]
- [InlineData ("BrightMagenta", Color.BrightMagenta)]
- [InlineData ("BrightRed", Color.BrightRed)]
- [InlineData ("BrightYellow", Color.BrightYellow)]
- [InlineData ("Yellow", Color.Yellow)]
- [InlineData ("Cyan", Color.Cyan)]
- [InlineData ("DarkGray", Color.DarkGray)]
- [InlineData ("Gray", Color.Gray)]
- [InlineData ("Green", Color.Green)]
- [InlineData ("Magenta", Color.Magenta)]
- [InlineData ("Red", Color.Red)]
- [InlineData ("White", Color.White)]
- public void TestColorDeserializationFromHumanReadableColorName16 (string colorName, ColorName16 expectedColor)
- {
- // Arrange
- var json = $"\"{colorName}\"";
- // Act
- var actualColor = JsonSerializer.Deserialize<Color> (json, ConfigurationManagerTests._jsonOptions);
- // Assert
- Assert.Equal (new Color (expectedColor), actualColor);
- }
- [Fact]
- public void TestDeserializeColor_Black ()
- {
- // Arrange
- var json = "\"Black\"";
- var expectedColor = new Color ("Black");
- // Act
- var color = JsonSerializer.Deserialize<Color> (
- json,
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- // Assert
- Assert.Equal (expectedColor, color);
- }
- [Fact]
- public void TestDeserializeColor_BrightRed ()
- {
- // Arrange
- var json = "\"BrightRed\"";
- var expectedColor = Color.BrightRed;
- // Act
- var color = JsonSerializer.Deserialize<Color> (
- json,
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- // Assert
- Assert.Equal (expectedColor, color);
- }
- [Fact]
- public void TestSerializeColor_Black ()
- {
- // Arrange
- var expectedJson = "\"Black\"";
- // Act
- string json = JsonSerializer.Serialize (
- new Color (Color.Black),
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- // Assert
- Assert.Equal (expectedJson, json);
- }
- [Fact]
- public void TestSerializeColor_BrightRed ()
- {
- // Arrange
- var expectedJson = "\"BrightRed\"";
- // Act
- string json = JsonSerializer.Serialize (
- new Color (Color.BrightRed),
- new JsonSerializerOptions { Converters = { new ColorJsonConverter () } }
- );
- // Assert
- Assert.Equal (expectedJson, json);
- }
- }
|