Browse Source

Fix unit tests culture (#13016)

pull/13020/head
Julien Lebosquain 2 years ago
committed by GitHub
parent
commit
e6c1670421
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs
  2. 6
      tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_DataValidation.cs
  3. 3
      tests/Avalonia.Base.UnitTests/Data/Core/Plugins/DataAnnotationsValidationPluginTests.cs
  4. 42
      tests/Avalonia.UnitTests/InvariantCultureAttribute.cs
  5. 29
      tests/Avalonia.UnitTests/InvariantCultureFixture.cs

5
tests/Avalonia.Base.UnitTests/Data/Core/BindingExpressionTests.cs

@ -2,19 +2,18 @@ using System;
using System.Collections.Generic;
using System.Globalization;
using System.Reactive.Linq;
using System.Threading;
using System.Threading.Tasks;
using Avalonia.Data;
using Avalonia.Data.Converters;
using Avalonia.Data.Core;
using Avalonia.Markup.Parsers;
using Avalonia.UnitTests;
using Moq;
using Xunit;
namespace Avalonia.Base.UnitTests.Data.Core
{
public class BindingExpressionTests : IClassFixture<InvariantCultureFixture>
[InvariantCulture]
public class BindingExpressionTests
{
[Fact]
public async Task Should_Get_Simple_Property_Value()

6
tests/Avalonia.Base.UnitTests/Data/Core/ExpressionObserverTests_DataValidation.cs

@ -1,18 +1,16 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reactive.Linq;
using Avalonia.Data;
using Avalonia.Data.Core;
using Avalonia.Markup.Parsers;
using Avalonia.Threading;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Base.UnitTests.Data.Core
{
public class ExpressionObserverTests_DataValidation : IClassFixture<InvariantCultureFixture>
[InvariantCulture]
public class ExpressionObserverTests_DataValidation
{
////[Fact]
////public void Doesnt_Send_DataValidationError_When_DataValidatation_Not_Enabled()

3
tests/Avalonia.Base.UnitTests/Data/Core/Plugins/DataAnnotationsValidationPluginTests.cs

@ -9,7 +9,8 @@ using Xunit;
namespace Avalonia.Base.UnitTests.Data.Core.Plugins
{
public class DataAnnotationsValidationPluginTests : IClassFixture<InvariantCultureFixture>
[InvariantCulture]
public class DataAnnotationsValidationPluginTests
{
[Fact]
public void Should_Match_Property_With_ValidatorAttribute()

42
tests/Avalonia.UnitTests/InvariantCultureAttribute.cs

@ -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);
}
}

29
tests/Avalonia.UnitTests/InvariantCultureFixture.cs

@ -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…
Cancel
Save