diff options
Diffstat (limited to 'Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs')
-rw-r--r-- | Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs | 126 |
1 files changed, 126 insertions, 0 deletions
diff --git a/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs new file mode 100644 index 0000000..49b5e03 --- /dev/null +++ b/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs @@ -0,0 +1,126 @@ +using System; +using Microsoft.Xna.Framework; +using Xunit; + +namespace MonoGame.Extended.Tests.Particles +{ + public class ColourTests + { + public class Constructor + { + [Fact] + public void WhenGivenValues_ReturnsInitializedColour() + { + var colour = new HslColor(1f, 1f, 1f); + Assert.Equal(1f, colour.H); + Assert.Equal(1f, colour.S); + Assert.Equal(1f, colour.L); + } + } + + public class AreEqualColourMethod + { + [Fact] + public void WhenGivenEqualValues_ReturnsTrue() + { + var x = new HslColor(360f, 1f, 1f); + var y = new HslColor(360f, 1f, 1f); + Assert.Equal(x, y); + } + + [Fact] + public void WhenGivenDifferentValues_ReturnsFalse() + { + var x = new HslColor(0f, 1f, 0f); + var y = new HslColor(360f, 1f, 1f); + Assert.False(x.Equals(y)); + } + } + + public class AreEqualObjectMethod + { + [Fact] + public void WhenGivenEqualColour_ReturnsTrue() + { + var x = new HslColor(360f, 1f, 1f); + + Object y = new HslColor(360f, 1f, 1f); + Assert.Equal(x, y); + } + + [Fact] + public void WhenGivenDifferentColour_ReturnsFalse() + { + var x = new HslColor(360f, 1f, 1f); + + Object y = new HslColor(0f, 1f, 0f); + Assert.False(x.Equals(y)); + } + + [Fact] + public void WhenGivenObjectOfAntotherType_ReturnsFalse() + { + var colour = new HslColor(360f, 1f, 1f); + + // ReSharper disable once SuspiciousTypeConversion.Global + Assert.False(colour.Equals(DateTime.Now)); + } + } + + public class GetHashCodeMethod + { + [Fact] + public void WhenObjectsAreDifferent_YieldsDifferentHashCodes() + { + var x = new HslColor(0f, 1f, 0f); + var y = new HslColor(360f, 1f, 1f); + Assert.NotEqual(x.GetHashCode(), y.GetHashCode()); + } + + [Fact] + public void WhenObjectsAreSame_YieldsIdenticalHashCodes() + { + var x = new HslColor(180f, 0.5f, 0.5f); + var y = new HslColor(180f, 0.5f, 0.5f); + Assert.Equal(x.GetHashCode(), y.GetHashCode()); + } + } + + public class ToStringMethod + { + [Theory] + [InlineData(360f, 1f, 1f, "H:0.0° S:100.0 L:100.0")] + [InlineData(180f, 0.5f, 0.5f, "H:180.0° S:50.0 L:50.0")] + [InlineData(0f, 0f, 0f, "H:0.0° S:0.0 L:0.0")] + public void ReturnsCorrectValue(float h, float s, float l, string expected) + { + var colour = new HslColor(h, s, l); + Assert.Equal(expected, colour.ToString()); + } + } + + public class ToRgbMethod + { + [Theory] + [InlineData(0f, 1f, 0.5f, "{R:255 G:0 B:0 A:255}")] // Color.Red + [InlineData(360f, 1f, 0.5f, "{R:255 G:0 B:0 A:255}")] // Color.Red + [InlineData(120f, 1f, 0.5f, "{R:0 G:255 B:0 A:255}")] // Color.Lime + public void ReturnsCorrectValue(float h, float s, float l, string expected) + { + var hslColour = new HslColor(h, s, l); + Color rgbColor = hslColour.ToRgb(); + + Assert.Equal(expected, rgbColor.ToString()); + } + + [Fact] + public void FromRgbAndToRgbWorksCorrectly() + { + HslColor blueHsl = HslColor.FromRgb(Color.Blue); + Color blueRgb = blueHsl.ToRgb(); + + Assert.Equal(Color.Blue, blueRgb); + } + } + } +} |