public void GetHashCodeTest() { var time0 = new DateTime(2000, 1, 1, 0, 0, 0, DateTimeKind.Utc); var time1 = new DateTime(2015, 12, 31, 0, 0, 0, DateTimeKind.Utc); var range0 = new DateTimeRange(time0, time1); var range1 = new DateTimeRange(time0, time1); var range2 = new DateTimeRange(time0, new DateTime(2016, 1, 1, 0, 0, 0, DateTimeKind.Utc)); Assert.AreNotEqual(0.0, range0.GetHashCode()); Assert.AreEqual(range0.GetHashCode(), range1.GetHashCode()); Assert.AreNotEqual(range0.GetHashCode(), range2.GetHashCode()); }
public void GetHashCode_ShouldReturnUniqueHashCode() { // Arrange. var start = new DateTime(2001, 1, 1, 1, 0, 0, 0, DateTimeKind.Local); var oneMillisecondLater = start.AddMilliseconds(1); var twoMillisecondsLater = start.AddMilliseconds(2); var tomorrow = start.AddDays(1); var nextWeek = start.AddDays(7); var nextYear = start.AddYears(1); var minValue = DateTime.MinValue; var maxValue = DateTime.MaxValue; var oneMillisecondRange = new DateTimeRange(start, oneMillisecondLater); var twoMillisecondRange = new DateTimeRange(start, twoMillisecondsLater); var oneDayRange = new DateTimeRange(start, tomorrow); var oneWeekRange = new DateTimeRange(start, nextWeek); var oneYearRange = new DateTimeRange(start, nextYear); var maxRange = new DateTimeRange(minValue, maxValue); // Act. var results = new Int32[] { oneMillisecondRange.GetHashCode(), twoMillisecondRange.GetHashCode(), oneDayRange.GetHashCode(), oneWeekRange.GetHashCode(), oneYearRange.GetHashCode(), maxRange.GetHashCode() }; // Assert. results.Should().OnlyHaveUniqueItems(); }
public void ReturnDifferentHashForDifferentValues() { var nowTicks = DateTimeOffset.UtcNow.Ticks; var offset = DateTimeOffset.UtcNow.Offset; var a = new DateTimeRange( new DateTimeOffset(nowTicks, offset), new DateTimeOffset(nowTicks + 1, offset)); var b = new DateTimeRange( new DateTimeOffset(nowTicks, offset), new DateTimeOffset(nowTicks + 2, offset)); Assert.AreNotEqual(a.GetHashCode(), b.GetHashCode()); }
public void ReturnEqualHashForIdenticalValues() { var nowTicks = DateTimeOffset.UtcNow.Ticks; var offset = DateTimeOffset.UtcNow.Offset; var a = new DateTimeRange( new DateTimeOffset(nowTicks, offset), new DateTimeOffset(nowTicks + 1, offset)); var b = new DateTimeRange( new DateTimeOffset(nowTicks, offset), new DateTimeOffset(nowTicks + 1, offset)); Assert.AreEqual(a.GetHashCode(), b.GetHashCode()); }
public void HashCodeIsAccurate() { // arrange var start = DateTime.Now.AddDays(-30); var end = DateTime.Now.AddDays(30); var range = new DateTimeRange(start, end); // act var startHash = start.GetHashCode() * 397; var endHash = end.GetHashCode(); var rangeHash = range.GetHashCode(); var areEqual = rangeHash == (startHash ^ endHash); // assert areEqual.Should().BeTrue(); }
public int GetHashCode(object x) { DateTimeRange value = (DateTimeRange)x; return(value.GetHashCode()); }