diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/TestCommon/CommonTestCode.cs b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/TestCommon/CommonTestCode.cs index ee9ce0b7c7..b5991fd3ab 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/TestCommon/CommonTestCode.cs +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/TestCommon/CommonTestCode.cs @@ -5,6 +5,7 @@ using System; using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.Windows.ApplicationModel.Resources; +using Microsoft.Windows.Globalization; #else using System; using System.ComponentModel; @@ -18,6 +19,7 @@ using WEX.TestExecution; using WEX.TestExecution.Markup; using Microsoft.Windows.ApplicationModel.Resources; +using Microsoft.Windows.Globalization; #endif namespace CommonTestCode @@ -585,4 +587,23 @@ public static void NoResourceFileWithContextTest() Verify.IsNull(resourceCandidate); } } + + public class ApplicationLanguagesTest + { + public static void PrimaryLanguageOverrideAcceptsEmptyStringTest() + { + ApplicationLanguages.PrimaryLanguageOverride = "fr-FR"; + ApplicationLanguages.PrimaryLanguageOverride = ""; + + Verify.AreEqual(ApplicationLanguages.PrimaryLanguageOverride, ""); + } + + public static void PrimaryLanguageOverrideAcceptsNullStringTest() + { + ApplicationLanguages.PrimaryLanguageOverride = "fr-FR"; + ApplicationLanguages.PrimaryLanguageOverride = null; + + Verify.AreEqual(ApplicationLanguages.PrimaryLanguageOverride, ""); // C# projection of null HSTRING is empty string + } + } } diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/ApplicationLanguages.cpp b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/ApplicationLanguages.cpp index 892a3ab55a..604eebc95c 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/ApplicationLanguages.cpp +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/src/ApplicationLanguages.cpp @@ -41,7 +41,7 @@ namespace winrt::Microsoft::Windows::Globalization::implementation void ApplicationLanguages::PrimaryLanguageOverride(hstring const& language) { - bool isValidLanguageTag = IsWellFormedTag(language.c_str()); + bool isValidLanguageTag = language.empty() || IsWellFormedTag(language.c_str()); THROW_HR_IF_MSG(E_INVALIDARG, !isValidLanguageTag, "The parameter is incorrect"); diff --git a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/unittests/UnitTest.cs b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/unittests/UnitTest.cs index b234aea5a7..528a55c93f 100644 --- a/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/unittests/UnitTest.cs +++ b/dev/MRTCore/mrt/Microsoft.Windows.ApplicationModel.Resources/unittests/UnitTest.cs @@ -3,6 +3,7 @@ using System; using Microsoft.Windows.ApplicationModel.Resources; +using Microsoft.Windows.Globalization; using WEX.Common.Managed; using WEX.Logging.Interop; using WEX.TestExecution; @@ -165,4 +166,30 @@ public void NoResourceFileWithContextTest() CommonTestCode.ResourceContextTest.NoResourceFileWithContextTest(); } } + + [TestClass] + public class ApplicationLanguagesTest + { + [TestMethod] + public void PrimaryLanguageOverrideAcceptsEmptyStringTest() + { + CommonTestCode.ApplicationLanguagesTest.PrimaryLanguageOverrideAcceptsEmptyStringTest(); + } + + [TestMethod] + public void PrimaryLanguageOverrideAcceptsNullStringTest() + { + CommonTestCode.ApplicationLanguagesTest.PrimaryLanguageOverrideAcceptsNullStringTest(); + } + + [TestMethod] + public void PrimaryLanguageOverrideSetsWindowsValueTest() + { + ApplicationLanguages.PrimaryLanguageOverride = "fr-FR"; + Verify.AreEqual(Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride, "fr-FR"); + + ApplicationLanguages.PrimaryLanguageOverride = null; + Verify.AreEqual(Windows.Globalization.ApplicationLanguages.PrimaryLanguageOverride, ""); // C# projection of null HSTRING is empty string + } + } }