/// <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()); }
/// <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); }
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()); }
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; }
/// <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); }