HslColorTests.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. using System;
  2. using Microsoft.Xna.Framework;
  3. using Xunit;
  4. namespace MonoGame.Extended.Tests
  5. {
  6. public class HslColorTests
  7. {
  8. public class Constructor
  9. {
  10. [Fact]
  11. public void WhenGivenValues_ReturnsInitializedColour()
  12. {
  13. var colour = new HslColor(1f, 1f, 1f);
  14. Assert.Equal(1f, colour.H);
  15. Assert.Equal(1f, colour.S);
  16. Assert.Equal(1f, colour.L);
  17. }
  18. }
  19. public class AreEqualColourMethod
  20. {
  21. [Fact]
  22. public void WhenGivenEqualValues_ReturnsTrue()
  23. {
  24. var x = new HslColor(360f, 1f, 1f);
  25. var y = new HslColor(360f, 1f, 1f);
  26. Assert.Equal(x, y);
  27. }
  28. [Fact]
  29. public void WhenGivenDifferentValues_ReturnsFalse()
  30. {
  31. var x = new HslColor(0f, 1f, 0f);
  32. var y = new HslColor(360f, 1f, 1f);
  33. Assert.False(x.Equals(y));
  34. }
  35. }
  36. public class AreEqualObjectMethod
  37. {
  38. [Fact]
  39. public void WhenGivenEqualColour_ReturnsTrue()
  40. {
  41. var x = new HslColor(360f, 1f, 1f);
  42. object y = new HslColor(360f, 1f, 1f);
  43. Assert.Equal(x, y);
  44. }
  45. [Fact]
  46. public void WhenGivenDifferentColour_ReturnsFalse()
  47. {
  48. var x = new HslColor(360f, 1f, 1f);
  49. object y = new HslColor(0f, 1f, 0f);
  50. Assert.False(x.Equals(y));
  51. }
  52. [Fact]
  53. public void WhenGivenObjectOfAntotherType_ReturnsFalse()
  54. {
  55. var colour = new HslColor(360f, 1f, 1f);
  56. // ReSharper disable once SuspiciousTypeConversion.Global
  57. Assert.False(colour.Equals(DateTime.Now));
  58. }
  59. }
  60. public class GetHashCodeMethod
  61. {
  62. [Fact]
  63. public void WhenObjectsAreDifferent_YieldsDifferentHashCodes()
  64. {
  65. var x = new HslColor(0f, 1f, 0f);
  66. var y = new HslColor(360f, 1f, 1f);
  67. Assert.NotEqual(x.GetHashCode(), y.GetHashCode());
  68. }
  69. [Fact]
  70. public void WhenObjectsAreSame_YieldsIdenticalHashCodes()
  71. {
  72. var x = new HslColor(180f, 0.5f, 0.5f);
  73. var y = new HslColor(180f, 0.5f, 0.5f);
  74. Assert.Equal(x.GetHashCode(), y.GetHashCode());
  75. }
  76. }
  77. public class ToStringMethod
  78. {
  79. [Theory]
  80. [InlineData(360f, 1f, 1f, "H:360.0° S:100.0 L:100.0")]
  81. [InlineData(180f, 0.5f, 0.5f, "H:180.0° S:50.0 L:50.0")]
  82. [InlineData(0f, 0f, 0f, "H:0.0° S:0.0 L:0.0")]
  83. public void ReturnsCorrectValue(float h, float s, float l, string expected)
  84. {
  85. var colour = new HslColor(h, s, l);
  86. Assert.Equal(expected, colour.ToString());
  87. }
  88. }
  89. public class ToRgbMethod
  90. {
  91. [Theory]
  92. [InlineData(0f, 1f, 0.5f, "{R:255 G:0 B:0 A:255}")] // Color.Red
  93. [InlineData(360f, 1f, 0.5f, "{R:255 G:0 B:0 A:255}")] // Color.Red
  94. [InlineData(120f, 1f, 0.5f, "{R:0 G:255 B:0 A:255}")] // Color.Lime
  95. public void ReturnsCorrectValue(float h, float s, float l, string expected)
  96. {
  97. var hslColour = new HslColor(h, s, l);
  98. Color rgbColor = hslColour.ToRgb();
  99. Assert.Equal(expected, rgbColor.ToString());
  100. }
  101. [Fact]
  102. public void FromRgbAndToRgbWorksCorrectly()
  103. {
  104. HslColor blueHsl = HslColor.FromRgb(Color.Blue);
  105. Color blueRgb = blueHsl.ToRgb();
  106. Assert.Equal(Color.Blue, blueRgb);
  107. }
  108. }
  109. }
  110. }