#nullable enable
using System;
using System.Globalization;
using System.Reflection;
using Xunit.Sdk;
namespace Avalonia.UnitTests;
/// 
/// Runs tests in the invariant culture.
/// 
/// 
/// 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.
/// 
[AttributeUsage(AttributeTargets.Assembly | 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);
    }
}