-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathSemanticVersionTests.cs
More file actions
93 lines (82 loc) · 3.65 KB
/
SemanticVersionTests.cs
File metadata and controls
93 lines (82 loc) · 3.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using System.Collections;
using PostCodeSerialMonitor.Models;
namespace PostCodeSerialMonitor.Tests;
public class SemanticVersionTestDataGenerator : IEnumerable<object[]>
{
private readonly List<object[]> _data = new List<object[]>
{
new object[] {"0.2.0.0", "0.2.1.0", true},
new object[] {"0.2.0.0", "0.2.10.0", true},
new object[] {"0.2.0.0", "0.2.0.1", true},
new object[] {"0.2.0.0", "0.3.0", true},
new object[] {"0.2.0.0", "0.1.99", false},
new object[] {"0.2.0.0", "0.1.33.0", false},
new object[] {"0.3.0", "0.3.1", true},
new object[] {"0.3.1.0", "0.3.11.0", true},
new object[] {"0.3.2.0", "0.3.20.0", true},
new object[] {"0.3.11.0", "0.3.1.0", false},
new object[] {"1.0.0", "1.0.1", true},
new object[] {"1.0.0", "1.1.0", true},
new object[] {"1.0.0", "2.0.0", true},
new object[] {"2.0.0", "1.9.9", false},
new object[] {"1.2.3", "1.2.4", true},
new object[] {"1.2.3", "1.3.0", true},
new object[] {"1.2.3", "2.0.0", true},
new object[] {"1.2.3", "1.2.3", false},
new object[] {"10.0.0", "9.99.99", false},
new object[] {"0.0.1", "0.0.2", true},
new object[] {"0.0.1", "0.1.0", true},
new object[] {"0.0.1", "1.0.0", true},
new object[] {"v0.2.0.0", "v0.2.1.0", true},
new object[] {"v0.2.0.0", "0.2.1.0", true},
new object[] {"0.2.0.0", "v0.2.1.0", true},
new object[] {"v1.0.0", "v1.0.1", true},
new object[] {"v1.0.0", "1.0.1", true},
new object[] {"1.0.0", "v1.0.1", true},
new object[] {"v2.3.4", "v2.3.5", true},
new object[] {"v2.3.4", "2.3.5", true},
new object[] {"2.3.4", "v2.3.5", true},
new object[] {"v10.20.30", "v10.20.31", true},
new object[] {"v10.20.30", "10.20.31", true},
new object[] {"10.20.30", "v10.20.31", true},
new object[] {"v0.0.1", "v0.0.2", true},
new object[] {"v0.0.1", "0.0.2", true},
new object[] {"0.0.1", "v0.0.2", true},
new object[] {"v1.2.3", "v1.2.3", false},
new object[] {"v1.2.3", "1.2.3", false},
new object[] {"1.2.3", "v1.2.3", false},
new object[] {"0.1.0", "v0.2.0", true},
new object[] {"v0.1.0", "0.2.0", true},
new object[] {"0.1.0.0", "v0.2.0", true},
new object[] {"v0.1.0.0", "0.2.0", true},
new object[] {"1.0.0.0", "v1.1.0", true},
new object[] {"v1.0.0.0", "1.1.0", true},
new object[] {"0.9.9.9", "v1.0.0.0", true},
new object[] {"v0.9.9.9", "1.0.0.0", true},
new object[] {"1.99.99.99", "v2.0.0.0", true},
new object[] {"v1.99.99.99", "2.0.0.0", true},
new object[] {"0.0.0.1", "v0.0.0.2", true},
new object[] {"v0.0.0.1", "0.0.0", false},
};
public IEnumerator<object[]> GetEnumerator() => _data.GetEnumerator();
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
}
public class SemanticVersionTests
{
[Fact]
public void TestParsing()
{
Assert.Equal([0, 1, 2, 3], new SemanticVersion("v0.1.2.3").VersionParts);
Assert.Equal([0, 1, 2, 3], new SemanticVersion("0.1.2.3").VersionParts);
Assert.Equal([0, 1, 2, 0], new SemanticVersion("v0.1.2").VersionParts);
Assert.Equal([0, 1, 2, 0], new SemanticVersion("0.1.2").VersionParts);
}
[Theory]
[ClassData(typeof(SemanticVersionTestDataGenerator))]
public void TestComparison(string localVersion, string remoteVersion, bool isNewer)
{
var local = new SemanticVersion(localVersion);
var remote = new SemanticVersion(remoteVersion);
Assert.Equal(isNewer, remote > local);
}
}