Retry date comparison to avoid a rare flake that might be associated with DST

BUG=
R=floitsch@google.com

Review URL: https://codereview.chromium.org//92333002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30767 260f80e4-7a28-3924-810f-c04153c831b5
This commit is contained in:
alanknight@google.com
2013-11-28 19:31:32 +00:00
parent fc15ac395d
commit 59768e00a1
+23 -1
View File
@@ -144,7 +144,7 @@ testRoundTripParsing(String localeName, DateTime date) {
// At least in most cases. In some cases, we can't even do that. e.g.
// the skeleton WEEKDAY can't be reconstructed at all, and YEAR_MONTH
// formats don't give us enough information to construct a valid date.
var badSkeletons = [
var badSkeletons = const [
DateFormat.ABBR_WEEKDAY,
DateFormat.WEEKDAY,
DateFormat.QUARTER,
@@ -156,6 +156,9 @@ testRoundTripParsing(String localeName, DateTime date) {
DateFormat.MONTH_WEEKDAY_DAY,
DateFormat.NUM_MONTH_WEEKDAY_DAY,
DateFormat.ABBR_MONTH_WEEKDAY_DAY];
var originalTime = new DateTime.now();
var originalTimeZoneOffset = date.timeZoneOffset;
var originalTimeZoneName = date.timeZoneName;
for(int i = 0; i < formatsToTest.length; i++) {
var skeleton = formatsToTest[i];
if (!badSkeletons.any((x) => x == skeleton)) {
@@ -163,6 +166,25 @@ testRoundTripParsing(String localeName, DateTime date) {
var actualResult = format.format(date);
var parsed = format.parse(actualResult);
var thenPrintAgain = format.format(parsed);
// We've seen a case where this failed in a way that seemed like a time
// zone shifting or some other strange behaviour that caused an off by
// one error in the date. Check for this and print out as much information
// as possible if it occurs again.
if (thenPrintAgain != actualResult) {
print("Date mismatch!");
print(" Expected $actualResult");
print(" Got $thenPrintAgain");
print(" Original date = $date");
print(" Original ms = ${date.millisecondsSinceEpoch}");
print(" Parsed back to $parsed");
print(" Parsed ms = ${parsed.millisecondsSinceEpoch}");
print(" Original tz = $originalTimeZoneOffset");
print(" Current tz name = $originalTimeZoneName");
print(" Current tz = ${parsed.timeZoneOffset}");
print(" Current tz name = ${parsed.timeZoneName}");
print(" Start time = $originalTime");
print(" Current time ${new DateTime.now()}");
}
expect(thenPrintAgain, equals(actualResult));
}
}