Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(108)

Unified Diff: snapshot/system_snapshot_mac_test.cc

Issue 626093005: Improve SystemSnapshotMac::TimeZone()’s computation of UTC offsets (Closed) Base URL: https://chromium.googlesource.com/crashpad/crashpad@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« snapshot/system_snapshot_mac.cc ('K') | « snapshot/system_snapshot_mac.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: snapshot/system_snapshot_mac_test.cc
diff --git a/snapshot/system_snapshot_mac_test.cc b/snapshot/system_snapshot_mac_test.cc
index 1a548ef5786cd927f577eacb1cfd8500278a6f4f..1f9d10174852cf337a0207220a6806d1d56caa09 100644
--- a/snapshot/system_snapshot_mac_test.cc
+++ b/snapshot/system_snapshot_mac_test.cc
@@ -15,6 +15,7 @@
#include "snapshot/system_snapshot_mac.h"
#include <sys/time.h>
+#include <time.h>
#include <string>
@@ -86,7 +87,7 @@ TEST_F(SystemSnapshotMacTest, CPUVendor) {
// Apple has only shipped Intel x86-family CPUs, but here’s a small nod to the
// “Hackintosh” crowd.
if (cpu_vendor != "GenuineIntel" && cpu_vendor != "AuthenticAMD") {
- FAIL() << cpu_vendor;
+ FAIL() << "cpu_vendor " << cpu_vendor;
}
#else
#error port to your architecture
@@ -127,4 +128,48 @@ TEST_F(SystemSnapshotMacTest, MachineDescription) {
EXPECT_FALSE(system_snapshot().MachineDescription().empty());
}
+TEST_F(SystemSnapshotMacTest, TimeZone) {
+ SystemSnapshot::DaylightSavingTimeStatus dst_status;
+ int standard_offset_seconds;
+ int daylight_offset_seconds;
+ std::string standard_name;
+ std::string daylight_name;
+
+ system_snapshot().TimeZone(&dst_status,
+ &standard_offset_seconds,
+ &daylight_offset_seconds,
+ &standard_name,
+ &daylight_name);
+
+ // |standard_offset_seconds| gives seconds east of UTC, and |timezone| gives
+ // seconds west of UTC.
+ EXPECT_EQ(-timezone, standard_offset_seconds);
+
+ // In contemporary usage, most time zones have an integer hour offset from
+ // UTC, although several are at a half-hour offset, and two are at 15-minute
+ // offsets. Throughout history, other variations existed. See
+ // http://www.timeanddate.com/time/time-zones-interesting.html.
+ EXPECT_EQ(0, standard_offset_seconds % (15 * 60))
+ << "standard_offset_seconds " << standard_offset_seconds;
+
+ if (dst_status == SystemSnapshot::kDoesNotObserveDaylightSavingTime) {
+ EXPECT_EQ(standard_offset_seconds, daylight_offset_seconds);
+ EXPECT_EQ(standard_name, daylight_name);
+ } else {
+ EXPECT_EQ(0, daylight_offset_seconds % (15 * 60))
+ << "daylight_offset_seconds " << daylight_offset_seconds;
+
+ // In contemporary usage, dst_delta_seconds will almost always be one hour,
+ // except for Lord Howe Island, Australia, which uses a 30-minute
+ // delta. Throughout history, other variations existed. See
+ // http://www.timeanddate.com/time/dst/#brief.
+ int dst_delta_seconds = daylight_offset_seconds - standard_offset_seconds;
+ if (dst_delta_seconds != 60 * 60 && dst_delta_seconds != 30 * 60) {
+ FAIL() << "dst_delta_seconds " << dst_delta_seconds;
+ }
+
+ EXPECT_NE(standard_name, daylight_name);
+ }
+}
+
} // namespace
« snapshot/system_snapshot_mac.cc ('K') | « snapshot/system_snapshot_mac.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698