Skip to content

Commit

Permalink
Make color equality exact
Browse files Browse the repository at this point in the history
  • Loading branch information
ElectroJr committed Jun 23, 2024
1 parent e2cf4ee commit eeca1f6
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 13 deletions.
2 changes: 1 addition & 1 deletion RELEASE-NOTES.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ END TEMPLATE-->

### Breaking changes

*None yet*
* The `Color` struct's equality methods now check for exact equality. Use `MathHelper.CloseToPercent(Color, Color)` for the previous functionality.

### New features

Expand Down
7 changes: 1 addition & 6 deletions Robust.Shared.Maths/Color.cs
Original file line number Diff line number Diff line change
Expand Up @@ -997,12 +997,7 @@ public readonly string ToHexNoAlpha()
/// <param name="other">The Color structure to compare to.</param>
/// <returns>True if both Color structures contain the same components; false otherwise.</returns>
public readonly bool Equals(Color other)
{
// TODO COLOR why is this approximate
// This method literally doesn't do what its docstring says it does.
// If people wanted approximate equality, they can check that manually.
return MathHelper.CloseToPercent(this, other);
}
=> RGBA == other.RGBA;

[PublicAPI]
public enum BlendFactor : byte
Expand Down
12 changes: 6 additions & 6 deletions Robust.UnitTesting/Shared/Maths/Color_Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ public void ToFromSrgb([ValueSource(nameof(FourFloatsSource))] (float, float, fl
var controlColor = new Color(rf, gf, bf, af);
var color = Color.FromSrgb(Color.ToSrgb(controlColor));

Assert.That(color, Is.EqualTo(controlColor));
Assert.That(MathHelper.CloseToPercent(color, controlColor));
}

[Test]
Expand All @@ -355,7 +355,7 @@ public void ToFromHsl([ValueSource(nameof(FourFloatsSource))] (float, float, flo
var controlColor = new Color(rf, gf, bf, af);
var color = Color.FromHsl(Color.ToHsl(controlColor));

Assert.That(color, Is.EqualTo(controlColor));
Assert.That(MathHelper.CloseToPercent(color, controlColor));
}

[Test]
Expand All @@ -366,7 +366,7 @@ public void ToFromHsv([ValueSource(nameof(FourFloatsSource))] (float, float, flo
var controlColor = new Color(rf, gf, bf, af);
var color = Color.FromHsv(Color.ToHsv(controlColor));

Assert.That(color, Is.EqualTo(controlColor));
Assert.That(MathHelper.CloseToPercent(color, controlColor));
}

[Test]
Expand All @@ -393,7 +393,7 @@ public void ToFromYcbcr([ValueSource(nameof(FourFloatsSource))] (float, float, f
var controlColor = new Color(rf, gf, bf, af);
var color = Color.FromYcbcr(Color.ToYcbcr(controlColor));

Assert.That(color, Is.EqualTo(controlColor));
Assert.That(MathHelper.CloseToPercent(color, controlColor));
}

[Test]
Expand All @@ -404,7 +404,7 @@ public void ToFromHcy([ValueSource(nameof(FourFloatsSource))] (float, float, flo
var controlColor = new Color(rf, gf, bf, af);
var color = Color.FromHcy(Color.ToHcy(controlColor));

Assert.That(color, Is.EqualTo(controlColor));
Assert.That(MathHelper.CloseToPercent(color, controlColor));
}

static IEnumerable<float> InterpolationValues => new float[]
Expand All @@ -430,7 +430,7 @@ public void InterpolateBetween([ValueSource(nameof(FourFloatsSource))] (float, f
var interColor = Color.InterpolateBetween(color1, color2, interpolation);
var inverseInterColor = Color.InterpolateBetween(color2, color1, 1 - interpolation);

Assert.That(interColor, Is.EqualTo(inverseInterColor));
Assert.That(MathHelper.CloseToPercent(interColor, inverseInterColor));
}

[Test]
Expand Down

0 comments on commit eeca1f6

Please sign in to comment.