ColorHelperTests.cs 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. // Copyright (c) Craftwork Games. All rights reserved.
  2. // Licensed under the MIT license.
  3. // See LICENSE file in the project root for full license information.
  4. using System;
  5. using Microsoft.Xna.Framework;
  6. namespace MonoGame.Extended.Tests;
  7. public class ColorHelperTests
  8. {
  9. public class FromHex
  10. {
  11. [Theory]
  12. [InlineData("#00000000", 0, 0, 0, 0)]
  13. [InlineData("#FFFFFFFF", 255, 255, 255, 255)]
  14. [InlineData("#AABBCCFF", 170, 187, 204, 255)]
  15. public void LengthEight_WithPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  16. {
  17. Color expected = new Color(r, g, b, a);
  18. Color actual = ColorHelper.FromHex(hex);
  19. Assert.Equal(expected, actual);
  20. }
  21. [Theory]
  22. [InlineData("#000000", 0, 0, 0, 255)]
  23. [InlineData("#FFFFFF", 255, 255, 255, 255)]
  24. [InlineData("#AABBCC", 170, 187, 204, 255)]
  25. public void LengthSix_WithPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  26. {
  27. Color expected = new Color(r, g, b, a);
  28. Color actual = ColorHelper.FromHex(hex);
  29. Assert.Equal(expected, actual);
  30. }
  31. [Theory]
  32. [InlineData("#000", 0, 0, 0, 255)]
  33. [InlineData("#FFF", 255, 255, 255, 255)]
  34. [InlineData("#ABC", 170, 187, 204, 255)]
  35. public void LengthThree_WithPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  36. {
  37. Color expected = new Color(r, g, b, a);
  38. Color actual = ColorHelper.FromHex(hex);
  39. Assert.Equal(expected, actual);
  40. }
  41. [Theory]
  42. [InlineData("00000000", 0, 0, 0, 0)]
  43. [InlineData("FFFFFFFF", 255, 255, 255, 255)]
  44. [InlineData("AABBCCFF", 170, 187, 204, 255)]
  45. public void LengthEight_WithoutPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  46. {
  47. Color expected = new Color(r, g, b, a);
  48. Color actual = ColorHelper.FromHex(hex);
  49. Assert.Equal(expected, actual);
  50. }
  51. [Theory]
  52. [InlineData("000000", 0, 0, 0, 255)]
  53. [InlineData("FFFFFF", 255, 255, 255, 255)]
  54. [InlineData("AABBCC", 170, 187, 204, 255)]
  55. public void LengthSix_WithoutPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  56. {
  57. Color expected = new Color(r, g, b, a);
  58. Color actual = ColorHelper.FromHex(hex);
  59. Assert.Equal(expected, actual);
  60. }
  61. [Theory]
  62. [InlineData("000", 0, 0, 0, 255)]
  63. [InlineData("FFF", 255, 255, 255, 255)]
  64. [InlineData("ABC", 170, 187, 204, 255)]
  65. public void LengthThree_WithoutPrefix_ReturnsCorrectColor(string hex, int r, int g, int b, int a)
  66. {
  67. Color expected = new Color(r, g, b, a);
  68. Color actual = ColorHelper.FromHex(hex);
  69. Assert.Equal(expected, actual);
  70. }
  71. [Fact]
  72. public void Empty_ReturnsTransparent()
  73. {
  74. Color expected = Color.Transparent;
  75. Color actual = ColorHelper.FromHex(string.Empty);
  76. Assert.Equal(expected, actual);
  77. }
  78. [Fact]
  79. public void InvalidLength_ThrowsArgumentException()
  80. {
  81. string lengthOne = "0";
  82. string lengthTwo = "00";
  83. string lengthFive = "00000";
  84. string lengthSeven = "0000000";
  85. string lengthNine = "000000000";
  86. Assert.Throws<ArgumentException>(() => ColorHelper.FromHex(lengthOne));
  87. Assert.Throws<ArgumentException>(() => ColorHelper.FromHex(lengthTwo));
  88. Assert.Throws<ArgumentException>(() => ColorHelper.FromHex(lengthFive));
  89. Assert.Throws<ArgumentException>(() => ColorHelper.FromHex(lengthSeven));
  90. Assert.Throws<ArgumentException>(() => ColorHelper.FromHex(lengthNine));
  91. }
  92. }
  93. }