-
Notifications
You must be signed in to change notification settings - Fork 965
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
remove redundant uiCulture from UseCultureAttribute (#1391)
- Loading branch information
1 parent
82d6293
commit 8292b8f
Showing
1 changed file
with
51 additions
and
71 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,82 +1,62 @@ | ||
using System.Reflection; | ||
using Xunit.Sdk; | ||
|
||
namespace Humanizer.Tests | ||
namespace Humanizer.Tests; | ||
|
||
/// <summary> | ||
/// Apply this attribute to your test method to replace the | ||
/// <see cref="Thread.CurrentThread" /> <see cref="CultureInfo.CurrentCulture" /> and | ||
/// <see cref="CultureInfo.CurrentUICulture" /> with another culture. | ||
/// </summary> | ||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] | ||
public class UseCultureAttribute : BeforeAfterTestAttribute | ||
{ | ||
readonly Lazy<CultureInfo> culture; | ||
CultureInfo originalCulture; | ||
CultureInfo originalUICulture; | ||
|
||
/// <summary> | ||
/// Apply this attribute to your test method to replace the | ||
/// <see cref="Thread.CurrentThread" /> <see cref="CultureInfo.CurrentCulture" /> and | ||
/// <see cref="CultureInfo.CurrentUICulture" /> with another culture. | ||
/// Replaces the culture and UI culture of the current thread with | ||
/// <paramref name="culture" /> | ||
/// </summary> | ||
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)] | ||
public class UseCultureAttribute : BeforeAfterTestAttribute | ||
{ | ||
readonly Lazy<CultureInfo> culture; | ||
readonly Lazy<CultureInfo> uiCulture; | ||
CultureInfo originalCulture; | ||
CultureInfo originalUICulture; | ||
|
||
/// <summary> | ||
/// Replaces the culture and UI culture of the current thread with | ||
/// <paramref name="culture" /> | ||
/// </summary> | ||
/// <param name="culture">The name of the culture.</param> | ||
/// <remarks> | ||
/// <para> | ||
/// This constructor overload uses <paramref name="culture" /> for both | ||
/// <see cref="Culture" /> and <see cref="UICulture" />. | ||
/// </para> | ||
/// </remarks> | ||
public UseCultureAttribute(string culture) | ||
: this(culture, culture) | ||
{ } | ||
|
||
/// <summary> | ||
/// Replaces the culture and UI culture of the current thread with | ||
/// <paramref name="culture" /> and <paramref name="uiCulture" /> | ||
/// </summary> | ||
/// <param name="culture">The name of the culture.</param> | ||
/// <param name="uiCulture">The name of the UI culture.</param> | ||
public UseCultureAttribute(string culture, string uiCulture) | ||
{ | ||
this.culture = new(() => new(culture)); | ||
this.uiCulture = new(() => new(uiCulture)); | ||
} | ||
/// <param name="culture">The name of the culture.</param> | ||
/// <remarks> | ||
/// <para> | ||
/// This constructor overload uses <paramref name="culture" /> for both | ||
/// <see cref="Culture" /> and <see cref="UICulture" />. | ||
/// </para> | ||
/// </remarks> | ||
public UseCultureAttribute(string culture) => | ||
this.culture = new(() => new(culture)); | ||
|
||
/// <summary> | ||
/// Gets the culture. | ||
/// </summary> | ||
public CultureInfo Culture => culture.Value; | ||
|
||
/// <summary> | ||
/// Gets the UI culture. | ||
/// </summary> | ||
public CultureInfo UICulture => uiCulture.Value; | ||
/// <summary> | ||
/// Gets the culture. | ||
/// </summary> | ||
public CultureInfo Culture => culture.Value; | ||
|
||
/// <summary> | ||
/// Stores the current <see cref="CultureInfo.CurrentCulture" /> | ||
/// <see cref="CultureInfo.CurrentCulture" /> and <see cref="CultureInfo.CurrentUICulture" /> | ||
/// and replaces them with the new cultures defined in the constructor. | ||
/// </summary> | ||
/// <param name="methodUnderTest">The method under test</param> | ||
public override void Before(MethodInfo methodUnderTest) | ||
{ | ||
originalCulture = CultureInfo.CurrentCulture; | ||
originalUICulture = CultureInfo.CurrentUICulture; | ||
/// <summary> | ||
/// Stores the current <see cref="CultureInfo.CurrentCulture" /> | ||
/// <see cref="CultureInfo.CurrentCulture" /> and <see cref="CultureInfo.CurrentUICulture" /> | ||
/// and replaces them with the new cultures defined in the constructor. | ||
/// </summary> | ||
/// <param name="methodUnderTest">The method under test</param> | ||
public override void Before(MethodInfo methodUnderTest) | ||
{ | ||
originalCulture = CultureInfo.CurrentCulture; | ||
originalUICulture = CultureInfo.CurrentUICulture; | ||
|
||
CultureInfo.CurrentCulture = Culture; | ||
CultureInfo.CurrentUICulture = UICulture; | ||
} | ||
CultureInfo.CurrentCulture = Culture; | ||
CultureInfo.CurrentUICulture = Culture; | ||
} | ||
|
||
/// <summary> | ||
/// Restores the original <see cref="CultureInfo.CurrentCulture" /> and | ||
/// <see cref="CultureInfo.CurrentUICulture" /> to <see cref="CultureInfo.CurrentCulture" /> | ||
/// </summary> | ||
/// <param name="methodUnderTest">The method under test</param> | ||
public override void After(MethodInfo methodUnderTest) | ||
{ | ||
CultureInfo.CurrentCulture = originalCulture; | ||
CultureInfo.CurrentUICulture = originalUICulture; | ||
} | ||
/// <summary> | ||
/// Restores the original <see cref="CultureInfo.CurrentCulture" /> and | ||
/// <see cref="CultureInfo.CurrentUICulture" /> to <see cref="CultureInfo.CurrentCulture" /> | ||
/// </summary> | ||
/// <param name="methodUnderTest">The method under test</param> | ||
public override void After(MethodInfo methodUnderTest) | ||
{ | ||
CultureInfo.CurrentCulture = originalCulture; | ||
CultureInfo.CurrentUICulture = originalUICulture; | ||
} | ||
} | ||
} |