Skip to content
This repository was archived by the owner on May 1, 2024. It is now read-only.

Fix Singleton Pattern for LocalizationResourceManager #919

Merged
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,18 @@
using Xamarin.CommunityToolkit.UnitTests.Mocks;
using Xunit;

namespace Xamarin.CommunityToolkit.UnitTests.Helpers.WeakEventManagerTests
namespace Xamarin.CommunityToolkit.UnitTests.Helpers.LocalizationResourceManagerTests
{
[Collection(nameof(LocalizationResourceManager))]
public class LocalizationResourceManagerTests
{
public LocalizationResourceManagerTests()
{
resourceManager = new MockResourceManager();
#pragma warning disable CS0618 // Type or member is obsolete
localizationManager = new LocalizationResourceManager();
#pragma warning restore CS0618 // Type or member is obsolete
localizationManager.Init(resourceManager, initialCulture);
}

readonly LocalizationResourceManager localizationManager;
readonly LocalizationResourceManager localizationManager = LocalizationResourceManager.Current;
readonly CultureInfo initialCulture = CultureInfo.InvariantCulture;
readonly ResourceManager resourceManager;

Expand Down Expand Up @@ -49,15 +47,15 @@ public void LocalizationResourceManager_PropertyChanged_Triggered()
{
// Arrange
var culture2 = new CultureInfo("en");
localizationManager.SetCulture(culture2);
localizationManager.CurrentCulture = culture2;
CultureInfo changedCulture = null;
localizationManager.PropertyChanged += (s, e) => changedCulture = localizationManager.CurrentCulture;

// Act, Assert
localizationManager.Init(resourceManager, initialCulture);
Assert.Equal(initialCulture, changedCulture);

localizationManager.SetCulture(culture2);
localizationManager.CurrentCulture = culture2;
Assert.Equal(culture2, changedCulture);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,19 @@

namespace Xamarin.CommunityToolkit.UnitTests.Helpers.LocalizedStringTests
{
[Collection(nameof(LocalizationResourceManager))]
public class LocalizedStringTests
{
public LocalizedStringTests()
{
resourceManager = new MockResourceManager();
#pragma warning disable CS0618 // Type or member is obsolete
localizationManager = new LocalizationResourceManager();
#pragma warning restore CS0618 // Type or member is obsolete
localizationManager.Init(resourceManager, initialCulture);
}

readonly LocalizationResourceManager localizationManager;
readonly LocalizationResourceManager localizationManager = LocalizationResourceManager.Current;
readonly CultureInfo initialCulture = CultureInfo.InvariantCulture;
readonly ResourceManager resourceManager;

LocalizedString localizedString;

[Fact]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,14 @@ namespace Xamarin.CommunityToolkit.Helpers
#if !NETSTANDARD1_0
public class LocalizationResourceManager : ObservableObject
{
#pragma warning disable CS0618 // Type or member is obsolete
public static LocalizationResourceManager Current { get; } = new LocalizationResourceManager();
#pragma warning restore CS0618 // Type or member is obsolete
static readonly Lazy<LocalizationResourceManager> currentHolder = new Lazy<LocalizationResourceManager>(() => new LocalizationResourceManager());

public static LocalizationResourceManager Current => currentHolder.Value;

ResourceManager resourceManager;
CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture;

[Obsolete("Please use the Current property instead of creating a new instance of this class")]
[EditorBrowsable(EditorBrowsableState.Never)]
public LocalizationResourceManager()
LocalizationResourceManager()
{
}

Expand Down