summaryrefslogtreecommitdiff
path: root/Plugins/MonoGame.Extended/tests/MonoGame.Extended.Tests/Particles/ColourTests.cs
diff options
context:
space:
mode:
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.cs126
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);
+ }
+ }
+ }
+}