@@ -13,6 +13,81 @@ public class SemVersionConstructorTests
13
13
private const string PrereleaseIdentifierIsDefaultMessage = "Prerelease identifier cannot be default/null." ;
14
14
private const string MetadataIdentifierIsDefaultMessage = "Metadata identifier cannot be default/null." ;
15
15
16
+ /// <summary>
17
+ /// This test shows that named arguments will resolve to a constructor with few parameters
18
+ /// rather than one with more parameters that might be obsolete.
19
+ /// </summary>
20
+ [ Fact ]
21
+ public void NamedArgumentsResolveToShortestConstructor ( )
22
+ {
23
+ var v = new SemVersion ( major : 2 , minor : 1 , patch : 3 ) ;
24
+
25
+ Assert . Equal ( new SemVersion ( 2 , 1 , 3 ) , v ) ;
26
+ }
27
+
28
+ #region SemVersion(int major)
29
+ [ Theory ]
30
+ [ InlineData ( 1 ) ]
31
+ [ InlineData ( 2 ) ]
32
+ // TODO Negative versions should be invalid and throw argument exceptions (issue#41)
33
+ [ InlineData ( - 1 ) ]
34
+ public void ConstructWithMajorTest ( int major )
35
+ {
36
+ var v = new SemVersion ( major ) ;
37
+
38
+ Assert . Equal ( major , v . Major ) ;
39
+ Assert . Equal ( 0 , v . Minor ) ;
40
+ Assert . Equal ( 0 , v . Patch ) ;
41
+ Assert . Equal ( "" , v . Prerelease ) ;
42
+ Assert . Empty ( v . PrereleaseIdentifiers ) ;
43
+ Assert . Equal ( "" , v . Metadata ) ;
44
+ Assert . Empty ( v . MetadataIdentifiers ) ;
45
+ }
46
+ #endregion
47
+
48
+ #region SemVersion(int major, int minor)
49
+ [ Theory ]
50
+ [ InlineData ( 1 , 2 ) ]
51
+ // TODO Negative versions should be invalid and throw argument exceptions (issue#41)
52
+ [ InlineData ( - 1 , 0 ) ]
53
+ [ InlineData ( 0 , - 1 ) ]
54
+ [ InlineData ( - 1 , - 1 ) ]
55
+ public void ConstructWithMajorMinorTest ( int major , int minor )
56
+ {
57
+ var v = new SemVersion ( major , minor ) ;
58
+
59
+ Assert . Equal ( major , v . Major ) ;
60
+ Assert . Equal ( minor , v . Minor ) ;
61
+ Assert . Equal ( 0 , v . Patch ) ;
62
+ Assert . Equal ( "" , v . Prerelease ) ;
63
+ Assert . Empty ( v . PrereleaseIdentifiers ) ;
64
+ Assert . Equal ( "" , v . Metadata ) ;
65
+ Assert . Empty ( v . MetadataIdentifiers ) ;
66
+ }
67
+ #endregion
68
+
69
+ #region SemVersion(int major, int minor, int patch)
70
+ [ Theory ]
71
+ [ InlineData ( 1 , 2 , 3 ) ]
72
+ // TODO Negative versions should be invalid and throw argument exceptions (issue#41)
73
+ [ InlineData ( - 1 , 0 , 0 ) ]
74
+ [ InlineData ( 0 , - 1 , 0 ) ]
75
+ [ InlineData ( 0 , 0 , - 1 ) ]
76
+ [ InlineData ( - 1 , - 1 , - 1 ) ]
77
+ public void ConstructWithMajorMinorPatchTest ( int major , int minor , int patch )
78
+ {
79
+ var v = new SemVersion ( major , minor , patch ) ;
80
+
81
+ Assert . Equal ( major , v . Major ) ;
82
+ Assert . Equal ( minor , v . Minor ) ;
83
+ Assert . Equal ( patch , v . Patch ) ;
84
+ Assert . Equal ( "" , v . Prerelease ) ;
85
+ Assert . Empty ( v . PrereleaseIdentifiers ) ;
86
+ Assert . Equal ( "" , v . Metadata ) ;
87
+ Assert . Empty ( v . MetadataIdentifiers ) ;
88
+ }
89
+ #endregion
90
+
16
91
#region SemVersion(int major, int minor = 0, int patch = 0, string prerelease, string build)
17
92
/// <summary>
18
93
/// Verifies the default values of the arguments to the primary constructor.
@@ -132,29 +207,7 @@ public void ConstructTest(int major, int minor, int patch, string prerelease, st
132
207
}
133
208
#endregion
134
209
135
- #region SemVersion(int major, int minor, int patch)
136
- [ Theory ]
137
- [ InlineData ( 1 , 2 , 3 ) ]
138
- // TODO Negative versions should be invalid and throw argument exceptions (issue#41)
139
- [ InlineData ( - 1 , 0 , 0 ) ]
140
- [ InlineData ( 0 , - 1 , 0 ) ]
141
- [ InlineData ( 0 , 0 , - 1 ) ]
142
- [ InlineData ( - 1 , - 1 , - 1 ) ]
143
- public void ConstructWithMajorMinorPatchTest ( int major , int minor , int patch )
144
- {
145
- var v = new SemVersion ( major , minor , patch ) ;
146
-
147
- Assert . Equal ( major , v . Major ) ;
148
- Assert . Equal ( minor , v . Minor ) ;
149
- Assert . Equal ( patch , v . Patch ) ;
150
- Assert . Equal ( "" , v . Prerelease ) ;
151
- Assert . Empty ( v . PrereleaseIdentifiers ) ;
152
- Assert . Equal ( "" , v . Metadata ) ;
153
- Assert . Empty ( v . MetadataIdentifiers ) ;
154
- }
155
- #endregion
156
-
157
- #region SemVersion(int major, int minor, int patch, IEnumerable<PrereleaseIdentifier> prerelease, IEnumerable<MetadataIdentifier> metadata)
210
+ #region SemVersion(int major, int minor = 0, int patch = 0, IEnumerable<PrereleaseIdentifier> prerelease = null, IEnumerable<MetadataIdentifier> metadata = null)
158
211
[ Fact ]
159
212
public void ConstructWithIdentifiersTest ( )
160
213
{
@@ -206,7 +259,7 @@ public void ConstructWithDefaultMetadataIdentifiersTest()
206
259
}
207
260
#endregion
208
261
209
- #region SemVersion(int major, int minor, int patch, IEnumerable<string> prerelease, IEnumerable<string> metadata)
262
+ #region SemVersion(int major, int minor = 0 , int patch = 0 , IEnumerable<string> prerelease = null , IEnumerable<string> metadata = null )
210
263
[ Fact ]
211
264
public void ConstructWithStringIdentifiersTest ( )
212
265
{
0 commit comments