public void Should_override_equality_operators()
{
var a = new SemanticVersion(0, 0, 1);
var b = new SemanticVersion(1, 2, 3);
var c = new SemanticVersion(0, 0, 1);
// Equality
(a == c).ShouldBeTrue();
(a == b).ShouldBeFalse();
(a != b).ShouldBeTrue();
a.Equals(c).ShouldBeTrue();
a.Equals(0).ShouldBeFalse();
a.Equals(null).ShouldBeFalse();
a.GetHashCode().ShouldBe(c.GetHashCode());
a.GetHashCode().ShouldNotBe(b.GetHashCode());
// Comparison
(a < b).ShouldBeTrue();
(b < a).ShouldBeFalse();
(a <= c).ShouldBeTrue();
(b <= a).ShouldBeFalse();
(b > a).ShouldBeTrue();
(a > b).ShouldBeFalse();
(a >= c).ShouldBeTrue();
(a >= b).ShouldBeFalse();
}