Пример #1
0
        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();
        }
    public void HashCodes()
    {
        var sv12a = new SemanticVersion(new Version(1, 2), null);
        var sv12b = new SemanticVersion(new Version(1, 2), null);
        Assert.Equal(sv12a.GetHashCode(), sv12b.GetHashCode());

        var sv13 = new SemanticVersion(new Version(1, 3), null);
        Assert.NotEqual(sv12a.GetHashCode(), sv13.GetHashCode());
    }
    public void HashCodes()
    {
        var sv12a = new SemanticVersion(new Version(1, 2), null);
        var sv12b = new SemanticVersion(new Version(1, 2), null);

        Assert.Equal(sv12a.GetHashCode(), sv12b.GetHashCode());

        var sv13 = new SemanticVersion(new Version(1, 3), null);

        Assert.NotEqual(sv12a.GetHashCode(), sv13.GetHashCode());
    }
Пример #4
0
        public void GetHashCodeNotEqualNoBuildNoPrerelease()
        {
            SemanticVersion left  = new SemanticVersion(1, 0, 0);
            SemanticVersion right = new SemanticVersion(2, 0, 0);

            Assert.NotEqual(left.GetHashCode(), right.GetHashCode());
        }
Пример #5
0
        public void GetHashCodeNotEqual()
        {
            SemanticVersion left  = new SemanticVersion(1, 0, 0, "foo", "bar");
            SemanticVersion right = new SemanticVersion(2, 0, 0, "foo", "bar");

            Assert.NotEqual(left.GetHashCode(), right.GetHashCode());
        }
        public void GetHashCodeNotEqualNoBuildNoPrerelease()
        {
            SemanticVersion left = new SemanticVersion(1, 0, 0);
            SemanticVersion right = new SemanticVersion(2, 0, 0);

            Assert.NotEqual(left.GetHashCode(), right.GetHashCode());
        }
        public void GetHashCodeNotEqual()
        {
            SemanticVersion left = new SemanticVersion(1, 0, 0, "foo", "bar");
            SemanticVersion right = new SemanticVersion(2, 0, 0, "foo", "bar");

            Assert.NotEqual(left.GetHashCode(), right.GetHashCode());
        }
Пример #8
0
        public void Operator_DifferentValues(SemanticVersion left, SemanticVersion right)
        {
            Assert.Equal(left.GetHashCode(), left.GetHashCode());
            Assert.Equal(right.GetHashCode(), right.GetHashCode());
            Assert.Equal(left, left);
            Assert.Equal(right, right);

            Assert.NotEqual(left, right);
            Assert.NotEqual(left.GetHashCode(), right.GetHashCode());
            Assert.False(left == right);
            Assert.True(left != right);

            Assert.True(left < right);
            Assert.True(left <= right);

            Assert.False(left > right);
            Assert.False(left >= right);
        }
        public void NormalTypeHashCodeVerification(ushort major, ushort minor, ushort patch)
        {
            var semVer = new SemanticVersion(major, minor, patch);

            var expected = GetSemVerHashCode(semVer);

            var actual = semVer.GetHashCode();

            Assert.Equal(expected, actual);
        }
        public void SpecialTypeHashCodeVerification(SemanticVersionType semVerType, ushort major, ushort minor, ushort patch,
            string[] specialParts)
        {
            var semVer = new SemanticVersion(major, minor, patch, specialParts, semVerType);

            var expected = GetSemVerHashCode(semVer);

            var actual = semVer.GetHashCode();

            Assert.Equal(expected, actual);
        }
Пример #11
0
        public void SemanticVersionStrictEqualityPreRelease(string versionString)
        {
            // Act
            SemanticVersion main = null;

            SemanticVersion.TryParseStrict("1.2.3-alpha", out main);

            SemanticVersion semVer = null;

            SemanticVersion.TryParseStrict(versionString, out semVer);

            // Assert
            Assert.True(main.Equals(semVer));
            Assert.True(semVer.Equals(main));

            Assert.True(main.GetHashCode() == semVer.GetHashCode());
        }
Пример #12
0
        public override int GetHashCode()
        {
            int result = 17;

            unchecked
            {
                if (Name != null)
                {
                    result = (result * 31) + Name.GetHashCode();
                }

                if (FullName != null)
                {
                    result = (result * 31) + FullName.GetHashCode();
                }

                if (Version != null)
                {
                    result = (result * 31) + Version.GetHashCode();
                }

                if (SemanticVersion != null)
                {
                    result = (result * 31) + SemanticVersion.GetHashCode();
                }

                if (FileVersion != null)
                {
                    result = (result * 31) + FileVersion.GetHashCode();
                }

                if (Properties != null)
                {
                    // Use xor for dictionaries to be order-independent.
                    int xor_0 = 0;
                    foreach (var value_0 in Properties)
                    {
                        xor_0 ^= value_0.Key.GetHashCode();
                        if (value_0.Value != null)
                        {
                            xor_0 ^= value_0.Value.GetHashCode();
                        }
                    }

                    result = (result * 31) + xor_0;
                }

                if (Tags != null)
                {
                    foreach (var value_1 in Tags)
                    {
                        result = result * 31;
                        if (value_1 != null)
                        {
                            result = (result * 31) + value_1.GetHashCode();
                        }
                    }
                }
            }

            return(result);
        }
 /// <summary>Serves as the default hash function. </summary>
 /// <returns>A hash code for the current object.</returns>
 public override int GetHashCode()
 {
     unchecked
     {
         return(((_versionWithTokens != null ? _versionWithTokens.GetHashCode() : 0) * 397) ^ (_version != null ? _version.GetHashCode() : 0));
     }
 }
Пример #14
0
 public override int GetHashCode()
 {
     return(_packageId.GetHashCode() * 3137 + _version.GetHashCode());
 }
Пример #15
0
        public void GetHashCodeTest()
        {
            SemanticVersion o = new SemanticVersion(4, 2, 1, new PreRelease(PreReleaseStage.ALPHA, 3), 45);
            SemanticVersion v = o;

            Assert.Equal(o.GetHashCode(), v.GetHashCode());

            v = new SemanticVersion(4, 2, 1, new PreRelease(PreReleaseStage.ALPHA, 3), 45);
            Assert.Equal(o.GetHashCode(), v.GetHashCode());
        }