@@ -57,13 +57,24 @@ private ApiVersion()
57
57
/// <param name="version">The version number.</param>
58
58
/// <param name="status">The optional version status.</param>
59
59
public ApiVersion ( double version , string ? status = default )
60
+ : this ( version , status , IsValidStatus ) { }
61
+
62
+ /// <summary>
63
+ /// Initializes a new instance of the <see cref="ApiVersion"/> class.
64
+ /// </summary>
65
+ /// <param name="version">The version number.</param>
66
+ /// <param name="status">The optional version status.</param>
67
+ /// <param name="isValidStatus">The function used to valid status.</param>
68
+ protected ApiVersion ( double version , string ? status , Func < string ? , bool > isValidStatus )
60
69
{
61
70
if ( version < 0d || double . IsNaN ( version ) || double . IsInfinity ( version ) )
62
71
{
63
72
throw new ArgumentOutOfRangeException ( nameof ( version ) ) ;
64
73
}
65
74
66
- Status = ValidateStatus ( status ) ;
75
+ Status = ValidateStatus (
76
+ status ,
77
+ isValidStatus ?? throw new ArgumentNullException ( nameof ( isValidStatus ) ) ) ;
67
78
68
79
var number = new decimal ( version ) ;
69
80
var bits = decimal . GetBits ( number ) ;
@@ -75,7 +86,21 @@ private ApiVersion()
75
86
MinorVersion = minor ;
76
87
}
77
88
78
- internal ApiVersion ( DateOnly ? groupVersion , int ? majorVersion , int ? minorVersion , string ? status )
89
+ /// <summary>
90
+ /// Initializes a new instance of the <see cref="ApiVersion"/> class.
91
+ /// </summary>
92
+ /// <param name="groupVersion">The optional group version.</param>
93
+ /// <param name="majorVersion">The optional major version.</param>
94
+ /// <param name="minorVersion">The optional minor version.</param>
95
+ /// <param name="status">The optional version status.</param>
96
+ /// <param name="isValidStatus">The optional function used to valid status.
97
+ /// The default value is <see cref="IsValidStatus(string?)"/>.</param>
98
+ protected internal ApiVersion (
99
+ DateOnly ? groupVersion ,
100
+ int ? majorVersion ,
101
+ int ? minorVersion ,
102
+ string ? status ,
103
+ Func < string ? , bool > ? isValidStatus = default )
79
104
{
80
105
if ( majorVersion . HasValue && majorVersion . Value < 0 )
81
106
{
@@ -87,7 +112,7 @@ internal ApiVersion( DateOnly? groupVersion, int? majorVersion, int? minorVersio
87
112
throw new ArgumentOutOfRangeException ( nameof ( minorVersion ) ) ;
88
113
}
89
114
90
- Status = ValidateStatus ( status ) ;
115
+ Status = ValidateStatus ( status , isValidStatus ?? IsValidStatus ) ;
91
116
GroupVersion = groupVersion ;
92
117
MajorVersion = majorVersion ;
93
118
MinorVersion = minorVersion ;
@@ -303,14 +328,9 @@ public virtual string ToString( string? format, IFormatProvider? formatProvider
303
328
#pragma warning restore CA1062 // Validate arguments of public methods
304
329
}
305
330
306
- private static string ? ValidateStatus ( string ? status )
331
+ private static string ? ValidateStatus ( string ? status , Func < string ? , bool > isValid )
307
332
{
308
- if ( status is not null && status . Length == 0 )
309
- {
310
- return default ;
311
- }
312
-
313
- if ( IsValidStatus ( status ) )
333
+ if ( isValid ( status ) )
314
334
{
315
335
return status ;
316
336
}
0 commit comments