Skip to content

Commit 8913fa2

Browse files
mark old constructor obsolete
1 parent 8cead89 commit 8913fa2

File tree

8 files changed

+256
-196
lines changed

8 files changed

+256
-196
lines changed

Semver.Benchmarks/NewSemVersion.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,15 @@ public class NewSemVersion
2020
public string Full_Previous() => new Previous.SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;
2121

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

2528
[Benchmark]
26-
public string Full_Current() => new SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;
29+
public string Full_Current()
30+
#pragma warning disable CS0618 // Type or member is obsolete
31+
=> new SemVersion(1, 2, 3, Prerelease, Metadata).Prerelease;
32+
#pragma warning restore CS0618 // Type or member is obsolete
2733
}
2834
}

Semver.Test/SemVersionComparisonTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public class SemVersionComparisonTests
2121
{
2222
public static readonly IReadOnlyList<SemVersion> VersionsInOrder = new List<SemVersion>()
2323
{
24+
#pragma warning disable CS0618 // Type or member is obsolete
2425
new SemVersion(-2),
2526
new SemVersion(-1, -1),
2627
new SemVersion(-1),
@@ -78,6 +79,7 @@ public class SemVersionComparisonTests
7879
new SemVersion(2),
7980
new SemVersion(2, 1),
8081
new SemVersion(2, 1, 1),
82+
#pragma warning restore CS0618 // Type or member is obsolete
8183
}.AsReadOnly();
8284

8385
public static readonly IReadOnlyList<(SemVersion, SemVersion)> VersionPairs =
@@ -90,7 +92,9 @@ public void EqualsIdenticalTest()
9092
foreach (var v in VersionsInOrder)
9193
{
9294
// Construct an identical version, but different instance
95+
#pragma warning disable CS0618 // Type or member is obsolete
9396
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
97+
#pragma warning restore CS0618 // Type or member is obsolete
9498
Assert.True(v.Equals(identical), v.ToString());
9599
}
96100
}
@@ -179,7 +183,9 @@ public void GetHashCodeOfEqualTest()
179183
foreach (var v in VersionsInOrder)
180184
{
181185
// Construct an identical version, but different instance
186+
#pragma warning disable CS0618 // Type or member is obsolete
182187
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
188+
#pragma warning restore CS0618 // Type or member is obsolete
183189
Assert.True(v.GetHashCode() == identical.GetHashCode(), v.ToString());
184190
}
185191
}
@@ -199,7 +205,9 @@ public void CompareToIdenticalTest()
199205
foreach (var v in VersionsInOrder)
200206
{
201207
// Construct an identical version, but different instance
208+
#pragma warning disable CS0618 // Type or member is obsolete
202209
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
210+
#pragma warning restore CS0618 // Type or member is obsolete
203211
Assert.True(v.CompareTo(identical) == 0, v.ToString());
204212
}
205213
}
@@ -324,7 +332,9 @@ public void PrecedenceMatchesIdenticalTest()
324332
foreach (var v in VersionsInOrder)
325333
{
326334
// Construct an identical version, but different instance
335+
#pragma warning disable CS0618 // Type or member is obsolete
327336
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
337+
#pragma warning restore CS0618 // Type or member is obsolete
328338
Assert.True(v.PrecedenceMatches(identical), v.ToString());
329339
}
330340
}
@@ -393,7 +403,9 @@ public void CompareByPrecedenceIdenticalTest()
393403
foreach (var v in VersionsInOrder)
394404
{
395405
// Construct an identical version, but different instance
406+
#pragma warning disable CS0618 // Type or member is obsolete
396407
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
408+
#pragma warning restore CS0618 // Type or member is obsolete
397409
Assert.True(v.CompareByPrecedence(identical) == 0, v.ToString());
398410
}
399411
}
@@ -489,7 +501,9 @@ public void EqualsOperatorIdenticalTest()
489501
foreach (var v in VersionsInOrder)
490502
{
491503
// Construct an identical version, but different instance
504+
#pragma warning disable CS0618 // Type or member is obsolete
492505
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
506+
#pragma warning restore CS0618 // Type or member is obsolete
493507
Assert.True(v == identical, v.ToString());
494508
}
495509
}
@@ -569,7 +583,9 @@ public void NotEqualsOperatorIdenticalTest()
569583
foreach (var v in VersionsInOrder)
570584
{
571585
// Construct an identical version, but different instance
586+
#pragma warning disable CS0618 // Type or member is obsolete
572587
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
588+
#pragma warning restore CS0618 // Type or member is obsolete
573589
Assert.False(v != identical, v.ToString());
574590
}
575591
}
@@ -649,7 +665,9 @@ public void ComparisonOperatorsIdenticalTest()
649665
foreach (var v in VersionsInOrder)
650666
{
651667
// Construct an identical version, but different instance
668+
#pragma warning disable CS0618 // Type or member is obsolete
652669
var identical = new SemVersion(v.Major, v.Minor, v.Patch, v.Prerelease, v.Metadata);
670+
#pragma warning restore CS0618 // Type or member is obsolete
653671
Assert.False(v < identical, $"{v} < {identical}");
654672
Assert.True(v <= identical, $"{v} <= {identical}");
655673
Assert.False(v > identical, $"{v} > {identical}");

Semver.Test/SemVersionConstructorTests.cs

Lines changed: 7 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq;
4-
using Semver.Test.Builders;
54
using Xunit;
65

76
namespace Semver.Test
@@ -89,125 +88,6 @@ public void ConstructWithMajorMinorPatchTest(int major, int minor, int patch)
8988
}
9089
#endregion
9190

92-
#region SemVersion(int major, int minor = 0, int patch = 0, string prerelease = "", string build = "")
93-
/// <summary>
94-
/// Verifies the default values of the arguments to the primary constructor.
95-
/// </summary>
96-
[Fact]
97-
public void ConstructDefaultValuesTest()
98-
{
99-
var v = new SemVersion(1);
100-
101-
Assert.Equal(1, v.Major);
102-
Assert.Equal(0, v.Minor);
103-
Assert.Equal(0, v.Patch);
104-
Assert.Equal("", v.Prerelease);
105-
Assert.Empty(v.PrereleaseIdentifiers);
106-
Assert.Equal("", v.Metadata);
107-
Assert.Empty(v.MetadataIdentifiers);
108-
}
109-
110-
[Theory]
111-
// Basic version
112-
[InlineData(1, 2, 3, "a", "b")]
113-
// Letter Limits
114-
[InlineData(1, 2, 3, "A-Z.a-z.0-9", "A-Z.a-z.0-9")]
115-
// Hyphen in strange places
116-
[InlineData(1, 2, 3, "-", "b")]
117-
[InlineData(1, 2, 3, "--", "b")]
118-
[InlineData(1, 2, 3, "a", "-")]
119-
[InlineData(1, 2, 3, "a", "--")]
120-
[InlineData(1, 2, 3, "-a", "b")]
121-
[InlineData(1, 2, 3, "--a", "b")]
122-
[InlineData(1, 2, 3, "a", "-b")]
123-
[InlineData(1, 2, 3, "a", "--b")]
124-
[InlineData(1, 2, 3, "a-", "b")]
125-
[InlineData(1, 2, 3, "a--", "b")]
126-
[InlineData(1, 2, 3, "a", "b-")]
127-
[InlineData(1, 2, 3, "a", "b--")]
128-
[InlineData(1, 2, 3, "-.a", "b")]
129-
[InlineData(1, 2, 3, "a", "-.b")]
130-
[InlineData(1, 2, 3, "a.-", "b")]
131-
[InlineData(1, 2, 3, "a.-.c", "b")]
132-
[InlineData(1, 2, 3, "a", "b.-")]
133-
[InlineData(1, 2, 3, "a", "b.-.c")]
134-
// Leading Zero on prerelease Alphanumeric Identifiers
135-
[InlineData(1, 2, 3, "0a", "b")]
136-
[InlineData(1, 2, 3, "00000a", "b")]
137-
[InlineData(1, 2, 3, "a.0c", "b")]
138-
[InlineData(1, 2, 3, "a.00000c", "b")]
139-
// Empty string
140-
[InlineData(1, 2, 3, "a", "")]
141-
[InlineData(1, 2, 3, "", "b")]
142-
[InlineData(1, 2, 3, "", "")]
143-
// Null handling
144-
[InlineData(1, 2, 3, "a", null)]
145-
[InlineData(1, 2, 3, null, "b")]
146-
[InlineData(1, 2, 3, null, null)]
147-
// Negative version numbers
148-
// TODO Negative versions should be invalid and throw argument exceptions (issue#41)
149-
[InlineData(-1, 0, 0, "", "")]
150-
[InlineData(0, -1, 0, "", "")]
151-
[InlineData(0, 0, -1, "", "")]
152-
[InlineData(-1, -1, -1, "", "")]
153-
// Illegal characters
154-
// TODO Illegal characters should be invalid and throw argument exceptions (issue#41)
155-
[InlineData(1, 2, 3, "😞", "b")]
156-
[InlineData(1, 2, 3, "a", "😞")]
157-
// Leading Zeros in Prerelease
158-
// TODO Leading zeros in prerelease should be invalid and throw argument exceptions (issue#41)
159-
[InlineData(1, 2, 3, "01", "b")]
160-
[InlineData(1, 2, 3, "a.01", "b")]
161-
[InlineData(1, 2, 3, "a.01.c", "b")]
162-
[InlineData(1, 2, 3, "a.0000001.c", "b")]
163-
// Leading Zeros in MetaData (valid)
164-
[InlineData(1, 2, 3, "a", "01")]
165-
[InlineData(1, 2, 3, "a", "b.01")]
166-
[InlineData(1, 2, 3, "a", "b.01.c")]
167-
[InlineData(1, 2, 3, "a", "b.00000001.c")]
168-
[InlineData(1, 2, 3, "a", "0b")]
169-
[InlineData(1, 2, 3, "a", "0000000b")]
170-
[InlineData(1, 2, 3, "a", "b.0c")]
171-
[InlineData(1, 2, 3, "a", "b.000000c")]
172-
// Empty Identifiers
173-
// TODO Empty Identifiers should be invalid and throw argument exceptions (issue#41)
174-
[InlineData(1, 2, 3, ".", "b")]
175-
[InlineData(1, 2, 3, "a", ".")]
176-
[InlineData(1, 2, 3, "a.", "b")]
177-
[InlineData(1, 2, 3, "a..", "b")]
178-
[InlineData(1, 2, 3, "a", "b.")]
179-
[InlineData(1, 2, 3, "a", "b..")]
180-
[InlineData(1, 2, 3, ".a", "b")]
181-
[InlineData(1, 2, 3, "..a", "b")]
182-
[InlineData(1, 2, 3, "a", ".b")]
183-
[InlineData(1, 2, 3, "a", "..b")]
184-
[InlineData(1, 2, 3, "a..c", "b")]
185-
[InlineData(1, 2, 3, "a", "b..c")]
186-
public void ConstructTest(int major, int minor, int patch, string prerelease, string metadata)
187-
{
188-
var v = new SemVersion(major, minor, patch, prerelease, metadata);
189-
190-
Assert.Equal(major, v.Major);
191-
Assert.Equal(minor, v.Minor);
192-
Assert.Equal(patch, v.Patch);
193-
Assert.Equal(prerelease ?? "", v.Prerelease);
194-
var expectedPrereleaseIdentifiers =
195-
(prerelease?.SplitExceptEmpty('.') ?? Enumerable.Empty<string>())
196-
#pragma warning disable CS0612 // Type or member is obsolete
197-
.Select(PrereleaseIdentifier.CreateLoose);
198-
#pragma warning restore CS0612 // Type or member is obsolete
199-
Assert.Equal(expectedPrereleaseIdentifiers, v.PrereleaseIdentifiers);
200-
Assert.Equal(metadata ?? "", v.Metadata);
201-
var expectedMetadataIdentifiers =
202-
(metadata?.SplitExceptEmpty('.') ?? Enumerable.Empty<string>())
203-
#pragma warning disable CS0612 // Type or member is obsolete
204-
.Select(MetadataIdentifier.CreateLoose);
205-
#pragma warning restore CS0612 // Type or member is obsolete
206-
;
207-
Assert.Equal(expectedMetadataIdentifiers, v.MetadataIdentifiers);
208-
}
209-
#endregion
210-
21191
#region SemVersion(int major, int minor = 0, int patch = 0, IEnumerable<PrereleaseIdentifier> prerelease = null, IEnumerable<MetadataIdentifier> metadata = null)
21292
[Fact]
21393
public void ConstructWithIdentifiersTest()
@@ -299,15 +179,15 @@ public void ConstructWithStringIdentifiersPrereleaseNull()
299179
{
300180
var v = new SemVersion(1, 2, 3, (IEnumerable<string>)null);
301181

302-
Assert.Equal(new SemVersion(1, 2, 3, ""), v);
182+
Assert.Equal(new SemVersion(1, 2, 3), v);
303183
}
304184

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

310-
Assert.Equal(new SemVersion(1, 2, 3, ""), v);
190+
Assert.Equal(new SemVersion(1, 2, 3), v);
311191
}
312192

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

396-
Assert.Equal(new SemVersion(1, 2, 3, "", "bar.0123"), v);
276+
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "", "bar.0123"), v);
397277
}
398278

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

404-
Assert.Equal(new SemVersion(1, 2, 3, "", "bar.99999999999999999"), v);
284+
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "", "bar.99999999999999999"), v);
405285
}
406286

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

500-
Assert.Equal(new SemVersion(1, 2, 3, "bar.123"), v);
380+
Assert.Equal(SemVersion.ParsedFrom(1, 2, 3, "bar.123"), v);
501381
}
502382

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

542-
Assert.Equal(new SemVersion(1, 0, 0, "", "bar.0123"), v);
422+
Assert.Equal(SemVersion.ParsedFrom(1, 0, 0, "", "bar.0123"), v);
543423
}
544424

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

550-
Assert.Equal(new SemVersion(1, 0, 0, "", "bar.99999999999999999"), v);
430+
Assert.Equal(SemVersion.ParsedFrom(1, 0, 0, "", "bar.99999999999999999"), v);
551431
}
552432

553433
[Fact]

0 commit comments

Comments
 (0)