From 9450aa1c8278a3ee8cb9ff8904e410ae1f76e584 Mon Sep 17 00:00:00 2001 From: Tarek Mahmoud Sayed Date: Mon, 8 Feb 2021 09:31:03 -0800 Subject: [PATCH] Fix Numeric Test when Number Grouping is Empty (#47983) --- .../tests/BigInteger/parse.cs | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs index 33c9726f348e35..23440b41d95e38 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/parse.cs @@ -127,6 +127,8 @@ private static void RunFormatProviderParseStrings() VerifyFormatParse("123&4567^ <", NumberStyles.Any, nfi, new BigInteger(-1234567)); } + private static bool NoGrouping(int[] sizes) => sizes.Length == 0 || (sizes.Length == 1 && sizes[0] == 0); + private static void VerifyDefaultParse(Random random) { // BasicTests @@ -219,7 +221,14 @@ private static void VerifyDefaultParse(Random random) sizes = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes; seperator = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator; digits = GenerateGroups(sizes, seperator, random); - VerifyFailParseToString(digits, typeof(FormatException)); + if (NoGrouping(sizes)) + { + VerifyParseToString(digits); + } + else + { + VerifyFailParseToString(digits, typeof(FormatException)); + } } // Exponent @@ -341,7 +350,7 @@ private static void VerifyNumberStyles(NumberStyles ns, Random random) sizes = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes; seperator = CultureInfo.CurrentCulture.NumberFormat.NumberGroupSeparator; digits = GenerateGroups(sizes, seperator, random); - VerifyParseToString(digits, ns, ((ns & NumberStyles.AllowThousands) != 0)); + VerifyParseToString(digits, ns, NoGrouping(sizes) || ((ns & NumberStyles.AllowThousands) != 0)); } // Exponent @@ -727,6 +736,11 @@ private static string GenerateGroups(int[] sizes, string seperator, Random rando int num_digits = random.Next(10, 100); string digits = string.Empty; + if (NoGrouping(sizes)) + { + return GetDigitSequence(1, 100, random); + } + total = 0; total_sizes.Add(0); for (int j = 0; ((j < (sizes.Length - 1)) && (total < 101)); j++)