committed by
GitHub
5 changed files with 48 additions and 37 deletions
@ -0,0 +1,42 @@ |
|||||
|
#nullable enable |
||||
|
|
||||
|
using System; |
||||
|
using System.Globalization; |
||||
|
using System.Reflection; |
||||
|
using Xunit.Sdk; |
||||
|
|
||||
|
namespace Avalonia.UnitTests; |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Runs tests in the invariant culture.
|
||||
|
/// </summary>
|
||||
|
/// <remarks>
|
||||
|
/// Some tests check exception messages, and those from the .NET framework will be translated.
|
||||
|
/// Some tests are formatting numbers, expecting a dot as a decimal point.
|
||||
|
/// Use this fixture to set the current culture to the invariant culture.
|
||||
|
/// </remarks>
|
||||
|
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)] |
||||
|
public sealed class InvariantCultureAttribute : BeforeAfterTestAttribute |
||||
|
{ |
||||
|
private CultureInfo? _previousCulture; |
||||
|
private CultureInfo? _previousUICulture; |
||||
|
|
||||
|
public override void Before(MethodInfo methodUnderTest) |
||||
|
{ |
||||
|
base.Before(methodUnderTest); |
||||
|
|
||||
|
_previousCulture = CultureInfo.CurrentCulture; |
||||
|
_previousUICulture = CultureInfo.CurrentUICulture; |
||||
|
|
||||
|
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; |
||||
|
CultureInfo.CurrentUICulture = CultureInfo.InvariantCulture; |
||||
|
} |
||||
|
|
||||
|
public override void After(MethodInfo methodUnderTest) |
||||
|
{ |
||||
|
CultureInfo.CurrentCulture = _previousCulture!; |
||||
|
CultureInfo.CurrentUICulture = _previousUICulture!; |
||||
|
|
||||
|
base.After(methodUnderTest); |
||||
|
} |
||||
|
} |
||||
@ -1,29 +0,0 @@ |
|||||
using System; |
|
||||
using System.Globalization; |
|
||||
using System.Threading; |
|
||||
|
|
||||
namespace Avalonia.UnitTests |
|
||||
{ |
|
||||
/// <summary>
|
|
||||
/// Runs tests in the invariant culture.
|
|
||||
/// </summary>
|
|
||||
/// <remarks>
|
|
||||
/// Some tests check exception messages, and those from the .NET framework will be translated.
|
|
||||
/// Use this fixture to set the current culture to the invariant culture.
|
|
||||
/// </remarks>
|
|
||||
public class InvariantCultureFixture : IDisposable |
|
||||
{ |
|
||||
private CultureInfo _restore; |
|
||||
|
|
||||
public InvariantCultureFixture() |
|
||||
{ |
|
||||
_restore = CultureInfo.CurrentCulture; |
|
||||
CultureInfo.CurrentCulture = CultureInfo.InvariantCulture; |
|
||||
} |
|
||||
|
|
||||
public void Dispose() |
|
||||
{ |
|
||||
CultureInfo.CurrentCulture = _restore; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue