Create a (Discord)Color using a string (#2979)

* Create a (Discord)Color using a string

* You made me learn bitwise operators and shifting I am angery now, also AI sucks at this shit

* xmldoc

* Apply suggestions from code review

---------

Co-authored-by: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com>
This commit is contained in:
Adriaan Waem
2024-08-14 21:57:25 +02:00
committed by GitHub
parent 47f98bc01d
commit bc84b94bd9
3 changed files with 129 additions and 0 deletions

View File

@@ -74,6 +74,26 @@ namespace Discord
Assert.Throws<ArgumentOutOfRangeException>(() => new Color(2.0f, 2.0f, 2.0f));
}
[Fact]
public void Color_FromRgb_String_CssHexColor()
{
Assert.Equal(0xFF0000u, Color.Parse("#F00", ColorType.CssHexColor).RawValue);
Assert.Equal(0x22BB44u, Color.Parse("#2B4", ColorType.CssHexColor).RawValue);
Assert.Equal(0xAABBAAu, Color.Parse("FABA", ColorType.CssHexColor).RawValue);
Assert.Equal(0x00F672u, Color.Parse("00F672", ColorType.CssHexColor).RawValue);
Assert.Equal(0x257777u, Color.Parse("0xFF257777", ColorType.CssHexColor).RawValue);
}
[Fact]
public void Color_FromRgb_String_Invalid()
{
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse(" ", ColorType.CssHexColor));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse(null, ColorType.CssHexColor));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse("#F"));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse("F0", ColorType.CssHexColor));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse("FF000"));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse("FF00000"));
Assert.Throws<ArgumentOutOfRangeException>(() => Color.Parse("FF0000000"));
}
[Fact]
public void Color_Red()
{
Assert.Equal(0xAF, new Color(0xAF1390).R);