Fix Globalization Tests (#88969)
authorTarek Mahmoud Sayed <tarekms@microsoft.com>
Mon, 17 Jul 2023 23:28:07 +0000 (16:28 -0700)
committerGitHub <noreply@github.com>
Mon, 17 Jul 2023 23:28:07 +0000 (16:28 -0700)
src/libraries/System.Globalization/tests/CultureInfo/CultureInfoCtor.cs
src/libraries/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoCurrencyGroupSizes.cs
src/libraries/System.Globalization/tests/NumberFormatInfo/NumberFormatInfoTests.cs

index 44386fa..f1af25e 100644 (file)
@@ -254,8 +254,8 @@ namespace System.Globalization.Tests
             yield return new object[] { "pa-IN", new [] { "pa-IN" }};
             yield return new object[] { "pl", new [] { "pl" } };
             yield return new object[] { "pl-PL", new [] { "pl-PL" } };
-            yield return new object[] { "prs", new [] { "prs" }};
-            yield return new object[] { "prs-AF", new [] { "prs-AF" }};
+            yield return new object[] { "prs", new [] { "prs", "fa" } };
+            yield return new object[] { "prs-AF", new [] { "prs-AF", "fa-AF" }};
             yield return new object[] { "ps", new [] { "ps" }};
             yield return new object[] { "ps-AF", new [] { "ps-AF" }};
             yield return new object[] { "pt", new [] { "pt" } };
@@ -386,7 +386,6 @@ namespace System.Globalization.Tests
 
         [Theory]
         [MemberData(nameof(Ctor_String_TestData))]
-        [ActiveIssue("https://github.com/dotnet/runtime/issues/79867", typeof(PlatformDetection), nameof(PlatformDetection.IsArm64Process), nameof(PlatformDetection.IsWindows))]
         public void Ctor_String(string name, string[] expectedNames)
         {
             CultureInfo culture = new CultureInfo(name);
@@ -458,7 +457,7 @@ namespace System.Globalization.Tests
         [InlineData("qps-plocm", "qps-PLOCM")] // ICU normalize this name to "qps--plocm" which we normalize it back to "qps-plocm"
         [InlineData("zh_CN", "zh_cn")]
         [InlineData("km_KH", "km_kh")]
-        [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsIcuGlobalization))]
+        [ConditionalTheory(typeof(PlatformDetection), nameof(PlatformDetection.IsIcuGlobalization), nameof(PlatformDetection.IsNotWindowsServerCore))]
         public void TestCreationWithICUNormalizedNames(string cultureName, string expectedCultureName)
         {
             CultureInfo ci = CultureInfo.GetCultureInfo(cultureName);
index af91fe4..079c355 100644 (file)
@@ -10,21 +10,21 @@ namespace System.Globalization.Tests
     {
         public static IEnumerable<object[]> CurrencyGroupSizes_TestData()
         {
-            yield return new object[] { NumberFormatInfo.InvariantInfo, new int[] { 3 } };
-            yield return new object[] { CultureInfo.GetCultureInfo("en-US").NumberFormat, new int[] { 3 } };
+            yield return new object[] { NumberFormatInfo.InvariantInfo, new int[] { 3 }, null };
+            yield return new object[] { CultureInfo.GetCultureInfo("en-US").NumberFormat, new int[] { 3 }, null };
 
             if (PlatformDetection.IsNotUsingLimitedCultures && !PlatformDetection.IsUbuntu && !PlatformDetection.IsWindows7 && !PlatformDetection.IsWindows8x && !PlatformDetection.IsFedora)
             {
-                yield return new object[] { CultureInfo.GetCultureInfo("ur-IN").NumberFormat, new int[] { 3, 2 } };
+                yield return new object[] { CultureInfo.GetCultureInfo("ur-IN").NumberFormat, new int[] { 3, 2 },  new int[] { 3 }};
             }
         }
 
         [Theory]
         [MemberData(nameof(CurrencyGroupSizes_TestData))]
-        [ActiveIssue("https://github.com/dotnet/runtime/issues/79867", typeof(PlatformDetection), nameof(PlatformDetection.IsArm64Process), nameof(PlatformDetection.IsWindows))]
-        public void CurrencyGroupSizes_Get_ReturnsExpected(NumberFormatInfo format, int[] expected)
+        public void CurrencyGroupSizes_Get_ReturnsExpected(NumberFormatInfo format, int[] expected, int [] expectedAlternative)
         {
-            Assert.Equal(expected, format.CurrencyGroupSizes);
+            Assert.True(format.CurrencyGroupSizes.AsSpan().SequenceEqual(expected.AsSpan()) || format.CurrencyGroupSizes.AsSpan().SequenceEqual(expectedAlternative.AsSpan()),
+            $"Expected {string.Join(", ", expected)} or {string.Join(", ", expectedAlternative ?? Array.Empty<int>())}, got {string.Join(", ", format.CurrencyGroupSizes)}");
         }
 
         [Theory]
index 50d4539..86f74e9 100644 (file)
@@ -54,8 +54,6 @@ namespace System.Globalization.Tests
             yield return new object[] { "nqo-GN"    , DigitShapes.NativeNational };
             yield return new object[] { "pa-Arab"   , DigitShapes.NativeNational };
             yield return new object[] { "pa-Arab-PK", DigitShapes.NativeNational };
-            yield return new object[] { "prs"       , DigitShapes.NativeNational };
-            yield return new object[] { "prs-AF"    , DigitShapes.NativeNational };
             yield return new object[] { "ps"        , DigitShapes.NativeNational };
             yield return new object[] { "ps-AF"     , DigitShapes.NativeNational };
             yield return new object[] { "sd"        , DigitShapes.NativeNational };
@@ -102,7 +100,6 @@ namespace System.Globalization.Tests
 
         [Theory]
         [MemberData(nameof(DigitSubstitution_TestData))]
-        [ActiveIssue("https://github.com/dotnet/runtime/issues/79867", typeof(PlatformDetection), nameof(PlatformDetection.IsArm64Process), nameof(PlatformDetection.IsWindows))]
         public void DigitSubstitutionListTest(string cultureName, DigitShapes shape)
         {
             try
@@ -116,6 +113,24 @@ namespace System.Globalization.Tests
             }
         }
 
+        [Theory]
+        [InlineData("prs")]
+        [InlineData("prs-AF")]
+        public void PrsNativeDigitsTest(string cultureName)
+        {
+            try
+            {
+                CultureInfo ci = CultureInfo.GetCultureInfo(cultureName);
+
+                // Some OS's set the DigitSubstitution to Context for the culture "prs" and "prs-AF". Majority of Os's set it to NativeNational.
+                Assert.True(ci.NumberFormat.DigitSubstitution == DigitShapes.Context || ci.NumberFormat.DigitSubstitution == DigitShapes.NativeNational);
+            }
+            catch (CultureNotFoundException)
+            {
+                // ignore the cultures that we cannot create as it is not supported on the platforms
+            }
+        }
+
         public static IEnumerable<object[]> NativeDigitTestData()
         {
             yield return new object[] { "ccp-Cakm-BD", new string[] { "\U0001E950", "\U0001E951", "\U0001E952", "\U0001E953", "\U0001E954", "\U0001E955", "\U0001E956", "\U0001E957", "\U0001E958", "\U0001E959" }};