diff --git a/StringLocalizerWithCulture.Tests/StringLocalizerWithCultureTests.cs b/StringLocalizerWithCulture.Tests/StringLocalizerWithCultureTests.cs index 848fd34..d62ded4 100644 --- a/StringLocalizerWithCulture.Tests/StringLocalizerWithCultureTests.cs +++ b/StringLocalizerWithCulture.Tests/StringLocalizerWithCultureTests.cs @@ -10,6 +10,8 @@ public class StringLocalizerWithCultureTests { private readonly IStringLocalizerWithCultureFactory _factory; + private readonly CultureInfo _en = CultureInfo.GetCultureInfo("en-US"); + private readonly CultureInfo _fi = CultureInfo.GetCultureInfo("fi-FI"); public StringLocalizerWithCultureTests() { var services = new ServiceCollection() @@ -33,6 +35,14 @@ private LocalizedString Translate(string key, CultureInfo culture) return result; } + private void TestGetString(string expected, string key, string[] arguments, CultureInfo culture) + { + var localizer = _factory.Create(typeof(MyClass), culture); + var actual = localizer[key, arguments]; + actual.Should().NotBeNull(); + actual.Value.Should().Be(expected); + } + [Fact] public void GetString_Invariant() { @@ -42,26 +52,26 @@ public void GetString_Invariant() [Fact] public void GetString_En() { - TestGetString("Hello World", "Hello", CultureInfo.GetCultureInfo("en-US")); + TestGetString("Hello World", "Hello", _en); } [Fact] public void GetString_Fi() { - TestGetString("Hei maailma", "Hello", CultureInfo.GetCultureInfo("fi-FI")); + TestGetString("Hei maailma", "Hello", _fi); } [Fact] public void GetString_Null() { - this.Invoking(self => self.Translate(null!, CultureInfo.GetCultureInfo("en-US"))) + this.Invoking(self => self.Translate(null!, _en)) .Should().Throw(); } [Fact] public void GetString_Missing() { - Translate("Missing", CultureInfo.GetCultureInfo("en-US")).ResourceNotFound.Should().BeTrue(); + Translate("Missing", _en).ResourceNotFound.Should().BeTrue(); } [Fact] @@ -71,6 +81,17 @@ public void GetString_Typed() localizer["Hello"].Value.Should().Be("Hello World"); } + [Fact] + public void GetString_Param() + { + TestGetString("Hello Mike", "HelloName", new[] { "Mike" }, CultureInfo.InvariantCulture); + } + + [Fact] + public void GetString_Param_Fi() + { + TestGetString("Hei, Mike", "HelloName", new[] { "Mike" }, _fi); + } } class MyClass diff --git a/StringLocalizerWithCulture.Tests/TestData/MyClass.Designer.cs b/StringLocalizerWithCulture.Tests/TestData/MyClass.Designer.cs index a5e27cb..1b63787 100644 --- a/StringLocalizerWithCulture.Tests/TestData/MyClass.Designer.cs +++ b/StringLocalizerWithCulture.Tests/TestData/MyClass.Designer.cs @@ -68,5 +68,14 @@ internal static string Hello { return ResourceManager.GetString("Hello", resourceCulture); } } + + /// + /// Looks up a localized string similar to Hello {0}. + /// + internal static string HelloName { + get { + return ResourceManager.GetString("HelloName", resourceCulture); + } + } } } diff --git a/StringLocalizerWithCulture.Tests/TestData/MyClass.fi.resx b/StringLocalizerWithCulture.Tests/TestData/MyClass.fi.resx index b78446b..838d81f 100644 --- a/StringLocalizerWithCulture.Tests/TestData/MyClass.fi.resx +++ b/StringLocalizerWithCulture.Tests/TestData/MyClass.fi.resx @@ -120,4 +120,7 @@ Hei maailma + + Hei, {0} + \ No newline at end of file diff --git a/StringLocalizerWithCulture.Tests/TestData/MyClass.resx b/StringLocalizerWithCulture.Tests/TestData/MyClass.resx index 54525ad..6988827 100644 --- a/StringLocalizerWithCulture.Tests/TestData/MyClass.resx +++ b/StringLocalizerWithCulture.Tests/TestData/MyClass.resx @@ -120,4 +120,7 @@ Hello World + + Hello {0} + \ No newline at end of file