Skip to content

Commit

Permalink
mark old constructor obsolete
Browse files Browse the repository at this point in the history
  • Loading branch information
WalkerCodeRanger committed Mar 19, 2022
1 parent 8cead89 commit 8913fa2
Show file tree
Hide file tree
Showing 8 changed files with 256 additions and 196 deletions.
10 changes: 8 additions & 2 deletions Semver.Benchmarks/NewSemVersion.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,15 @@ public class NewSemVersion
public string Full_Previous() => new Previous.SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;

[Benchmark]
public string Simple_Current() => new SemVersion(1, 2, 3).Prerelease;
public string Simple_Current()
#pragma warning disable CS0618 // Type or member is obsolete
=> new SemVersion(1, 2, 3, "").Prerelease;
#pragma warning restore CS0618 // Type or member is obsolete

[Benchmark]
public string Full_Current() => new SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;
public string Full_Current()
#pragma warning disable CS0618 // Type or member is obsolete
=> new SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;
#pragma warning restore CS0618 // Type or member is obsolete
}
}
18 changes: 18 additions & 0 deletions Semver.Test/SemVersionComparisonTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class SemVersionComparisonTests
{
public static readonly IReadOnlyList<SemVersion> VersionsInOrder = new List<SemVersion>()
{
#pragma warning disable CS0618 // Type or member is obsolete
new SemVersion(-2),
new SemVersion(-1, -1),
new SemVersion(-1),
Expand Down Expand Up @@ -78,6 +79,7 @@ public class SemVersionComparisonTests
new SemVersion(2),
new SemVersion(2, 1),
new SemVersion(2, 1, 1),
#pragma warning restore CS0618 // Type or member is obsolete
}.AsReadOnly();

public static readonly IReadOnlyList<(SemVersion, SemVersion)> VersionPairs =
Expand All @@ -90,7 +92,9 @@ public void EqualsIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v.Equals(identical), v.ToString());
}
}
Expand Down Expand Up @@ -179,7 +183,9 @@ public void GetHashCodeOfEqualTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v.GetHashCode() == identical.GetHashCode(), v.ToString());
}
}
Expand All @@ -199,7 +205,9 @@ public void CompareToIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v.CompareTo(identical) == 0, v.ToString());
}
}
Expand Down Expand Up @@ -324,7 +332,9 @@ public void PrecedenceMatchesIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v.PrecedenceMatches(identical), v.ToString());
}
}
Expand Down Expand Up @@ -393,7 +403,9 @@ public void CompareByPrecedenceIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v.CompareByPrecedence(identical) == 0, v.ToString());
}
}
Expand Down Expand Up @@ -489,7 +501,9 @@ public void EqualsOperatorIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.True(v == identical, v.ToString());
}
}
Expand Down Expand Up @@ -569,7 +583,9 @@ public void NotEqualsOperatorIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.False(v != identical, v.ToString());
}
}
Expand Down Expand Up @@ -649,7 +665,9 @@ public void ComparisonOperatorsIdenticalTest()
foreach (var v in VersionsInOrder)
{
// Construct an identical version, but different instance
#pragma warning disable CS0618 // Type or member is obsolete
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
#pragma warning restore CS0618 // Type or member is obsolete
Assert.False(v < identical, $"{v} < {identical}");
Assert.True(v <= identical, $"{v} <= {identical}");
Assert.False(v > identical, $"{v} > {identical}");
Expand Down
134 changes: 7 additions & 127 deletions Semver.Test/SemVersionConstructorTests.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Semver.Test.Builders;
using Xunit;

namespace Semver.Test
Expand Down Expand Up @@ -89,125 +88,6 @@ public void ConstructWithMajorMinorPatchTest(int major, int minor, int patch)
}
#endregion

#region SemVersion(int major, int minor = 0, int patch = 0, string prerelease = "", string build = "")
/// <summary>
/// Verifies the default values of the arguments to the primary constructor.
/// </summary>
[Fact]
public void ConstructDefaultValuesTest()
{
var v = new SemVersion(1);

Assert.Equal(1, v.Major);
Assert.Equal(0, v.Minor);
Assert.Equal(0, v.Patch);
Assert.Equal("", v.Prerelease);
Assert.Empty(v.PrereleaseIdentifiers);
Assert.Equal("", v.Metadata);
Assert.Empty(v.MetadataIdentifiers);
}

[Theory]
// Basic version
[InlineData(1, 2, 3, "a", "b")]
// Letter Limits
[InlineData(1, 2, 3, "A-Z.a-z.0-9", "A-Z.a-z.0-9")]
// Hyphen in strange places
[InlineData(1, 2, 3, "-", "b")]
[InlineData(1, 2, 3, "--", "b")]
[InlineData(1, 2, 3, "a", "-")]
[InlineData(1, 2, 3, "a", "--")]
[InlineData(1, 2, 3, "-a", "b")]
[InlineData(1, 2, 3, "--a", "b")]
[InlineData(1, 2, 3, "a", "-b")]
[InlineData(1, 2, 3, "a", "--b")]
[InlineData(1, 2, 3, "a-", "b")]
[InlineData(1, 2, 3, "a--", "b")]
[InlineData(1, 2, 3, "a", "b-")]
[InlineData(1, 2, 3, "a", "b--")]
[InlineData(1, 2, 3, "-.a", "b")]
[InlineData(1, 2, 3, "a", "-.b")]
[InlineData(1, 2, 3, "a.-", "b")]
[InlineData(1, 2, 3, "a.-.c", "b")]
[InlineData(1, 2, 3, "a", "b.-")]
[InlineData(1, 2, 3, "a", "b.-.c")]
// Leading Zero on prerelease Alphanumeric Identifiers
[InlineData(1, 2, 3, "0a", "b")]
[InlineData(1, 2, 3, "00000a", "b")]
[InlineData(1, 2, 3, "a.0c", "b")]
[InlineData(1, 2, 3, "a.00000c", "b")]
// Empty string
[InlineData(1, 2, 3, "a", "")]
[InlineData(1, 2, 3, "", "b")]
[InlineData(1, 2, 3, "", "")]
// Null handling
[InlineData(1, 2, 3, "a", null)]
[InlineData(1, 2, 3, null, "b")]
[InlineData(1, 2, 3, null, null)]
// Negative version numbers
// TODO Negative versions should be invalid and throw argument exceptions (issue#41)
[InlineData(-1, 0, 0, "", "")]
[InlineData(0, -1, 0, "", "")]
[InlineData(0, 0, -1, "", "")]
[InlineData(-1, -1, -1, "", "")]
// Illegal characters
// TODO Illegal characters should be invalid and throw argument exceptions (issue#41)
[InlineData(1, 2, 3, "😞", "b")]
[InlineData(1, 2, 3, "a", "😞")]
// Leading Zeros in Prerelease
// TODO Leading zeros in prerelease should be invalid and throw argument exceptions (issue#41)
[InlineData(1, 2, 3, "01", "b")]
[InlineData(1, 2, 3, "a.01", "b")]
[InlineData(1, 2, 3, "a.01.c", "b")]
[InlineData(1, 2, 3, "a.0000001.c", "b")]
// Leading Zeros in MetaData (valid)
[InlineData(1, 2, 3, "a", "01")]
[InlineData(1, 2, 3, "a", "b.01")]
[InlineData(1, 2, 3, "a", "b.01.c")]
[InlineData(1, 2, 3, "a", "b.00000001.c")]
[InlineData(1, 2, 3, "a", "0b")]
[InlineData(1, 2, 3, "a", "0000000b")]
[InlineData(1, 2, 3, "a", "b.0c")]
[InlineData(1, 2, 3, "a", "b.000000c")]
// Empty Identifiers
// TODO Empty Identifiers should be invalid and throw argument exceptions (issue#41)
[InlineData(1, 2, 3, ".", "b")]
[InlineData(1, 2, 3, "a", ".")]
[InlineData(1, 2, 3, "a.", "b")]
[InlineData(1, 2, 3, "a..", "b")]
[InlineData(1, 2, 3, "a", "b.")]
[InlineData(1, 2, 3, "a", "b..")]
[InlineData(1, 2, 3, ".a", "b")]
[InlineData(1, 2, 3, "..a", "b")]
[InlineData(1, 2, 3, "a", ".b")]
[InlineData(1, 2, 3, "a", "..b")]
[InlineData(1, 2, 3, "a..c", "b")]
[InlineData(1, 2, 3, "a", "b..c")]
public void ConstructTest(int major, int minor, int patch, string prerelease, string metadata)
{
var v = new SemVersion(major, minor, patch, prerelease, metadata);

Assert.Equal(major, v.Major);
Assert.Equal(minor, v.Minor);
Assert.Equal(patch, v.Patch);
Assert.Equal(prerelease ?? "", v.Prerelease);
var expectedPrereleaseIdentifiers =
(prerelease?.SplitExceptEmpty('.') ?? Enumerable.Empty<string>())
#pragma warning disable CS0612 // Type or member is obsolete
.Select(PrereleaseIdentifier.CreateLoose);
#pragma warning restore CS0612 // Type or member is obsolete
Assert.Equal(expectedPrereleaseIdentifiers, v.PrereleaseIdentifiers);
Assert.Equal(metadata ?? "", v.Metadata);
var expectedMetadataIdentifiers =
(metadata?.SplitExceptEmpty('.') ?? Enumerable.Empty<string>())
#pragma warning disable CS0612 // Type or member is obsolete
.Select(MetadataIdentifier.CreateLoose);
#pragma warning restore CS0612 // Type or member is obsolete
;
Assert.Equal(expectedMetadataIdentifiers, v.MetadataIdentifiers);
}
#endregion

#region SemVersion(int major, int minor = 0, int patch = 0, IEnumerable<PrereleaseIdentifier> prerelease = null, IEnumerable<MetadataIdentifier> metadata = null)
[Fact]
public void ConstructWithIdentifiersTest()
Expand Down Expand Up @@ -299,15 +179,15 @@ public void ConstructWithStringIdentifiersPrereleaseNull()
{
var v = new SemVersion(1, 2, 3, (IEnumerable<string>)null);

Assert.Equal(new SemVersion(1, 2, 3, ""), v);
Assert.Equal(new SemVersion(1, 2, 3), v);
}

[Fact]
public void ConstructWithStringIdentifiersPrereleaseEmpty()
{
var v = new SemVersion(1, 2, 3, Enumerable.Empty<string>());

Assert.Equal(new SemVersion(1, 2, 3, ""), v);
Assert.Equal(new SemVersion(1, 2, 3), v);
}

[Fact]
Expand Down Expand Up @@ -393,15 +273,15 @@ public void ConstructWithStringIdentifiersMetadataLeadingZeros()
{
var v = new SemVersion(1, 2, 3, metadata: new[] { "bar", "0123" });

Assert.Equal(new SemVersion(1, 2, 3, "", "bar.0123"), v);
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "", "bar.0123"), v);
}

[Fact]
public void ConstructWithStringIdentifiersMetadataTooLarge()
{
var v = new SemVersion(1, 2, 3, metadata: new[] { "bar", "99999999999999999" });

Assert.Equal(new SemVersion(1, 2, 3, "", "bar.99999999999999999"), v);
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "", "bar.99999999999999999"), v);
}

[Fact]
Expand Down Expand Up @@ -497,7 +377,7 @@ public void ParsedFromPrereleaseLeadingZerosAllowed()
{
var v = SemVersion.ParsedFrom(1, 2, 3, "bar.0123", allowLeadingZeros: true);

Assert.Equal(new SemVersion(1, 2, 3, "bar.123"), v);
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "bar.123"), v);
}

[Fact]
Expand Down Expand Up @@ -539,15 +419,15 @@ public void ParsedFromMetadataLeadingZeros()
{
var v = SemVersion.ParsedFrom(1, metadata: "bar.0123");

Assert.Equal(new SemVersion(1, 0, 0, "", "bar.0123"), v);
Assert.Equal(SemVersion.ParsedFrom(1, 0, 0, "", "bar.0123"), v);
}

[Fact]
public void ParsedFromMetadataTooLarge()
{
var v = SemVersion.ParsedFrom(1, metadata: "bar.99999999999999999");

Assert.Equal(new SemVersion(1, 0, 0, "", "bar.99999999999999999"), v);
Assert.Equal(SemVersion.ParsedFrom(1, 0, 0, "", "bar.99999999999999999"), v);
}

[Fact]
Expand Down
Loading

0 comments on commit 8913fa2

Please sign in to comment.