Skip to content

Commit 35a598b

Browse files
Fixed System.Tests.DateTimeTests.TryFormat_MatchesToString test (dotnet#87693)
Co-authored-by: Stephen Toub <[email protected]>
1 parent e834d42 commit 35a598b

File tree

1 file changed

+46
-40
lines changed

1 file changed

+46
-40
lines changed

src/libraries/System.Runtime/tests/System/DateTimeTests.cs

Lines changed: 46 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2735,48 +2735,54 @@ internal struct SYSTEMTIME
27352735
public static void TryFormat_MatchesToString(string format)
27362736
{
27372737
DateTime dt = DateTime.UtcNow;
2738-
string expected = dt.ToString(format);
2739-
2740-
// UTF16
2738+
foreach (CultureInfo culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
27412739
{
2742-
// Just the right length, succeeds
2743-
Span<char> dest = new char[expected.Length];
2744-
Assert.True(dt.TryFormat(dest, out int charsWritten, format));
2745-
Assert.Equal(expected.Length, charsWritten);
2746-
Assert.Equal<char>(expected.ToCharArray(), dest.ToArray());
2747-
2748-
// Too short, fails
2749-
dest = new char[expected.Length - 1];
2750-
Assert.False(dt.TryFormat(dest, out charsWritten, format));
2751-
Assert.Equal(0, charsWritten);
2752-
2753-
// Longer than needed, succeeds
2754-
dest = new char[expected.Length + 1];
2755-
Assert.True(dt.TryFormat(dest, out charsWritten, format));
2756-
Assert.Equal(expected.Length, charsWritten);
2757-
Assert.Equal<char>(expected.ToCharArray(), dest.Slice(0, expected.Length).ToArray());
2758-
Assert.Equal(0, dest[dest.Length - 1]);
2759-
}
2740+
using (new ThreadCultureChange(culture))
2741+
{
2742+
string expected = dt.ToString(format);
27602743

2761-
// UTF8
2762-
{
2763-
// Just the right length, succeeds
2764-
Span<byte> dest = new byte[Encoding.UTF8.GetByteCount(expected)];
2765-
Assert.True(dt.TryFormat(dest, out int bytesWritten, format));
2766-
Assert.Equal(dest.Length, bytesWritten);
2767-
Assert.Equal(expected, Encoding.UTF8.GetString(dest));
2768-
2769-
// Too short, fails
2770-
dest = new byte[Encoding.UTF8.GetByteCount(expected) - 1];
2771-
Assert.False(dt.TryFormat(dest, out bytesWritten, format));
2772-
Assert.Equal(0, bytesWritten);
2773-
2774-
// Longer than needed, succeeds
2775-
dest = new byte[Encoding.UTF8.GetByteCount(expected) + 1];
2776-
Assert.True(dt.TryFormat(dest, out bytesWritten, format));
2777-
Assert.Equal(dest.Length - 1, bytesWritten);
2778-
Assert.Equal(expected, Encoding.UTF8.GetString(dest.Slice(0, bytesWritten)));
2779-
Assert.Equal(0, dest[dest.Length - 1]);
2744+
// UTF16
2745+
{
2746+
// Just the right length, succeeds
2747+
Span<char> dest = new char[expected.Length];
2748+
Assert.True(dt.TryFormat(dest, out int charsWritten, format));
2749+
Assert.Equal(expected.Length, charsWritten);
2750+
Assert.Equal<char>(expected.ToCharArray(), dest.ToArray());
2751+
2752+
// Too short, fails
2753+
dest = new char[expected.Length - 1];
2754+
Assert.False(dt.TryFormat(dest, out charsWritten, format));
2755+
Assert.Equal(0, charsWritten);
2756+
2757+
// Longer than needed, succeeds
2758+
dest = new char[expected.Length + 1];
2759+
Assert.True(dt.TryFormat(dest, out charsWritten, format));
2760+
Assert.Equal(expected.Length, charsWritten);
2761+
Assert.Equal<char>(expected.ToCharArray(), dest.Slice(0, expected.Length).ToArray());
2762+
Assert.Equal(0, dest[dest.Length - 1]);
2763+
}
2764+
2765+
// UTF8
2766+
{
2767+
// Just the right length, succeeds
2768+
Span<byte> dest = new byte[Encoding.UTF8.GetByteCount(expected)];
2769+
Assert.True(dt.TryFormat(dest, out int bytesWritten, format));
2770+
Assert.Equal(dest.Length, bytesWritten);
2771+
Assert.Equal(expected, Encoding.UTF8.GetString(dest));
2772+
2773+
// Too short, fails
2774+
dest = new byte[Encoding.UTF8.GetByteCount(expected) - 1];
2775+
Assert.False(dt.TryFormat(dest, out bytesWritten, format));
2776+
Assert.Equal(0, bytesWritten);
2777+
2778+
// Longer than needed, succeeds
2779+
dest = new byte[Encoding.UTF8.GetByteCount(expected) + 1];
2780+
Assert.True(dt.TryFormat(dest, out bytesWritten, format));
2781+
Assert.Equal(dest.Length - 1, bytesWritten);
2782+
Assert.Equal(expected, Encoding.UTF8.GetString(dest.Slice(0, bytesWritten)));
2783+
Assert.Equal(0, dest[dest.Length - 1]);
2784+
}
2785+
}
27802786
}
27812787
}
27822788

0 commit comments

Comments
 (0)