public void Equals_EqualValues() { // Arrange var(start, end) = Fixture.Create <LocalDateTime>((x, y) => x < y); var interval1 = new DateTimeInterval(start, end); var interval2 = new DateTimeInterval(start, end); // Assert interval1.Should().Be(interval2); interval1.GetHashCode().Should().Be(interval2.GetHashCode()); (interval1 == interval2).Should().BeTrue(); (interval1 != interval2).Should().BeFalse(); interval1.Equals(interval2).Should().BeTrue(); // IEquatable implementation }
public void Equals_DifferentEnd() { // Arrange var start = Fixture.Create <LocalDateTime>(); var end1 = Fixture.Create <LocalDateTime>(x => start <= x); var end2 = Fixture.Create <LocalDateTime>(x => start <= x); var interval1 = new DateTimeInterval(start, end1); var interval2 = new DateTimeInterval(start, end2); // Assert interval1.Should().NotBe(interval2); interval1.GetHashCode().Should().NotBe(interval2.GetHashCode()); (interval1 == interval2).Should().BeFalse(); (interval1 != interval2).Should().BeTrue(); interval1.Equals(interval2).Should().BeFalse(); // IEquatable implementation }
public void Equals_DifferentCalendars() { // Arrange var(start1, end1) = Fixture.Create <LocalDateTime>((x, y) => x < y); var interval1 = new DateTimeInterval(start1, end1); // This is a really, really similar calendar to ISO, but we do distinguish. var start2 = start1.WithCalendar(CalendarSystem.Gregorian); var end2 = end1.WithCalendar(CalendarSystem.Gregorian); var interval2 = new DateTimeInterval(start2, end2); // Assert interval1.Should().NotBe(interval2); interval1.GetHashCode().Should().NotBe(interval2.GetHashCode()); (interval1 == interval2).Should().BeFalse(); (interval1 != interval2).Should().BeTrue(); interval1.Equals(interval2).Should().BeFalse(); // IEquatable implementation }