示例#1
0
        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();
        }
示例#3
0
    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());
    }
示例#4
0
    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());
        }