diff --git a/src/Abstractions/src/Asp.Versioning.Abstractions/AdvertiseApiVersionsAttribute.cs b/src/Abstractions/src/Asp.Versioning.Abstractions/AdvertiseApiVersionsAttribute.cs
index eed5d62c..9d879940 100644
--- a/src/Abstractions/src/Asp.Versioning.Abstractions/AdvertiseApiVersionsAttribute.cs
+++ b/src/Abstractions/src/Asp.Versioning.Abstractions/AdvertiseApiVersionsAttribute.cs
@@ -97,5 +97,5 @@ public bool Deprecated
}
///
- public override int GetHashCode() => HashCode.Combine( GetHashCode(), Deprecated );
+ public override int GetHashCode() => HashCode.Combine( base.GetHashCode(), Deprecated );
}
\ No newline at end of file
diff --git a/src/Abstractions/src/Asp.Versioning.Abstractions/Asp.Versioning.Abstractions.csproj b/src/Abstractions/src/Asp.Versioning.Abstractions/Asp.Versioning.Abstractions.csproj
index cf2411e7..fdfb8220 100644
--- a/src/Abstractions/src/Asp.Versioning.Abstractions/Asp.Versioning.Abstractions.csproj
+++ b/src/Abstractions/src/Asp.Versioning.Abstractions/Asp.Versioning.Abstractions.csproj
@@ -1,7 +1,7 @@
- 6.2.0
+ 6.2.1
6.2.0.0
netstandard1.0;netstandard2.0;net6.0
API Versioning Abstractions
diff --git a/src/Abstractions/src/Asp.Versioning.Abstractions/ReleaseNotes.txt b/src/Abstractions/src/Asp.Versioning.Abstractions/ReleaseNotes.txt
index 5f282702..40820b51 100644
--- a/src/Abstractions/src/Asp.Versioning.Abstractions/ReleaseNotes.txt
+++ b/src/Abstractions/src/Asp.Versioning.Abstractions/ReleaseNotes.txt
@@ -1 +1 @@
-
\ No newline at end of file
+[Fixed #932](https://github.com/dotnet/aspnet-api-versioning/issues/932)
\ No newline at end of file
diff --git a/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/ApiVersionFormatProviderTest.cs b/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/ApiVersionFormatProviderTest.cs
index 64b440a8..7b8d2245 100644
--- a/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/ApiVersionFormatProviderTest.cs
+++ b/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/ApiVersionFormatProviderTest.cs
@@ -41,6 +41,7 @@ public void get_format_should_return_expected_format_provider()
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_allow_null_or_empty_format_string( ApiVersionFormatProvider provider )
{
@@ -56,6 +57,7 @@ public void format_should_allow_null_or_empty_format_string( ApiVersionFormatPro
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_full_formatted_string_without_optional_components( ApiVersionFormatProvider provider )
{
@@ -70,6 +72,7 @@ public void format_should_return_full_formatted_string_without_optional_componen
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_full_formatted_string_with_optional_components( ApiVersionFormatProvider provider )
{
@@ -84,6 +87,7 @@ public void format_should_return_full_formatted_string_with_optional_components(
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_original_string_format_when_argument_cannot_be_formatted( ApiVersionFormatProvider provider )
{
@@ -113,6 +117,7 @@ public void format_should_not_allow_malformed_literal_string( ApiVersionFormatPr
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( GroupVersionFormatData ) )]
public void format_should_return_formatted_group_version_string( ApiVersionFormatProvider provider, string format )
{
@@ -129,6 +134,7 @@ public void format_should_return_formatted_group_version_string( ApiVersionForma
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_minor_version_string( ApiVersionFormatProvider provider )
{
@@ -143,6 +149,7 @@ public void format_should_return_formatted_minor_version_string( ApiVersionForma
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_major_version_string( ApiVersionFormatProvider provider )
{
@@ -157,6 +164,7 @@ public void format_should_return_formatted_major_version_string( ApiVersionForma
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_major_and_minor_version_string( ApiVersionFormatProvider provider )
{
@@ -171,6 +179,7 @@ public void format_should_return_formatted_major_and_minor_version_string( ApiVe
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_short_version_string( ApiVersionFormatProvider provider )
{
@@ -185,6 +194,7 @@ public void format_should_return_formatted_short_version_string( ApiVersionForma
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_long_version_string( ApiVersionFormatProvider provider )
{
@@ -199,6 +209,7 @@ public void format_should_return_formatted_long_version_string( ApiVersionFormat
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( FormatProvidersData ) )]
public void format_should_return_formatted_status_string( ApiVersionFormatProvider provider )
{
@@ -213,6 +224,7 @@ public void format_should_return_formatted_status_string( ApiVersionFormatProvid
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( PaddedMinorVersionFormatData ) )]
public void format_should_return_formatted_minor_version_with_padding_string( ApiVersionFormatProvider provider, string format )
{
@@ -233,6 +245,7 @@ public void format_should_return_formatted_minor_version_with_padding_string( Ap
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( PaddedMajorVersionFormatData ) )]
public void format_should_return_formatted_major_version_with_padding_string( ApiVersionFormatProvider provider, string format )
{
@@ -253,6 +266,7 @@ public void format_should_return_formatted_major_version_with_padding_string( Ap
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( CustomFormatData ) )]
public void format_should_return_custom_format_string( Func format, string expected )
{
@@ -268,6 +282,7 @@ public void format_should_return_custom_format_string( Func
}
[Theory]
+ [AssumeCulture( "en-us" )]
[MemberData( nameof( MultipleFormatParameterData ) )]
public void format_should_return_formatted_string_with_multiple_parameters( ApiVersionFormatProvider provider, string format, object secondArgument, string expected )
{
@@ -284,6 +299,7 @@ public void format_should_return_formatted_string_with_multiple_parameters( ApiV
}
[Fact]
+ [AssumeCulture( "en-us" )]
public void format_should_return_formatted_string_with_escape_sequence()
{
// arrange
diff --git a/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/AssumeCultureAttribute.cs b/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/AssumeCultureAttribute.cs
new file mode 100644
index 00000000..9c956d87
--- /dev/null
+++ b/src/Abstractions/test/Asp.Versioning.Abstractions.Tests/AssumeCultureAttribute.cs
@@ -0,0 +1,40 @@
+// Copyright (c) .NET Foundation and contributors. All rights reserved.
+
+namespace Asp.Versioning;
+
+using System.Globalization;
+using System.Reflection;
+using Xunit.Sdk;
+using static System.AttributeTargets;
+using static System.Threading.Thread;
+
+///
+/// Allows a test method to assume that it is running in a specific locale.
+///
+[AttributeUsage( Class | Method, AllowMultiple = false, Inherited = true )]
+public sealed class AssumeCultureAttribute : BeforeAfterTestAttribute
+{
+ private CultureInfo originalCulture;
+ private CultureInfo originalUICulture;
+
+ public AssumeCultureAttribute( string name ) => Name = name;
+
+ public string Name { get; }
+
+ public override void Before( MethodInfo methodUnderTest )
+ {
+ originalCulture = CurrentThread.CurrentCulture;
+ originalUICulture = CurrentThread.CurrentUICulture;
+
+ var culture = CultureInfo.CreateSpecificCulture( Name );
+
+ CurrentThread.CurrentCulture = culture;
+ CurrentThread.CurrentUICulture = culture;
+ }
+
+ public override void After( MethodInfo methodUnderTest )
+ {
+ CurrentThread.CurrentCulture = originalCulture;
+ CurrentThread.CurrentUICulture = originalUICulture;
+ }
+}
\ No newline at end of file