Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit f9dfb61

Browse files
authored
Fix Utf8ParserFormatter test culture settings dependency (#27729)
Fixes https://github.com/dotnet/corefx/issues/27664 Make sure we're always using the invariant culture when generating test data using the classic .NET api.
1 parent 55adec5 commit f9dfb61

File tree

5 files changed

+36
-31
lines changed

5 files changed

+36
-31
lines changed

src/System.Memory/tests/ParsersAndFormatters/Parser/TestData.Parser.Integer.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System.Linq;
6+
using System.Globalization;
67
using System.Numerics;
78
using System.Collections.Generic;
89

@@ -212,8 +213,8 @@ private static IEnumerable<ParserTestData<T>> GeneralIntegerParserTestData<T>()
212213
for (int offset = -20; offset <= 0; offset++)
213214
{
214215
BigInteger bigValue = maxValue + offset;
215-
string textD = bigValue.ToString("D");
216-
string text = bigValue.ToString(format.Symbol.ToString());
216+
string textD = bigValue.ToString("D", CultureInfo.InvariantCulture);
217+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
217218
T expectedValue = (T)(Convert.ChangeType(textD, typeof(T)));
218219
yield return new ParserTestData<T>(text, expectedValue, format.Symbol, expectedSuccess: true);
219220
}
@@ -222,13 +223,13 @@ private static IEnumerable<ParserTestData<T>> GeneralIntegerParserTestData<T>()
222223
for (int offset = 1; offset <= 20; offset++)
223224
{
224225
BigInteger bigValue = maxValue + offset;
225-
string text = bigValue.ToString(format.Symbol.ToString());
226+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
226227
yield return new ParserTestData<T>(text, default, format.Symbol, expectedSuccess: false);
227228
}
228229

229230
{
230231
BigInteger bigValue = maxValue * 10;
231-
string text = bigValue.ToString(format.Symbol.ToString());
232+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
232233
yield return new ParserTestData<T>(text, default, format.Symbol, expectedSuccess: false);
233234
}
234235

@@ -238,8 +239,8 @@ private static IEnumerable<ParserTestData<T>> GeneralIntegerParserTestData<T>()
238239
for (int offset = 0; offset <= 20; offset++)
239240
{
240241
BigInteger bigValue = minValue + offset;
241-
string textD = bigValue.ToString("D");
242-
string text = bigValue.ToString(format.Symbol.ToString());
242+
string textD = bigValue.ToString("D", CultureInfo.InvariantCulture);
243+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
243244
T expectedValue = (T)(Convert.ChangeType(textD, typeof(T)));
244245
yield return new ParserTestData<T>(text, expectedValue, format.Symbol, expectedSuccess: true);
245246
}
@@ -248,13 +249,13 @@ private static IEnumerable<ParserTestData<T>> GeneralIntegerParserTestData<T>()
248249
for (int offset = -20; offset <= -1; offset++)
249250
{
250251
BigInteger bigValue = minValue + offset;
251-
string text = bigValue.ToString(format.Symbol.ToString());
252+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
252253
yield return new ParserTestData<T>(text, default, format.Symbol, expectedSuccess: false);
253254
}
254255

255256
{
256257
BigInteger bigValue = minValue * 10;
257-
string text = bigValue.ToString(format.Symbol.ToString());
258+
string text = bigValue.ToString(format.Symbol.ToString(), CultureInfo.InvariantCulture);
258259
yield return new ParserTestData<T>(text, default, format.Symbol, expectedSuccess: false);
259260
}
260261
}

src/System.Memory/tests/ParsersAndFormatters/Parser/TestData.Parser.TimeSpan.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System.Text;
66
using System.Linq;
7+
using System.Globalization;
78
using System.Collections.Generic;
89

910
namespace System.Buffers.Text.Tests
@@ -45,7 +46,7 @@ private static IEnumerable<string> TimeSpanCombinatorialData
4546
StringBuilder sb = new StringBuilder();
4647
for (int i = 0; i < numComponents; i++)
4748
{
48-
sb.Append((20 + i).ToString());
49+
sb.Append((20 + i).ToString("D", CultureInfo.InvariantCulture));
4950
if (i != numComponents - 1)
5051
{
5152
char separator = ((separatorMask & (1 << i)) != 0) ? '.' : ':';

src/System.Memory/tests/ParsersAndFormatters/PseudoDateTime.cs

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5+
using System.Globalization;
6+
57
namespace System.Buffers.Text.Tests
68
{
79
//
@@ -38,9 +40,9 @@ public string DefaultString
3840
if (Fraction != 0)
3941
return null;
4042

41-
return Month.ToString("D2") + "/" + Day.ToString("D2") + "/" + Year.ToString("D4") +
42-
" " + Hour.ToString("D2") + ":" + Minute.ToString("D2") + ":" + Second.ToString("D2") +
43-
" " + (OffsetNegative ? "-" : "+") + OffsetHours.ToString("D2") + ":" + OffsetMinutes.ToString("D2");
43+
return Month.ToString("D2", CultureInfo.InvariantCulture) + "/" + Day.ToString("D2", CultureInfo.InvariantCulture) + "/" + Year.ToString("D4", CultureInfo.InvariantCulture) +
44+
" " + Hour.ToString("D2", CultureInfo.InvariantCulture) + ":" + Minute.ToString("D2", CultureInfo.InvariantCulture) + ":" + Second.ToString("D2", CultureInfo.InvariantCulture) +
45+
" " + (OffsetNegative ? "-" : "+") + OffsetHours.ToString("D2", CultureInfo.InvariantCulture) + ":" + OffsetMinutes.ToString("D2", CultureInfo.InvariantCulture);
4446
}
4547
}
4648

@@ -53,8 +55,8 @@ public string GFormatString
5355
if (OffsetHours != 0 || OffsetMinutes != 0)
5456
return null;
5557

56-
return Month.ToString("D2") + "/" + Day.ToString("D2") + "/" + Year.ToString("D4") +
57-
" " + Hour.ToString("D2") + ":" + Minute.ToString("D2") + ":" + Second.ToString("D2");
58+
return Month.ToString("D2", CultureInfo.InvariantCulture) + "/" + Day.ToString("D2", CultureInfo.InvariantCulture) + "/" + Year.ToString("D4", CultureInfo.InvariantCulture) +
59+
" " + Hour.ToString("D2", CultureInfo.InvariantCulture) + ":" + Minute.ToString("D2", CultureInfo.InvariantCulture) + ":" + Second.ToString("D2", CultureInfo.InvariantCulture);
5860
}
5961
}
6062

@@ -94,8 +96,8 @@ public string RFormatString
9496
monthAbbrevation = "Jan";
9597
}
9698

97-
return dayAbbreviation + ", " + Day.ToString("D2") + " " + monthAbbrevation + " " + Year.ToString("D4") + " "
98-
+ Hour.ToString("D2") + ":" + Minute.ToString("D2") + ":" + Second.ToString("D2") + " "
99+
return dayAbbreviation + ", " + Day.ToString("D2", CultureInfo.InvariantCulture) + " " + monthAbbrevation + " " + Year.ToString("D4", CultureInfo.InvariantCulture) + " "
100+
+ Hour.ToString("D2", CultureInfo.InvariantCulture) + ":" + Minute.ToString("D2", CultureInfo.InvariantCulture) + ":" + Second.ToString("D2", CultureInfo.InvariantCulture) + " "
99101
+ "GMT";
100102
}
101103
}
@@ -109,8 +111,8 @@ public string OFormatStringNoOffset
109111
if (OffsetHours != 0 || OffsetMinutes != 0)
110112
return null;
111113

112-
return Year.ToString("D4") + "-" + Month.ToString("D2") + "-" + Day.ToString("D2") + "T"
113-
+ Hour.ToString("D2") + ":" + Minute.ToString("D2") + ":" + Second.ToString("D2")
114+
return Year.ToString("D4", CultureInfo.InvariantCulture) + "-" + Month.ToString("D2", CultureInfo.InvariantCulture) + "-" + Day.ToString("D2", CultureInfo.InvariantCulture) + "T"
115+
+ Hour.ToString("D2", CultureInfo.InvariantCulture) + ":" + Minute.ToString("D2", CultureInfo.InvariantCulture) + ":" + Second.ToString("D2", CultureInfo.InvariantCulture)
114116
+ "." + Fraction.ToString("D7");
115117
}
116118
}
@@ -120,10 +122,10 @@ public string OFormatStringOffset
120122
{
121123
get
122124
{
123-
return Year.ToString("D4") + "-" + Month.ToString("D2") + "-" + Day.ToString("D2") + "T"
124-
+ Hour.ToString("D2") + ":" + Minute.ToString("D2") + ":" + Second.ToString("D2")
125-
+ "." + Fraction.ToString("D7")
126-
+ (OffsetNegative ? "-" : "+") + OffsetHours.ToString("D2") + ":" + OffsetMinutes.ToString("D2");
125+
return Year.ToString("D4", CultureInfo.InvariantCulture) + "-" + Month.ToString("D2", CultureInfo.InvariantCulture) + "-" + Day.ToString("D2", CultureInfo.InvariantCulture) + "T"
126+
+ Hour.ToString("D2", CultureInfo.InvariantCulture) + ":" + Minute.ToString("D2", CultureInfo.InvariantCulture) + ":" + Second.ToString("D2", CultureInfo.InvariantCulture)
127+
+ "." + Fraction.ToString("D7", CultureInfo.InvariantCulture)
128+
+ (OffsetNegative ? "-" : "+") + OffsetHours.ToString("D2", CultureInfo.InvariantCulture) + ":" + OffsetMinutes.ToString("D2", CultureInfo.InvariantCulture);
127129
}
128130
}
129131

src/System.Memory/tests/ParsersAndFormatters/TestData.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// See the LICENSE file in the project root for more information.
44

55
using System.Linq;
6+
using System.Globalization;
67
using System.Collections.Generic;
78

89
namespace System.Buffers.Text.Tests
@@ -397,16 +398,16 @@ public static IEnumerable<string> NumberTestData
397398
yield return "0.000045";
398399
yield return "000000123.000045";
399400

400-
yield return decimal.MinValue.ToString("G");
401-
yield return decimal.MaxValue.ToString("G");
401+
yield return decimal.MinValue.ToString("G", CultureInfo.InvariantCulture);
402+
yield return decimal.MaxValue.ToString("G", CultureInfo.InvariantCulture);
402403

403-
yield return float.MinValue.ToString("G9");
404-
yield return float.MaxValue.ToString("G9");
405-
yield return float.Epsilon.ToString("G9");
404+
yield return float.MinValue.ToString("G9", CultureInfo.InvariantCulture);
405+
yield return float.MaxValue.ToString("G9", CultureInfo.InvariantCulture);
406+
yield return float.Epsilon.ToString("G9", CultureInfo.InvariantCulture);
406407

407-
yield return double.MinValue.ToString("G17");
408-
yield return double.MaxValue.ToString("G17");
409-
yield return double.Epsilon.ToString("G9");
408+
yield return double.MinValue.ToString("G17", CultureInfo.InvariantCulture);
409+
yield return double.MaxValue.ToString("G17", CultureInfo.InvariantCulture);
410+
yield return double.Epsilon.ToString("G9", CultureInfo.InvariantCulture);
410411

411412
yield return "1e";
412413
yield return "1e+";

src/System.Memory/tests/ParsersAndFormatters/TestUtils.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public static string DisplayString(this object value)
6262

6363
string sign = isNegative ? "-" : "+";
6464

65-
return "[" + sign + dec.ToString("G") + ", scale=" + scale + "]";
65+
return "[" + sign + dec.ToString("G", CultureInfo.InvariantCulture) + ", scale=" + scale + "]";
6666
}
6767
else if (value is TimeSpan timeSpan)
6868
{

0 commit comments

Comments
 (0)