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

Commit 392378c

Browse files
committed
Fixed DateTime.GetDateTimeFormats tests to not hardcode the expected return values.
We cannot assume the date/time formats are not going to change in the underlying OS culture data. But instead the test now tries to Parse the returned string into DateTime and make sure that works.
1 parent fd5d0d9 commit 392378c

File tree

1 file changed

+19
-189
lines changed

1 file changed

+19
-189
lines changed

src/System.Runtime/tests/System/DateTime.cs

Lines changed: 19 additions & 189 deletions
Original file line numberDiff line numberDiff line change
@@ -295,56 +295,35 @@ public static void TestTryParseExactA()
295295
}
296296

297297
[Fact]
298-
[ActiveIssue(846, PlatformID.AnyUnix)]
299298
public static void TestGetDateTimeFormats()
300-
{
301-
var savedCulture = CultureInfo.CurrentCulture;
302-
303-
try
299+
{
300+
char[] allStandardFormats =
304301
{
305-
CultureInfo.CurrentCulture = new CultureInfo("en-US");
306-
DateTime july28 = new DateTime(2009, 7, 28, 5, 23, 15);
302+
'd', 'D', 'f', 'F', 'g', 'G',
303+
'm', 'M', 'o', 'O', 'r', 'R',
304+
's', 't', 'T', 'u', 'U', 'y', 'Y',
305+
};
307306

308-
List<string> actualJuly28Formats = july28.GetDateTimeFormats().ToList();
307+
DateTime july28 = new DateTime(2009, 7, 28, 5, 23, 15);
308+
List<string> july28Formats = new List<string>();
309309

310-
Assert.Equal(expectedJuly28Formats.OrderBy(t => t), actualJuly28Formats.OrderBy(t => t));
311-
}
312-
finally
310+
foreach (char format in allStandardFormats)
313311
{
314-
CultureInfo.CurrentCulture = savedCulture;
315-
}
316-
}
312+
string[] dates = july28.GetDateTimeFormats(format);
317313

318-
[Fact]
319-
[ActiveIssue(846, PlatformID.AnyUnix)]
320-
public static void TestGetDateTimeFormats_FormatSpecifier()
321-
{
322-
var savedCulture = CultureInfo.CurrentCulture;
314+
Assert.True(dates.Length > 0);
323315

324-
try
325-
{
326-
char[] allStandardFormats =
327-
{
328-
'd', 'D', 'f', 'F', 'g', 'G',
329-
'm', 'M', 'o', 'O', 'r', 'R',
330-
's', 't', 'T', 'u', 'U', 'y', 'Y',
331-
};
316+
DateTime parsedDate;
317+
Assert.True(DateTime.TryParseExact(dates[0], format.ToString(), CultureInfo.CurrentCulture, DateTimeStyles.None, out parsedDate));
332318

333-
CultureInfo.CurrentCulture = new CultureInfo("en-US");
334-
DateTime july28 = new DateTime(2009, 7, 28, 5, 23, 15);
319+
july28Formats.AddRange(dates);
320+
}
335321

336-
List<string> actualJuly28Formats = new List<string>();
337-
foreach (char format in allStandardFormats)
338-
{
339-
actualJuly28Formats.AddRange(july28.GetDateTimeFormats(format));
340-
}
322+
List<string> actualJuly28Formats = july28.GetDateTimeFormats().ToList();
323+
Assert.Equal(july28Formats.OrderBy(t => t), actualJuly28Formats.OrderBy(t => t));
341324

342-
Assert.Equal(expectedJuly28Formats.OrderBy(t => t), actualJuly28Formats.OrderBy(t => t));
343-
}
344-
finally
345-
{
346-
CultureInfo.CurrentCulture = savedCulture;
347-
}
325+
actualJuly28Formats = july28.GetDateTimeFormats(CultureInfo.CurrentCulture).ToList();
326+
Assert.Equal(july28Formats.OrderBy(t => t), actualJuly28Formats.OrderBy(t => t));
348327
}
349328

350329
[Fact]
@@ -355,17 +334,6 @@ public static void TestGetDateTimeFormats_FormatSpecifier_InvalidFormat()
355334
Assert.Throws<FormatException>(() => july28.GetDateTimeFormats('x'));
356335
}
357336

358-
[Fact]
359-
[ActiveIssue(846, PlatformID.AnyUnix)]
360-
public static void TestGetDateTimeFormats_FormatProvider()
361-
{
362-
DateTime july28 = new DateTime(2009, 7, 28, 5, 23, 15);
363-
364-
List<string> actualJuly28Formats = july28.GetDateTimeFormats(new CultureInfo("en-US")).ToList();
365-
366-
Assert.Equal(expectedJuly28Formats.OrderBy(t => t), actualJuly28Formats.OrderBy(t => t));
367-
}
368-
369337
internal static void ValidateYearMonthDay(DateTime dt, int year, int month, int day)
370338
{
371339
Assert.Equal(dt.Year, year);
@@ -386,143 +354,5 @@ internal static void ValidateYearMonthDay(DateTime dt, int year, int month, int
386354
ValidateYearMonthDay(dt, year, month, day, hour, minute, second);
387355
Assert.Equal(dt.Millisecond, millisecond);
388356
}
389-
390-
391-
private static List<string> expectedJuly28Formats = new List<string>
392-
{
393-
"7/28/2009",
394-
"7/28/09",
395-
"07/28/09",
396-
"07/28/2009",
397-
"09/07/28",
398-
"2009-07-28",
399-
"28-Jul-09",
400-
"Tuesday, July 28, 2009",
401-
"July 28, 2009",
402-
"Tuesday, 28 July, 2009",
403-
"28 July, 2009",
404-
"Tuesday, July 28, 2009 5:23 AM",
405-
"Tuesday, July 28, 2009 05:23 AM",
406-
"Tuesday, July 28, 2009 5:23",
407-
"Tuesday, July 28, 2009 05:23",
408-
"July 28, 2009 5:23 AM",
409-
"July 28, 2009 05:23 AM",
410-
"July 28, 2009 5:23",
411-
"July 28, 2009 05:23",
412-
"Tuesday, 28 July, 2009 5:23 AM",
413-
"Tuesday, 28 July, 2009 05:23 AM",
414-
"Tuesday, 28 July, 2009 5:23",
415-
"Tuesday, 28 July, 2009 05:23",
416-
"28 July, 2009 5:23 AM",
417-
"28 July, 2009 05:23 AM",
418-
"28 July, 2009 5:23",
419-
"28 July, 2009 05:23",
420-
"Tuesday, July 28, 2009 5:23:15 AM",
421-
"Tuesday, July 28, 2009 05:23:15 AM",
422-
"Tuesday, July 28, 2009 5:23:15",
423-
"Tuesday, July 28, 2009 05:23:15",
424-
"July 28, 2009 5:23:15 AM",
425-
"July 28, 2009 05:23:15 AM",
426-
"July 28, 2009 5:23:15",
427-
"July 28, 2009 05:23:15",
428-
"Tuesday, 28 July, 2009 5:23:15 AM",
429-
"Tuesday, 28 July, 2009 05:23:15 AM",
430-
"Tuesday, 28 July, 2009 5:23:15",
431-
"Tuesday, 28 July, 2009 05:23:15",
432-
"28 July, 2009 5:23:15 AM",
433-
"28 July, 2009 05:23:15 AM",
434-
"28 July, 2009 5:23:15",
435-
"28 July, 2009 05:23:15",
436-
"7/28/2009 5:23 AM",
437-
"7/28/2009 05:23 AM",
438-
"7/28/2009 5:23",
439-
"7/28/2009 05:23",
440-
"7/28/09 5:23 AM",
441-
"7/28/09 05:23 AM",
442-
"7/28/09 5:23",
443-
"7/28/09 05:23",
444-
"07/28/09 5:23 AM",
445-
"07/28/09 05:23 AM",
446-
"07/28/09 5:23",
447-
"07/28/09 05:23",
448-
"07/28/2009 5:23 AM",
449-
"07/28/2009 05:23 AM",
450-
"07/28/2009 5:23",
451-
"07/28/2009 05:23",
452-
"09/07/28 5:23 AM",
453-
"09/07/28 05:23 AM",
454-
"09/07/28 5:23",
455-
"09/07/28 05:23",
456-
"2009-07-28 5:23 AM",
457-
"2009-07-28 05:23 AM",
458-
"2009-07-28 5:23",
459-
"2009-07-28 05:23",
460-
"28-Jul-09 5:23 AM",
461-
"28-Jul-09 05:23 AM",
462-
"28-Jul-09 5:23",
463-
"28-Jul-09 05:23",
464-
"7/28/2009 5:23:15 AM",
465-
"7/28/2009 05:23:15 AM",
466-
"7/28/2009 5:23:15",
467-
"7/28/2009 05:23:15",
468-
"7/28/09 5:23:15 AM",
469-
"7/28/09 05:23:15 AM",
470-
"7/28/09 5:23:15",
471-
"7/28/09 05:23:15",
472-
"07/28/09 5:23:15 AM",
473-
"07/28/09 05:23:15 AM",
474-
"07/28/09 5:23:15",
475-
"07/28/09 05:23:15",
476-
"07/28/2009 5:23:15 AM",
477-
"07/28/2009 05:23:15 AM",
478-
"07/28/2009 5:23:15",
479-
"07/28/2009 05:23:15",
480-
"09/07/28 5:23:15 AM",
481-
"09/07/28 05:23:15 AM",
482-
"09/07/28 5:23:15",
483-
"09/07/28 05:23:15",
484-
"2009-07-28 5:23:15 AM",
485-
"2009-07-28 05:23:15 AM",
486-
"2009-07-28 5:23:15",
487-
"2009-07-28 05:23:15",
488-
"28-Jul-09 5:23:15 AM",
489-
"28-Jul-09 05:23:15 AM",
490-
"28-Jul-09 5:23:15",
491-
"28-Jul-09 05:23:15",
492-
"July 28",
493-
"July 28",
494-
"2009-07-28T05:23:15.0000000",
495-
"2009-07-28T05:23:15.0000000",
496-
"Tue, 28 Jul 2009 05:23:15 GMT",
497-
"Tue, 28 Jul 2009 05:23:15 GMT",
498-
"2009-07-28T05:23:15",
499-
"5:23 AM",
500-
"05:23 AM",
501-
"5:23",
502-
"05:23",
503-
"5:23:15 AM",
504-
"05:23:15 AM",
505-
"5:23:15",
506-
"05:23:15",
507-
"2009-07-28 05:23:15Z",
508-
"Tuesday, July 28, 2009 12:23:15 PM",
509-
"Tuesday, July 28, 2009 12:23:15 PM",
510-
"Tuesday, July 28, 2009 12:23:15",
511-
"Tuesday, July 28, 2009 12:23:15",
512-
"July 28, 2009 12:23:15 PM",
513-
"July 28, 2009 12:23:15 PM",
514-
"July 28, 2009 12:23:15",
515-
"July 28, 2009 12:23:15",
516-
"Tuesday, 28 July, 2009 12:23:15 PM",
517-
"Tuesday, 28 July, 2009 12:23:15 PM",
518-
"Tuesday, 28 July, 2009 12:23:15",
519-
"Tuesday, 28 July, 2009 12:23:15",
520-
"28 July, 2009 12:23:15 PM",
521-
"28 July, 2009 12:23:15 PM",
522-
"28 July, 2009 12:23:15",
523-
"28 July, 2009 12:23:15",
524-
"July 2009",
525-
"July 2009",
526-
};
527357
}
528358

0 commit comments

Comments
 (0)