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" } };
[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);
[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);
{
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]
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 };
[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
}
}
+ [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" }};