示例#1
0
        /// <summary>
        /// Gives a hash code based on the normalized version string.
        /// </summary>
        public int GetHashCode(SimpleVersion obj)
        {
            if (Object.ReferenceEquals(obj, null))
            {
                return(0);
            }

            string verString = string.Empty;

            VersionFormatter formatter = new VersionFormatter();

            if (_mode == VersionComparison.Default || _mode == VersionComparison.VersionRelease)
            {
                verString = obj.ToString("V-R", formatter).ToUpperInvariant();
            }
            else if (_mode == VersionComparison.Version)
            {
                verString = obj.ToString("V", formatter);
            }
            else if (_mode == VersionComparison.VersionReleaseMetadata)
            {
                verString = String.Format(CultureInfo.InvariantCulture, "{0}+{1}",
                                          obj.ToString("V-R", formatter).ToUpperInvariant(),
                                          obj.ToString("M", formatter));
            }

            if (String.IsNullOrEmpty(verString))
            {
                verString = obj.ToNormalizedString().ToUpperInvariant();
            }

            return(verString.GetHashCode());
        }
示例#2
0
        /// <summary>
        /// Gives a hash code based on the normalized version string.
        /// </summary>
        public int GetHashCode(SimpleVersion obj)
        {
            if (Object.ReferenceEquals(obj, null))
            {
                return 0;
            }

            string verString = string.Empty;

            VersionFormatter formatter = new VersionFormatter();

            if (_mode == VersionComparison.Default || _mode == VersionComparison.VersionRelease)
            {
                verString = obj.ToString("V-R", formatter).ToUpperInvariant();
            }
            else if (_mode == VersionComparison.Version)
            {
                verString = obj.ToString("V", formatter);
            }
            else if (_mode == VersionComparison.VersionReleaseMetadata)
            {
                verString = String.Format(CultureInfo.InvariantCulture, "{0}+{1}",
                    obj.ToString("V-R", formatter).ToUpperInvariant(),
                    obj.ToString("M", formatter));
            }

            if (String.IsNullOrEmpty(verString))
            {
                verString = obj.ToNormalizedString().ToUpperInvariant();
            }

            return verString.GetHashCode();
        }
        public void FormatVersionTest(string versionString, string expected)
        {
            // arrange
            VersionFormatter formatter = new VersionFormatter();
            NuGetVersion version = NuGetVersion.Parse(versionString);

            // act
            string s = String.Format(formatter, "{0:V}", version);
            string s2 = version.ToString("V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }
        private static string GetToString(VersionRange range)
        {
            string           s = null;
            VersionFormatter versionFormatter = new VersionFormatter();

            if (range.HasLowerBound && range.IsMinInclusive && !range.HasUpperBound)
            {
                s = String.Format(versionFormatter, "{0:N}", range.MinVersion);
            }
            else if (range.HasLowerAndUpperBounds && range.IsMinInclusive && range.IsMaxInclusive &&
                     range.MinVersion.Equals(range.MaxVersion))
            {
                // TODO: Does this need a specific version comparision? Does metadata matter?

                s = String.Format(versionFormatter, "[{0:N}]", range.MinVersion);
            }
            else
            {
                StringBuilder sb = new StringBuilder();

                sb.Append(range.HasLowerBound && range.IsMinInclusive ? '[' : '(');

                if (range.HasLowerBound)
                {
                    sb.AppendFormat(versionFormatter, "{0:N}", range.MinVersion);
                }

                sb.Append(", ");

                if (range.HasUpperBound)
                {
                    sb.AppendFormat(versionFormatter, "{0:N}", range.MaxVersion);
                }

                sb.Append(range.HasUpperBound && range.IsMaxInclusive ? ']' : ')');

                s = sb.ToString();
            }

            return(s);
        }
示例#5
0
 public VersionRangeFormatter()
 {
     _versionFormatter = new VersionFormatter();
 }
示例#6
0
 public VersionRangeFormatter()
 {
     _versionFormatter = new VersionFormatter();
 }
 /// <summary>
 /// Custom version range format provider.
 /// </summary>
 public VersionRangeFormatter()
 {
     _versionFormatter = VersionFormatter.Instance;
 }
        /// <summary>
        /// A pretty print representation of the VersionRange.
        /// </summary>
        private static string PrettyPrint(VersionRange range)
        {
            StringBuilder    sb = new StringBuilder("(");
            VersionFormatter versionFormatter = new VersionFormatter();

            // no upper
            if (range.HasLowerBound && !range.HasUpperBound)
            {
                sb.Append(GreaterThanOrEqualTo);
                sb.AppendFormat(versionFormatter, " {0:N}", range.MinVersion);
            }
            // single version
            else if (range.HasLowerAndUpperBounds && range.MaxVersion.Equals(range.MinVersion) && range.IsMinInclusive && range.IsMaxInclusive)
            {
                sb.AppendFormat(versionFormatter, "= {0:N}", range.MinVersion);
            }
            else // normal range
            {
                if (range.HasLowerBound)
                {
                    if (range.IsMinInclusive)
                    {
                        sb.AppendFormat(CultureInfo.InvariantCulture, "{0} ", GreaterThanOrEqualTo);
                    }
                    else
                    {
                        sb.Append("> ");
                    }

                    sb.AppendFormat(versionFormatter, "{0:N}", range.MinVersion);
                }

                if (range.HasLowerAndUpperBounds)
                {
                    sb.Append(" && ");
                }

                if (range.HasUpperBound)
                {
                    if (range.IsMaxInclusive)
                    {
                        sb.AppendFormat(CultureInfo.InvariantCulture, "{0} ", LessThanOrEqualTo);
                    }
                    else
                    {
                        sb.Append("< ");
                    }

                    sb.AppendFormat(versionFormatter, "{0:N}", range.MaxVersion);
                }
            }

            sb.Append(")");

            // avoid ()
            if (sb.Length == 2)
            {
                sb.Clear();
            }

            return(sb.ToString());
        }
示例#9
0
        private static string GetToString(VersionRange range)
        {
            string s = null;
            VersionFormatter versionFormatter = new VersionFormatter();

            if (range.HasLowerBound && range.IsMinInclusive && !range.HasUpperBound)
            {
                s = String.Format(versionFormatter, "{0:N}", range.MinVersion);
            }
            else if(range.HasLowerAndUpperBounds && range.IsMinInclusive && range.IsMaxInclusive &&
                range.MinVersion.Equals(range.MaxVersion))
            {
                // TODO: Does this need a specific version comparision? Does metadata matter?

                s = String.Format(versionFormatter, "[{0:N}]", range.MinVersion);
            }
            else
            {
                StringBuilder sb = new StringBuilder();

                sb.Append(range.HasLowerBound && range.IsMinInclusive ? '[' : '(');

                if (range.HasLowerBound)
                {
                    sb.AppendFormat(versionFormatter, "{0:N}", range.MinVersion);
                }

                sb.Append(", ");

                if (range.HasUpperBound)
                {
                    sb.AppendFormat(versionFormatter, "{0:N}", range.MaxVersion);
                }

                sb.Append(range.HasUpperBound && range.IsMaxInclusive ? ']' : ')');

                s = sb.ToString();
            }

            return s;
        }
示例#10
0
        /// <summary>
        /// A pretty print representation of the VersionRange.
        /// </summary>
        private static string PrettyPrint(VersionRange range)
        {
            StringBuilder sb = new StringBuilder("(");
            VersionFormatter versionFormatter = new VersionFormatter();

            // no upper
            if (range.HasLowerBound && !range.HasUpperBound)
            {
                sb.Append(GreaterThanOrEqualTo);
                sb.AppendFormat(versionFormatter, " {0:N}", range.MinVersion);
            }
            // single version
            else if (range.HasLowerAndUpperBounds && range.MaxVersion.Equals(range.MinVersion) && range.IsMinInclusive && range.IsMaxInclusive)
            {
                sb.AppendFormat(versionFormatter, "= {0:N}", range.MinVersion);
            }
            else // normal range
            {
                if (range.HasLowerBound)
                {
                    if (range.IsMinInclusive)
                    {
                        sb.AppendFormat(CultureInfo.InvariantCulture, "{0} ", GreaterThanOrEqualTo);
                    }
                    else
                    {
                        sb.Append("> ");
                    }

                    sb.AppendFormat(versionFormatter, "{0:N}", range.MinVersion);
                }

                if (range.HasLowerAndUpperBounds)
                {
                    sb.Append(" && ");
                }

                if(range.HasUpperBound)
                {
                    if (range.IsMaxInclusive)
                    {
                        sb.AppendFormat(CultureInfo.InvariantCulture, "{0} ", LessThanOrEqualTo);
                    }
                    else
                    {
                        sb.Append("< ");
                    }

                    sb.AppendFormat(versionFormatter, "{0:N}", range.MaxVersion);
                }
            }

            sb.Append(")");

            // avoid ()
            if (sb.Length == 2)
            {
                sb.Clear();
            }

            return sb.ToString();
        }
        public void FormatComplexTest(string versionString, string expected)
        {
            // arrange
            VersionFormatter formatter = new VersionFormatter();
            NuGetVersion version = NuGetVersion.Parse(versionString);

            // act
            string s = String.Format(formatter, "{0:x}.{0:x}.{0:y}.{0:z}.{0:r}({0:M})*{0:R}: {0:V}", version, version, version, version, version, version, version, version);
            string s2 = version.ToString("x.x.y.z.r(M)*R: V", formatter);

            // assert
            Assert.Equal(expected, s);
            Assert.Equal(expected, s2);
        }